summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/test_helper.rb54
-rw-r--r--test/unit/command_line_test.rb2
-rw-r--r--test/unit/config_object_list_test.rb2
-rw-r--r--test/unit/config_object_test.rb2
-rw-r--r--test/unit/quick_start_test.rb127
-rw-r--r--test/unit/test_helper.rb2
6 files changed, 170 insertions, 19 deletions
diff --git a/test/test_helper.rb b/test/test_helper.rb
index f7ec6d9..e0cd1e1 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -7,6 +7,7 @@ require 'gli'
require 'fileutils'
DEBUG = true
+TEST = true
module LeapCli::Commands
extend GLI::App
@@ -19,7 +20,7 @@ class Minitest::Test
def initialize(*args)
super(*args)
- LeapCli::Bootstrap::setup([], test_provider_path)
+ LeapCli::Bootstrap::setup([], provider_path)
LeapCli::Bootstrap::load_libraries(LeapCli::Commands)
end
@@ -43,33 +44,56 @@ class Minitest::Test
end
def leap_bin(*args)
- `cd #{test_provider_path} && #{ruby_path} #{base_path}/bin/leap --no-color #{args.join ' '}`
+ cmd = "cd #{provider_path} && #{base_path}/bin/leap --no-color #{args.join ' '}"
+ `#{cmd}`
end
- def test_provider_path
+ def leap_bin!(*args)
+ output = leap_bin(*args)
+ exit_code = $?
+ assert_equal 0, exit_code,
+ "The command `leap #{args.join(' ')}` should have exited 0 " +
+ "(was #{exit_code}).\n" +
+ "Output was: #{output}"
+ output
+ end
+
+ def provider_path
"#{base_path}/test/provider"
end
+ #
+ # for tests, we assume that the leap_platform code is
+ # in a sister directory to leap_cli.
+ #
+ def platform_path
+ "#{base_path}/../leap_platform"
+ end
+
def cleanup_files(*args)
- Dir.chdir(test_provider_path) do
+ Dir.chdir(provider_path) do
args.each do |file|
FileUtils.rm_r(file) if File.exist?(file)
end
end
end
+ #
+ # we no longer support ruby 1.8, but this might be useful in the future
+ #
def with_multiple_rubies(&block)
- if ENV["RUBY"]
- ENV["RUBY"].split(',').each do |ruby|
- self.ruby_path = `which #{ruby}`.strip
- next unless ruby_path.chars.any?
- yield
- end
- else
- self.ruby_path = `which ruby`.strip
- yield
- end
- self.ruby_path = ""
+ yield
+ # if ENV["RUBY"]
+ # ENV["RUBY"].split(',').each do |ruby|
+ # self.ruby_path = `which #{ruby}`.strip
+ # next unless ruby_path.chars.any?
+ # yield
+ # end
+ # else
+ # self.ruby_path = `which ruby`.strip
+ # yield
+ # end
+ # self.ruby_path = ""
end
end
diff --git a/test/unit/command_line_test.rb b/test/unit/command_line_test.rb
index bab8792..0f452ab 100644
--- a/test/unit/command_line_test.rb
+++ b/test/unit/command_line_test.rb
@@ -1,4 +1,4 @@
-require File.expand_path('../test_helper', __FILE__)
+require_relative 'test_helper'
class CommandLineTest < Minitest::Test
diff --git a/test/unit/config_object_list_test.rb b/test/unit/config_object_list_test.rb
index c4f37d8..042a742 100644
--- a/test/unit/config_object_list_test.rb
+++ b/test/unit/config_object_list_test.rb
@@ -1,4 +1,4 @@
-require File.expand_path('../test_helper', __FILE__)
+require_relative 'test_helper'
class ConfigObjectListTest < Minitest::Test
diff --git a/test/unit/config_object_test.rb b/test/unit/config_object_test.rb
index 54b45d1..88e11e6 100644
--- a/test/unit/config_object_test.rb
+++ b/test/unit/config_object_test.rb
@@ -1,4 +1,4 @@
-require File.expand_path('../test_helper', __FILE__)
+require_relative 'test_helper'
class ConfigObjectTest < Minitest::Test
diff --git a/test/unit/quick_start_test.rb b/test/unit/quick_start_test.rb
new file mode 100644
index 0000000..d26f9c8
--- /dev/null
+++ b/test/unit/quick_start_test.rb
@@ -0,0 +1,127 @@
+require_relative 'test_helper'
+
+#
+# Runs all the commands in https://leap.se/quick-start
+#
+
+Minitest.after_run {
+ FileUtils.rm_r(QuickStartTest::TMP_PROVIDER)
+}
+
+class QuickStartTest < Minitest::Test
+
+ # very reasonable to have ordered tests in this case, actually
+ i_suck_and_my_tests_are_order_dependent!
+
+ TMP_PROVIDER = Dir.mktmpdir("test_leap_provider_")
+
+ #
+ # use minimal bit sizes for our test.
+ #
+ PROVIDER_JSON = <<HERE
+{
+ "domain": "example.org",
+ "name": {
+ "en": "Example"
+ },
+ "description": {
+ "en": "Example"
+ },
+ "languages": ["en"],
+ "default_language": "en",
+ "enrollment_policy": "open",
+ "contacts": {
+ "default": "root@localhost"
+ },
+ "ca": {
+ "bit_size": 1024,
+ "client_certificates": {
+ "bit_size": 1024,
+ "digest": "SHA1",
+ "life_span": "100 years"
+ },
+ "life_span": "100 years",
+ "server_certificates": {
+ "bit_size": 1024,
+ "digest": "SHA1",
+ "life_span": "100 years"
+ }
+ }
+}
+HERE
+
+ def provider_path
+ TMP_PROVIDER
+ end
+
+ def test_01_new
+ output = leap_bin! "new --contacts me@example.org --domain example.org --name Example --platform='#{platform_path}' ."
+ assert_file "Leapfile"
+ assert_file "provider.json"
+ assert_dir "nodes"
+ File.write(File.join(provider_path, 'provider.json'), PROVIDER_JSON)
+ end
+
+ def test_02_ca
+ leap_bin! "cert ca"
+ assert_dir "files/ca"
+ assert_file "files/ca/ca.crt"
+ assert_file "files/ca/ca.key"
+ end
+
+ def test_03_csr
+ leap_bin! "cert csr"
+ assert_file "files/cert/example.org.csr"
+ assert_file "files/cert/example.org.crt"
+ assert_file "files/cert/example.org.key"
+ end
+
+ def test_04_nodes
+ leap_bin! "node add wildebeest ip_address:1.1.1.2 services:webapp,couchdb"
+ leap_bin! "node add hippo ip_address:1.1.1.3 services:static"
+ assert_file "nodes/wildebeest.json"
+ assert_dir "files/nodes/wildebeest"
+ assert_file "files/nodes/wildebeest/wildebeest.crt"
+ assert_file "files/nodes/wildebeest/wildebeest.key"
+ end
+
+ def test_05_compile
+ user_dir = File.join(provider_path, 'users', 'dummy')
+ user_key = File.join(user_dir, 'dummy_ssh.pub')
+ FileUtils.mkdir_p(user_dir)
+ File.write(user_key, 'ssh-rsa dummydummydummy')
+
+ leap_bin! "compile"
+ assert_file "hiera/wildebeest.yaml"
+ assert_file "hiera/hippo.yaml"
+ end
+
+ def test_06_rename
+ leap_bin! "node mv hippo hippopotamus"
+ assert_file "nodes/hippopotamus.json"
+ assert_dir "files/nodes/hippopotamus"
+ assert_file "files/nodes/hippopotamus/hippopotamus.key"
+ end
+
+ def test_07_rm
+ leap_bin! "node rm hippopotamus"
+ assert_file_missing "nodes/hippopotamus.json"
+ assert_file_missing "files/nodes/hippopotamus/hippopotamus.key"
+ end
+
+ def assert_file(path)
+ assert File.exist?(File.join(provider_path, path)), "The file `#{path}` should exist in #{provider_path}. Actual: \n#{provider_files}"
+ end
+
+ def assert_file_missing(path)
+ assert !File.exist?(File.join(provider_path, path)), "The file `#{path}` should NOT exist in #{provider_path}."
+ end
+
+ def assert_dir(path)
+ assert Dir.exist?(File.join(provider_path, path)), "The directory `#{path}` should exist in #{provider_path}. Actual: \n#{provider_files}"
+ end
+
+ def provider_files
+ `cd #{provider_path} && find .`
+ end
+end
diff --git a/test/unit/test_helper.rb b/test/unit/test_helper.rb
index 25a36de..057e4b7 100644
--- a/test/unit/test_helper.rb
+++ b/test/unit/test_helper.rb
@@ -1 +1 @@
-require File.expand_path('../../test_helper', __FILE__)
+require_relative '../test_helper'