morpheus-cli 5.5.2.1 → 5.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/Dockerfile +1 -1
- data/README.md +57 -4
- data/Rakefile +9 -0
- data/bin/morpheus +4 -4
- data/lib/morpheus/api/api_client.rb +8 -2
- data/lib/morpheus/api/archive_buckets_interface.rb +1 -1
- data/lib/morpheus/api/archive_files_interface.rb +3 -3
- data/lib/morpheus/api/clients_interface.rb +2 -2
- data/lib/morpheus/api/clusters_interface.rb +8 -1
- data/lib/morpheus/api/containers_interface.rb +29 -16
- data/lib/morpheus/api/custom_instance_types_interface.rb +0 -2
- data/lib/morpheus/api/doc_interface.rb +8 -6
- data/lib/morpheus/api/file_copy_request_interface.rb +1 -1
- data/lib/morpheus/api/health_interface.rb +1 -1
- data/lib/morpheus/api/image_builder_interface.rb +3 -3
- data/lib/morpheus/api/instances_interface.rb +25 -0
- data/lib/morpheus/api/logs_interface.rb +2 -4
- data/lib/morpheus/api/monitoring_interface.rb +6 -6
- data/lib/morpheus/api/packages_interface.rb +1 -1
- data/lib/morpheus/api/reports_interface.rb +1 -1
- data/lib/morpheus/api/servers_interface.rb +9 -1
- data/lib/morpheus/api/storage_providers_interface.rb +2 -2
- data/lib/morpheus/api/virtual_images_interface.rb +1 -1
- data/lib/morpheus/api.rb +2 -0
- data/lib/morpheus/benchmarking.rb +1 -1
- data/lib/morpheus/cli/cli_command.rb +69 -36
- data/lib/morpheus/cli/cli_registry.rb +19 -10
- data/lib/morpheus/cli/commands/access_token_command.rb +1 -1
- data/lib/morpheus/cli/commands/apps.rb +1 -1
- data/lib/morpheus/cli/commands/archives_command.rb +25 -33
- data/lib/morpheus/cli/commands/blueprints_command.rb +10 -21
- data/lib/morpheus/cli/commands/boot_scripts_command.rb +2 -2
- data/lib/morpheus/cli/commands/cat_command.rb +1 -1
- data/lib/morpheus/cli/commands/catalog_item_types_command.rb +12 -12
- data/lib/morpheus/cli/commands/clouds.rb +3 -3
- data/lib/morpheus/cli/commands/clusters.rb +154 -3
- data/lib/morpheus/cli/commands/containers_command.rb +398 -253
- data/lib/morpheus/cli/commands/deployments.rb +1 -1
- data/lib/morpheus/cli/commands/deploys.rb +9 -9
- data/lib/morpheus/cli/commands/doc.rb +15 -16
- data/lib/morpheus/cli/commands/execution_request_command.rb +2 -2
- data/lib/morpheus/cli/commands/file_copy_request_command.rb +5 -5
- data/lib/morpheus/cli/commands/groups.rb +2 -2
- data/lib/morpheus/cli/commands/health_command.rb +4 -4
- data/lib/morpheus/cli/commands/hosts.rb +43 -5
- data/lib/morpheus/cli/commands/image_builder_command.rb +1 -1
- data/lib/morpheus/cli/commands/instances.rb +419 -148
- data/lib/morpheus/cli/commands/integrations_command.rb +22 -20
- data/lib/morpheus/cli/commands/key_pairs.rb +2 -2
- data/lib/morpheus/cli/commands/library_container_scripts_command.rb +2 -2
- data/lib/morpheus/cli/commands/library_container_templates_command.rb +2 -2
- data/lib/morpheus/cli/commands/library_instance_types_command.rb +3 -3
- data/lib/morpheus/cli/commands/library_spec_templates_command.rb +2 -2
- data/lib/morpheus/cli/commands/login.rb +1 -1
- data/lib/morpheus/cli/commands/man_command.rb +32 -18
- data/lib/morpheus/cli/commands/packages_command.rb +11 -11
- data/lib/morpheus/cli/commands/plugins.rb +1 -1
- data/lib/morpheus/cli/commands/policies_command.rb +4 -4
- data/lib/morpheus/cli/commands/preseed_scripts_command.rb +2 -2
- data/lib/morpheus/cli/commands/remote.rb +1 -1
- data/lib/morpheus/cli/commands/reports_command.rb +3 -3
- data/lib/morpheus/cli/commands/roles.rb +6 -3
- data/lib/morpheus/cli/commands/security_groups.rb +1 -1
- data/lib/morpheus/cli/commands/shell.rb +40 -62
- data/lib/morpheus/cli/commands/snapshots.rb +3 -5
- data/lib/morpheus/cli/commands/source_command.rb +8 -16
- data/lib/morpheus/cli/commands/storage_providers_command.rb +7 -7
- data/lib/morpheus/cli/commands/tasks.rb +2 -2
- data/lib/morpheus/cli/commands/vdi_pools_command.rb +6 -6
- data/lib/morpheus/cli/commands/view.rb +5 -1
- data/lib/morpheus/cli/commands/whitelabel_settings_command.rb +4 -4
- data/lib/morpheus/cli/commands/whoami.rb +2 -2
- data/lib/morpheus/cli/credentials.rb +30 -8
- data/lib/morpheus/cli/dot_file.rb +8 -15
- data/lib/morpheus/cli/error_handler.rb +16 -0
- data/lib/morpheus/cli/errors.rb +8 -1
- data/lib/morpheus/cli/mixins/print_helper.rb +17 -13
- data/lib/morpheus/cli/mixins/rest_command.rb +18 -18
- data/lib/morpheus/cli/mixins/secondary_rest_command.rb +12 -12
- data/lib/morpheus/cli/option_parser.rb +5 -1
- data/lib/morpheus/cli/option_types.rb +59 -12
- data/lib/morpheus/cli/version.rb +1 -1
- data/lib/morpheus/cli.rb +26 -16
- data/lib/morpheus/ext/rest_client.rb +3 -2
- data/lib/morpheus/formatters.rb +1 -1
- data/lib/morpheus/logging.rb +4 -4
- data/lib/morpheus/morpkg.rb +4 -4
- data/lib/morpheus/rest_client.rb +2 -2
- data/lib/morpheus/routes.rb +2 -2
- data/lib/morpheus/terminal.rb +65 -16
- data/lib/morpheus.rb +1 -1
- data/morpheus-cli.gemspec +1 -0
- data/test/api/containers_interface_test.rb +68 -0
- data/test/api/doc_interface_test.rb +35 -0
- data/test/api/instances_interface_test.rb +22 -0
- data/test/api/whoami_interface_test.rb +14 -0
- data/test/cli/access_token_test.rb +36 -0
- data/test/cli/auth_test.rb +82 -0
- data/test/cli/cli_test.rb +48 -0
- data/test/cli/containers_test.rb +92 -0
- data/test/cli/doc_test.rb +35 -0
- data/test/cli/help_test.rb +25 -0
- data/test/cli/instances_test.rb +36 -0
- data/test/cli/man_test.rb +14 -0
- data/test/cli/remote_test.rb +89 -0
- data/test/cli/roles_test.rb +34 -0
- data/test/cli/shell_test.rb +81 -0
- data/test/cli/version_test.rb +23 -0
- data/test/cli/view_test.rb +55 -0
- data/test/cli/whoami_test.rb +17 -0
- data/test/morpheus_test.rb +16 -0
- data/test/test_case.rb +338 -0
- data/test/test_config.rb +137 -0
- data/test/test_data_helper.rb +97 -0
- metadata +61 -3
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'morpheus_test'
|
|
2
|
+
|
|
3
|
+
# Tests for Morpheus::Cli::Doc
|
|
4
|
+
class MorpheusTest::DocTest < MorpheusTest::TestCase
|
|
5
|
+
|
|
6
|
+
def test_doc_list
|
|
7
|
+
assert_execute("doc list")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_doc_get
|
|
11
|
+
# using --quiet because the output is massive
|
|
12
|
+
assert_execute("doc get --quiet")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_doc_get_yaml
|
|
16
|
+
# using --quiet because the output is massive
|
|
17
|
+
assert_execute("doc get --yaml --quiet")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# def test_doc_download
|
|
21
|
+
# assert_execute("doc download '/path/to/openapi.json')
|
|
22
|
+
# end
|
|
23
|
+
|
|
24
|
+
# def test_doc_download_yaml
|
|
25
|
+
# assert_execute("doc download '/path/to/openapi.yaml' --yaml")
|
|
26
|
+
# end
|
|
27
|
+
|
|
28
|
+
def test_doc_get_unauthorized
|
|
29
|
+
# authentication is NOT required for this api
|
|
30
|
+
without_authentication do
|
|
31
|
+
assert_success("doc get -q")
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'morpheus_test'
|
|
2
|
+
|
|
3
|
+
# Tests for help command and global --help option
|
|
4
|
+
class MorpheusTest::HelpTest < MorpheusTest::TestCase
|
|
5
|
+
|
|
6
|
+
def requires_authentication
|
|
7
|
+
false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_help
|
|
11
|
+
assert_execute %(help)
|
|
12
|
+
assert_execute %(-h)
|
|
13
|
+
assert_execute %(--help)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_subcommand_help
|
|
17
|
+
assert_execute %(remote --help)
|
|
18
|
+
assert_execute %(remote -h)
|
|
19
|
+
assert_execute %(remote use --help)
|
|
20
|
+
assert_execute %(instances list --help)
|
|
21
|
+
assert_execute %(whoami --help)
|
|
22
|
+
assert_execute %(whoami -h)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'morpheus_test'
|
|
2
|
+
|
|
3
|
+
# Tests for Morpheus::Cli::Instances
|
|
4
|
+
class MorpheusTest::InstancesTest < MorpheusTest::TestCase
|
|
5
|
+
|
|
6
|
+
def test_instances_list
|
|
7
|
+
assert_execute %(instances list)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_instances_get
|
|
11
|
+
instance = client.instances.list({})['instances'][0]
|
|
12
|
+
if instance
|
|
13
|
+
assert_execute %(instances get "#{instance['id']}")
|
|
14
|
+
assert_execute %(instances get "#{escape_arg instance['name']}")
|
|
15
|
+
else
|
|
16
|
+
puts "No instance found, unable to execute test `#{__method__}`"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# def test_instances_add
|
|
21
|
+
# warn "Skipped test test_instances_add() because it is not implemented"
|
|
22
|
+
# end
|
|
23
|
+
|
|
24
|
+
# def test_instances_update
|
|
25
|
+
# warn "Skipped test test_instances_update() because it is not implemented"
|
|
26
|
+
# end
|
|
27
|
+
|
|
28
|
+
# def test_instances_delete
|
|
29
|
+
# warn "Skipped test test_instances_remove() because it is not implemented"
|
|
30
|
+
# end
|
|
31
|
+
|
|
32
|
+
# todo: many more instance commands to add
|
|
33
|
+
|
|
34
|
+
protected
|
|
35
|
+
|
|
36
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'morpheus_test'
|
|
2
|
+
|
|
3
|
+
class MorpheusTest::ManTest < MorpheusTest::TestCase
|
|
4
|
+
|
|
5
|
+
def test_man
|
|
6
|
+
# need to use -q to avoid interactive right now...
|
|
7
|
+
assert_execute("man -q")
|
|
8
|
+
assert_execute("man -g -q")
|
|
9
|
+
assert_execute("man -q")
|
|
10
|
+
man_file_path = Morpheus::Cli::ManCommand.man_file_path
|
|
11
|
+
assert(File.exist?(man_file_path), "File #{man_file_path} should have been created.")
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require 'morpheus_test'
|
|
2
|
+
|
|
3
|
+
# Tests for Morpheus::Cli::Remote
|
|
4
|
+
class MorpheusTest::RemoteTest < MorpheusTest::TestCase
|
|
5
|
+
|
|
6
|
+
def requires_remote
|
|
7
|
+
false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def requires_authentication
|
|
11
|
+
false
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def setup
|
|
15
|
+
super()
|
|
16
|
+
@@test_remote_name ||= "test_remote_#{SecureRandom.hex(10)}"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def teardown
|
|
20
|
+
# switch back aftwards
|
|
21
|
+
assert_execute %(remote use "#{escape_arg @config.remote_name}")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_remote_add
|
|
25
|
+
assert_execute %(remote add "#{@@test_remote_name}" "#{escape_arg @config.url}" --insecure --use -N)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_remote_list
|
|
29
|
+
assert_execute %(remote list)
|
|
30
|
+
assert_execute %(remote list "#{@@test_remote_name}")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_remote_get
|
|
34
|
+
assert_execute %(remote get)
|
|
35
|
+
assert_execute %(remote get current)
|
|
36
|
+
assert_execute %(remote get "#{@@test_remote_name}")
|
|
37
|
+
assert_execute %(remote get "#{@@test_remote_name}" --offline)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_remote_current
|
|
41
|
+
assert_execute %(remote current)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_remote_version
|
|
45
|
+
assert_execute %(remote version)
|
|
46
|
+
#assert_execute %(remote version "#{@@test_remote_name}")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_remote_check
|
|
50
|
+
assert_execute %(remote check)
|
|
51
|
+
assert_execute %(remote check "#{@@test_remote_name}")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_remote_check_all
|
|
55
|
+
assert_execute %(remote check-all)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def test_remote_update
|
|
59
|
+
assert_execute %(remote update "#{@@test_remote_name}" --url "#{escape_arg @config.url}" --insecure)
|
|
60
|
+
#assert_execute %(remote update "#{@@test_remote_name}" --name "#{@@test_remote_name}_updated")
|
|
61
|
+
#assert_execute %(remote update "#{@@test_remote_name}_updated" --name "#{@@test_remote_name}")
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_remote_rename
|
|
65
|
+
assert_execute %(remote rename "#{@@test_remote_name}" "#{@@test_remote_name}_renamed" -y)
|
|
66
|
+
assert_execute %(remote rename "#{@@test_remote_name}_renamed" "#{@@test_remote_name}" -y)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_remote_use
|
|
70
|
+
assert_error %(remote use)
|
|
71
|
+
assert_error %(remote use unknown_remote)
|
|
72
|
+
assert_execute %(remote use "#{@@test_remote_name}")
|
|
73
|
+
assert_execute %(remote use "#{@@test_remote_name}")
|
|
74
|
+
assert_execute %(remote get current)
|
|
75
|
+
assert_execute %(remote unuse)
|
|
76
|
+
assert_error %(remote get current)
|
|
77
|
+
assert_execute %(remote use "#{@@test_remote_name}" -q)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def test_remote_remove
|
|
81
|
+
# test remove confirmation reploy of n or no
|
|
82
|
+
with_input(["n", "No"]) do
|
|
83
|
+
assert_error %(remote remove "#{@@test_remote_name}")
|
|
84
|
+
assert_error %(remote remove "#{@@test_remote_name}")
|
|
85
|
+
end
|
|
86
|
+
assert_execute %(remote remove "#{@@test_remote_name}" -y)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'morpheus_test'
|
|
2
|
+
|
|
3
|
+
class MorpheusTest::RolesTest < MorpheusTest::TestCase
|
|
4
|
+
|
|
5
|
+
def test_roles_list
|
|
6
|
+
assert_execute %(roles list)
|
|
7
|
+
assert_execute %(roles list "System Admin")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_roles_get
|
|
11
|
+
assert_execute %(roles get "System Admin")
|
|
12
|
+
assert_execute %(roles get "System Admin" --permissions)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_roles_list_permissions
|
|
16
|
+
assert_execute %(roles list-permissions "System Admin")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# todo: test all the other commands
|
|
20
|
+
|
|
21
|
+
# def test_roles_add
|
|
22
|
+
# assert_execute %(roles add "test_role_#{random_id}" -N)
|
|
23
|
+
# end
|
|
24
|
+
|
|
25
|
+
# def test_roles_update
|
|
26
|
+
# #skip "Test needs to be added"
|
|
27
|
+
# assert_execute %(roles update "test_role_#{random_id}" --description "neat")
|
|
28
|
+
# end
|
|
29
|
+
|
|
30
|
+
# def test_roles_remove
|
|
31
|
+
# assert_execute %(roles remove "test_role_#{random_id}" -y")
|
|
32
|
+
# end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require 'morpheus_test'
|
|
2
|
+
|
|
3
|
+
class MorpheusTest::ShellTest < MorpheusTest::TestCase
|
|
4
|
+
|
|
5
|
+
def requires_remote
|
|
6
|
+
false
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def requires_authentication
|
|
10
|
+
false
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# class << self
|
|
14
|
+
# def startup
|
|
15
|
+
# # one time use remote and login at beginning of testsuite, not each method
|
|
16
|
+
# use_remote()
|
|
17
|
+
# login()
|
|
18
|
+
# end
|
|
19
|
+
# end
|
|
20
|
+
|
|
21
|
+
# def test_remote_use
|
|
22
|
+
# # use remote needed for all except test_shell_clean() , todo: exclude paradigm that yet..
|
|
23
|
+
# use_remote()
|
|
24
|
+
# end
|
|
25
|
+
|
|
26
|
+
def test_shell
|
|
27
|
+
with_input "exit" do
|
|
28
|
+
assert_execute "shell"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_shell_verbose
|
|
33
|
+
login_if_needed()
|
|
34
|
+
with_input "whoami", "exit" do
|
|
35
|
+
assert_execute "shell -V"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_shell_history
|
|
40
|
+
with_input "history", "exit" do
|
|
41
|
+
assert_execute "shell"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_shell_sleep
|
|
46
|
+
with_input "echo \"It is time for a rest.\"", "sleep 0.5", "echo \"OK, let's keep testing\"", "exit" do
|
|
47
|
+
assert_execute "shell -V"
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_shell_temporary
|
|
52
|
+
with_input "remote list", "remote current", "echo this is a temporary shell with no history", "history", "exit" do
|
|
53
|
+
assert_execute "shell -Z -V"
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def test_shell_confirmation
|
|
58
|
+
with_input "access-token refresh", "I'm not sure...", "no", "exit" do
|
|
59
|
+
assert_execute "shell -Z -V"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# todo: fix bug where appliances are not restored after clean shell.. so remote use #{@config.remote_name}" starts failing here..
|
|
64
|
+
=begin
|
|
65
|
+
def test_shell_clean
|
|
66
|
+
with_input "echo this is a clean shell with no remotes or history", "remote list", "remote current", "history", "exit" do
|
|
67
|
+
assert_execute "shell -z"
|
|
68
|
+
end
|
|
69
|
+
with_input "echo this is another clean shell", "exit" do
|
|
70
|
+
assert_execute "shell --clean"
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_shell_history_again
|
|
75
|
+
with_input "echo back in test shell again with our remote and history", "remote get #{@config.remote_name}", "history", "exit" do
|
|
76
|
+
assert_execute "shell"
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
=end
|
|
80
|
+
|
|
81
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'morpheus_test'
|
|
2
|
+
|
|
3
|
+
# Tests for Morpheus::Cli::VersionCommand
|
|
4
|
+
class MorpheusTest::VersionTest < MorpheusTest::TestCase
|
|
5
|
+
|
|
6
|
+
def requires_authentication
|
|
7
|
+
false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_version
|
|
11
|
+
assert_execute %(version)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_version_short
|
|
15
|
+
assert_execute %(version -v)
|
|
16
|
+
assert_execute %(version --short)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# def test_version_help
|
|
20
|
+
# assert_execute %(version --help)
|
|
21
|
+
# end
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require 'morpheus_test'
|
|
2
|
+
|
|
3
|
+
# Tests for Morpheus::Cli::View class, corresponds to the `view` CLI command
|
|
4
|
+
class MorpheusTest::ViewTest < MorpheusTest::TestCase
|
|
5
|
+
|
|
6
|
+
def teardown
|
|
7
|
+
# todo: close browser after each test
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# these all pass but it's kind of obnoxious to open so many tabs
|
|
11
|
+
|
|
12
|
+
=begin
|
|
13
|
+
def test_view
|
|
14
|
+
assert_execute %(view)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_view_login
|
|
18
|
+
assert_execute %(view --login)
|
|
19
|
+
#puts "pausing a moment while logging in with browser"
|
|
20
|
+
#sleep(3)
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_view_login_short
|
|
25
|
+
assert_execute %(view -l)
|
|
26
|
+
#puts "pausing a moment while logging in with browser"
|
|
27
|
+
#sleep(3)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_view_clouds
|
|
31
|
+
assert_execute %(view clouds)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_view_cloud_by_id
|
|
35
|
+
cloud = client.clouds.list({})['zones'][0]
|
|
36
|
+
if cloud
|
|
37
|
+
assert_execute %(view cloud "#{escape_arg cloud['id']}")
|
|
38
|
+
else
|
|
39
|
+
puts "No cloud found, unable to execute test `#{__method__}`"
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_view_instance_by_name
|
|
44
|
+
assert_execute %(view -l)
|
|
45
|
+
instance = client.instances.list({})['instances'][0]
|
|
46
|
+
if instance
|
|
47
|
+
assert_execute %(view instance "#{escape_arg instance['name']}")
|
|
48
|
+
else
|
|
49
|
+
puts "No instance found, unable to execute test `#{__method__}`"
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
=end
|
|
53
|
+
protected
|
|
54
|
+
|
|
55
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'morpheus_test'
|
|
2
|
+
|
|
3
|
+
class MorpheusTest::WhoamiTest < MorpheusTest::TestCase
|
|
4
|
+
|
|
5
|
+
def test_whoami
|
|
6
|
+
assert_execute("whoami")
|
|
7
|
+
assert_execute("whoami --name")
|
|
8
|
+
assert_execute("whoami --permissions")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_whoami_unauthorized
|
|
12
|
+
without_authentication do
|
|
13
|
+
assert_error("whoami", "Expected error while unauthorized")
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'test_case'
|
|
3
|
+
require 'test_data_helper'
|
|
4
|
+
|
|
5
|
+
# setup at_start hook that runs once at the beginning of all tests
|
|
6
|
+
Test::Unit.at_start {
|
|
7
|
+
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
# setup at_exit hook that runs once at the end of all tests
|
|
11
|
+
Test::Unit.at_exit {
|
|
12
|
+
# always logout when all done
|
|
13
|
+
# logout_if_needed()
|
|
14
|
+
# terminal.execute("logout") if is_logged_in()
|
|
15
|
+
Morpheus::Terminal.instance.execute("logout")
|
|
16
|
+
}
|