aviator 0.0.8 → 0.0.9

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/aviator.gemspec +4 -2
  4. data/bin/aviator +4 -2
  5. data/lib/aviator/core/cli/describer.rb +26 -11
  6. data/lib/aviator/core/service.rb +12 -4
  7. data/lib/aviator/core/session.rb +1 -2
  8. data/lib/aviator/openstack/common/requests/v0/public/base.rb +6 -0
  9. data/lib/aviator/openstack/compute/requests/v2/admin/list_hypervisors.rb +27 -0
  10. data/lib/aviator/openstack/compute/requests/v2/public/add_floating_ip.rb +38 -0
  11. data/lib/aviator/openstack/compute/requests/v2/public/allocate_floating_ip.rb +35 -0
  12. data/lib/aviator/openstack/compute/requests/v2/public/create_keypair.rb +39 -0
  13. data/lib/aviator/openstack/compute/requests/v2/public/create_server.rb +2 -1
  14. data/lib/aviator/openstack/compute/requests/v2/public/list_floating_ips.rb +26 -0
  15. data/lib/aviator/openstack/compute/requests/v2/public/list_keypairs.rb +26 -0
  16. data/lib/aviator/openstack/identity/requests/v2/admin/get_user.rb +33 -0
  17. data/lib/aviator/version.rb +1 -1
  18. data/test/aviator/core/session_test.rb +6 -7
  19. data/test/aviator/openstack/common/requests/v0/public/base_test.rb +13 -0
  20. data/test/aviator/openstack/compute/requests/v2/admin/list_hypervisors_test.rb +112 -0
  21. data/test/aviator/openstack/compute/requests/v2/public/add_floating_ip_test.rb +115 -0
  22. data/test/aviator/openstack/compute/requests/v2/public/allocate_floating_ip_test.rb +107 -0
  23. data/test/aviator/openstack/compute/requests/v2/public/create_keypair_test.rb +135 -0
  24. data/test/aviator/openstack/compute/requests/v2/public/create_server_test.rb +2 -1
  25. data/test/aviator/openstack/compute/requests/v2/public/list_floating_ips_test.rb +101 -0
  26. data/test/aviator/openstack/compute/requests/v2/public/list_keypairs_test.rb +101 -0
  27. data/test/aviator/openstack/identity/requests/v2/admin/get_user_test.rb +116 -0
  28. data/test/cassettes/openstack/compute/requests/v2/admin/list_hypervisors/leads_to_a_valid_response_when_no_parameters_are_provided.yml +103 -0
  29. data/test/cassettes/openstack/compute/requests/v2/admin/list_hypervisors/returns_the_correct_value_for_body_.yml +70 -0
  30. data/test/cassettes/openstack/compute/requests/v2/admin/list_hypervisors/returns_the_correct_value_for_headers_.yml +70 -0
  31. data/test/cassettes/openstack/compute/requests/v2/admin/list_hypervisors/returns_the_correct_value_for_http_method_.yml +70 -0
  32. data/test/cassettes/openstack/compute/requests/v2/admin/list_hypervisors/returns_the_correct_value_for_url_.yml +70 -0
  33. data/test/cassettes/openstack/compute/requests/v2/public/add_floating_ip/leads_to_a_valid_response_when_valid_params_are_provided.yml +104 -0
  34. data/test/cassettes/openstack/compute/requests/v2/public/add_floating_ip/returns_the_correct_value_for_body_.yml +71 -0
  35. data/test/cassettes/openstack/compute/requests/v2/public/add_floating_ip/returns_the_correct_value_for_headers_.yml +71 -0
  36. data/test/cassettes/openstack/compute/requests/v2/public/add_floating_ip/returns_the_correct_value_for_http_method_.yml +71 -0
  37. data/test/cassettes/openstack/compute/requests/v2/public/add_floating_ip/returns_the_correct_value_for_url_.yml +71 -0
  38. data/test/cassettes/openstack/compute/requests/v2/public/allocate_floating_ip/leads_to_a_valid_response_when_valid_params_are_provided.yml +112 -0
  39. data/test/cassettes/openstack/compute/requests/v2/public/allocate_floating_ip/returns_the_correct_value_for_body_.yml +78 -0
  40. data/test/cassettes/openstack/compute/requests/v2/public/allocate_floating_ip/returns_the_correct_value_for_headers_.yml +78 -0
  41. data/test/cassettes/openstack/compute/requests/v2/public/allocate_floating_ip/returns_the_correct_value_for_http_method_.yml +78 -0
  42. data/test/cassettes/openstack/compute/requests/v2/public/allocate_floating_ip/returns_the_correct_value_for_url_.yml +78 -0
  43. data/test/cassettes/openstack/compute/requests/v2/public/create_keypair/leads_to_a_valid_response_when_an_invalid_public_key_is_provided.yml +105 -0
  44. data/test/cassettes/openstack/compute/requests/v2/public/create_keypair/leads_to_a_valid_response_when_valid_parameters_are_provided.yml +107 -0
  45. data/test/cassettes/openstack/compute/requests/v2/public/create_keypair/returns_the_correct_value_for_body_.yml +71 -0
  46. data/test/cassettes/openstack/compute/requests/v2/public/create_keypair/returns_the_correct_value_for_headers_.yml +71 -0
  47. data/test/cassettes/openstack/compute/requests/v2/public/create_keypair/returns_the_correct_value_for_http_method_.yml +71 -0
  48. data/test/cassettes/openstack/compute/requests/v2/public/create_keypair/returns_the_correct_value_for_url_.yml +71 -0
  49. data/test/cassettes/openstack/compute/requests/v2/public/list_floating_ips/leads_to_a_valid_response_when_no_parameters_are_provided.yml +105 -0
  50. data/test/cassettes/openstack/compute/requests/v2/public/list_floating_ips/returns_the_correct_value_for_body_.yml +71 -0
  51. data/test/cassettes/openstack/compute/requests/v2/public/list_floating_ips/returns_the_correct_value_for_headers_.yml +71 -0
  52. data/test/cassettes/openstack/compute/requests/v2/public/list_floating_ips/returns_the_correct_value_for_http_method_.yml +71 -0
  53. data/test/cassettes/openstack/compute/requests/v2/public/list_floating_ips/returns_the_correct_value_for_url_.yml +71 -0
  54. data/test/cassettes/openstack/compute/requests/v2/public/list_keypairs/leads_to_a_valid_response_when_no_parameters_are_provided.yml +105 -0
  55. data/test/cassettes/openstack/compute/requests/v2/public/list_keypairs/returns_the_correct_value_for_body_.yml +71 -0
  56. data/test/cassettes/openstack/compute/requests/v2/public/list_keypairs/returns_the_correct_value_for_headers_.yml +71 -0
  57. data/test/cassettes/openstack/compute/requests/v2/public/list_keypairs/returns_the_correct_value_for_http_method_.yml +71 -0
  58. data/test/cassettes/openstack/compute/requests/v2/public/list_keypairs/returns_the_correct_value_for_url_.yml +71 -0
  59. data/test/cassettes/openstack/identity/requests/v2/admin/get_user/leads_to_a_valid_response_when_name_is_provided.yml +105 -0
  60. data/test/cassettes/openstack/identity/requests/v2/admin/get_user/returns_the_correct_value_for_body_.yml +70 -0
  61. data/test/cassettes/openstack/identity/requests/v2/admin/get_user/returns_the_correct_value_for_headers_.yml +70 -0
  62. data/test/cassettes/openstack/identity/requests/v2/admin/get_user/returns_the_correct_value_for_http_method_.yml +70 -0
  63. data/test/cassettes/openstack/identity/requests/v2/admin/get_user/returns_the_correct_value_for_url_.yml +70 -0
  64. data/test/support/vcr_setup.rb +12 -1
  65. metadata +99 -6
@@ -0,0 +1,115 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/requests/v2/public/add_floating_ip' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ block ||= lambda do |params|
9
+ params[:server_id] = 0
10
+ params[:address] = "1.1.1.1"
11
+ end
12
+
13
+ klass.new(session_data, &block)
14
+ end
15
+
16
+
17
+ def get_session_data
18
+ session.send :auth_response
19
+ end
20
+
21
+
22
+ def helper
23
+ Aviator::Test::RequestHelper
24
+ end
25
+
26
+
27
+ def klass
28
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'public', 'add_floating_ip.rb')
29
+ end
30
+
31
+
32
+ def session
33
+ unless @session
34
+ @session = Aviator::Session.new(
35
+ :config_file => Environment.path,
36
+ :environment => 'openstack_member'
37
+ )
38
+ @session.authenticate
39
+ end
40
+
41
+ @session
42
+ end
43
+
44
+
45
+ validate_attr :anonymous? do
46
+ klass.anonymous?.must_equal false
47
+ end
48
+
49
+
50
+ validate_attr :api_version do
51
+ klass.api_version.must_equal :v2
52
+ end
53
+
54
+
55
+ validate_attr :body do
56
+ request = create_request
57
+
58
+ klass.body?.must_equal true
59
+ request.body?.must_equal true
60
+ request.body.wont_be_nil
61
+ end
62
+
63
+
64
+ validate_attr :endpoint_type do
65
+ klass.endpoint_type.must_equal :public
66
+ end
67
+
68
+
69
+ validate_attr :headers do
70
+ headers = { 'X-Auth-Token' => get_session_data[:body][:access][:token][:id] }
71
+
72
+ request = create_request
73
+
74
+ request.headers.must_equal headers
75
+ end
76
+
77
+
78
+ validate_attr :http_method do
79
+ create_request.http_method.must_equal :post
80
+ end
81
+
82
+
83
+ validate_attr :optional_params do
84
+ klass.optional_params.must_equal []
85
+ end
86
+
87
+
88
+ validate_attr :required_params do
89
+ klass.required_params.must_equal [:server_id, :address]
90
+ end
91
+
92
+
93
+ validate_attr :url do
94
+ service_spec = get_session_data[:body][:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
95
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/servers/0/action"
96
+
97
+ request = create_request
98
+
99
+ request.url.must_equal url
100
+ end
101
+
102
+
103
+ validate_response 'valid params are provided' do
104
+ response = session.compute_service.request :add_floating_ip, :api_version => :v2 do |params|
105
+ params[:server_id] = "d30ae033-e714-41bc-8130-1b89352f50ee"
106
+ params[:address] = "192.168.42.129"
107
+ end
108
+
109
+ response.status.must_equal 202
110
+ response.headers.wont_be_nil
111
+ end
112
+
113
+ end
114
+
115
+ end
@@ -0,0 +1,107 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/requests/v2/public/allocate_floating_ip' do
6
+
7
+ def create_request(session_data = get_session_data)
8
+ klass.new(session_data)
9
+ end
10
+
11
+
12
+ def get_session_data
13
+ session.send :auth_response
14
+ end
15
+
16
+
17
+ def helper
18
+ Aviator::Test::RequestHelper
19
+ end
20
+
21
+
22
+ def klass
23
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'public', 'allocate_floating_ip.rb')
24
+ end
25
+
26
+
27
+ def session
28
+ unless @session
29
+ @session = Aviator::Session.new(
30
+ :config_file => Environment.path,
31
+ :environment => 'openstack_member'
32
+ )
33
+ @session.authenticate
34
+ end
35
+
36
+ @session
37
+ end
38
+
39
+
40
+ validate_attr :anonymous? do
41
+ klass.anonymous?.must_equal false
42
+ end
43
+
44
+
45
+ validate_attr :api_version do
46
+ klass.api_version.must_equal :v2
47
+ end
48
+
49
+
50
+ validate_attr :body do
51
+ request = create_request
52
+
53
+ klass.body?.must_equal true
54
+ request.body?.must_equal true
55
+ request.body.wont_be_nil
56
+ end
57
+
58
+
59
+ validate_attr :endpoint_type do
60
+ klass.endpoint_type.must_equal :public
61
+ end
62
+
63
+
64
+ validate_attr :headers do
65
+ headers = { 'X-Auth-Token' => get_session_data[:body][:access][:token][:id] }
66
+
67
+ request = create_request
68
+
69
+ request.headers.must_equal headers
70
+ end
71
+
72
+
73
+ validate_attr :http_method do
74
+ create_request.http_method.must_equal :post
75
+ end
76
+
77
+
78
+ validate_attr :optional_params do
79
+ klass.optional_params.must_equal [:pool]
80
+ end
81
+
82
+
83
+ validate_attr :required_params do
84
+ klass.required_params.must_equal []
85
+ end
86
+
87
+
88
+ validate_attr :url do
89
+ service_spec = get_session_data[:body][:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
90
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/os-floating-ips"
91
+
92
+ request = create_request
93
+
94
+ request.url.must_equal url
95
+ end
96
+
97
+
98
+ validate_response 'valid params are provided' do
99
+ response = session.compute_service.request :allocate_floating_ip, :api_version => :v2
100
+
101
+ response.status.must_equal 200
102
+ response.headers.wont_be_nil
103
+ end
104
+
105
+ end
106
+
107
+ end
@@ -0,0 +1,135 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/requests/v2/public/create_keypair' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ block ||= lambda do |params|
9
+ params[:name] = 0
10
+ params[:public_key] = 'thisdoesnotmatter'
11
+ end
12
+
13
+ klass.new(session_data, &block)
14
+ end
15
+
16
+
17
+ def get_session_data
18
+ session.send :auth_response
19
+ end
20
+
21
+
22
+ def helper
23
+ Aviator::Test::RequestHelper
24
+ end
25
+
26
+
27
+ def klass
28
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'public', 'create_keypair.rb')
29
+ end
30
+
31
+
32
+ def session
33
+ unless @session
34
+ @session = Aviator::Session.new(
35
+ :config_file => Environment.path,
36
+ :environment => 'openstack_member'
37
+ )
38
+ @session.authenticate
39
+ end
40
+
41
+ @session
42
+ end
43
+
44
+
45
+ validate_attr :anonymous? do
46
+ klass.anonymous?.must_equal false
47
+ end
48
+
49
+
50
+ validate_attr :api_version do
51
+ klass.api_version.must_equal :v2
52
+ end
53
+
54
+
55
+ validate_attr :body do
56
+ request = create_request
57
+
58
+ klass.body?.must_equal true
59
+ request.body?.must_equal true
60
+ request.body.wont_be_nil
61
+ end
62
+
63
+
64
+ validate_attr :endpoint_type do
65
+ klass.endpoint_type.must_equal :public
66
+ end
67
+
68
+
69
+ validate_attr :headers do
70
+ headers = { 'X-Auth-Token' => get_session_data[:body][:access][:token][:id] }
71
+
72
+ request = create_request
73
+
74
+ request.headers.must_equal headers
75
+ end
76
+
77
+
78
+ validate_attr :http_method do
79
+ create_request.http_method.must_equal :post
80
+ end
81
+
82
+
83
+ validate_attr :optional_params do
84
+ klass.optional_params.must_equal [
85
+ :public_key
86
+ ]
87
+ end
88
+
89
+
90
+ validate_attr :required_params do
91
+ klass.required_params.must_equal [
92
+ :name
93
+ ]
94
+ end
95
+
96
+
97
+ validate_attr :url do
98
+ service_spec = get_session_data[:body][:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
99
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/os-keypairs"
100
+
101
+ request = create_request do |params|
102
+ params[:name] = 'somename'
103
+ end
104
+
105
+ request.url.must_equal url
106
+ end
107
+
108
+
109
+ validate_response 'valid parameters are provided' do
110
+ response = session.compute_service.request :create_keypair, :api_version => :v2 do |params|
111
+ params[:name] = 'new-keypair'
112
+ params[:public_key] = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSEPMGA4D7oF4ObBb3vbufLmK2oKyJQu0Ol4fyGAS+X342prm7dvVF5lCxVrtXzADDkFZJF0TE+3mjgywzciH2dy9+z7E/YNdQpr4tXFWSrjAy+zi+Lw7s2QuScdg55/uSLiiuuTAI2Gfm4K+QxEiNRStdUqXS3p6v6PDfLwEOJwaOL639yR5Ivk+Nf3BG79OPcmCIkTw7yzQn54UHAZ7RoH/yrXQEUd4uOCA2Kwa3imP7TeIcvKl/h0EjgLK6Q/lI5diziCPVVheh1NMd0prcfu7HXz4W9dxlJaX8YDQwXT5YH+F0JE/D0pq3M/tQSw1dftz+E4FVjUqFWnnaxD/p bogus.rsa@key.com"
113
+ end
114
+
115
+ response.status.must_equal 200
116
+ response.headers.wont_be_nil
117
+ response.body['keypair'].wont_be_nil
118
+ end
119
+
120
+
121
+ validate_response 'an invalid public key is provided' do
122
+ response = session.compute_service.request :create_keypair, :api_version => :v2 do |params|
123
+ params[:name] = 'invalid-public-key'
124
+ params[:public_key] = "invalid"
125
+ end
126
+
127
+ response.status.must_equal 400
128
+ response.headers.wont_be_nil
129
+ response.body['keypair'].must_be_nil
130
+ end
131
+
132
+
133
+ end
134
+
135
+ end
@@ -87,6 +87,7 @@ class Aviator::Test
87
87
  :accessIPv4,
88
88
  :accessIPv6,
89
89
  :adminPass,
90
+ :key_name,
90
91
  :metadata,
91
92
  :networks,
92
93
  :personality
@@ -187,4 +188,4 @@ class Aviator::Test
187
188
 
188
189
  end
189
190
 
190
- end
191
+ end
@@ -0,0 +1,101 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/requests/v2/public/list_floating_ips' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ klass.new(session_data, &block)
9
+ end
10
+
11
+
12
+ def get_session_data
13
+ session.send :auth_response
14
+ end
15
+
16
+
17
+ def helper
18
+ Aviator::Test::RequestHelper
19
+ end
20
+
21
+
22
+ def klass
23
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'public', 'list_floating_ips.rb')
24
+ end
25
+
26
+
27
+ def session
28
+ unless @session
29
+ @session = Aviator::Session.new(
30
+ :config_file => Environment.path,
31
+ :environment => 'openstack_member'
32
+ )
33
+ @session.authenticate
34
+ end
35
+
36
+ @session
37
+ end
38
+
39
+
40
+ validate_attr :anonymous? do
41
+ klass.anonymous?.must_equal false
42
+ end
43
+
44
+
45
+ validate_attr :api_version do
46
+ klass.api_version.must_equal :v2
47
+ end
48
+
49
+
50
+ validate_attr :body do
51
+ klass.body?.must_equal false
52
+ create_request.body?.must_equal false
53
+ end
54
+
55
+
56
+ validate_attr :endpoint_type do
57
+ klass.endpoint_type.must_equal :public
58
+ end
59
+
60
+
61
+ validate_attr :headers do
62
+ session_data = get_session_data
63
+
64
+ headers = { 'X-Auth-Token' => session_data[:body][:access][:token][:id] }
65
+
66
+ request = create_request(session_data)
67
+
68
+ request.headers.must_equal headers
69
+ end
70
+
71
+
72
+ validate_attr :http_method do
73
+ create_request.http_method.must_equal :get
74
+ end
75
+
76
+
77
+ validate_attr :url do
78
+ session_data = get_session_data
79
+ service_spec = session_data[:body][:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
80
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/os-floating-ips"
81
+ request = klass.new(session_data)
82
+
83
+ request.url.must_equal url
84
+ end
85
+
86
+
87
+ validate_response 'no parameters are provided' do
88
+ service = session.compute_service
89
+
90
+ response = service.request :list_floating_ips, :api_version => :v2
91
+
92
+ response.status.must_equal 200
93
+ response.body.wont_be_nil
94
+ response.body[:floating_ips].wont_be_nil
95
+ response.body[:floating_ips].must_be_kind_of Array
96
+ response.headers.wont_be_nil
97
+ end
98
+
99
+ end
100
+
101
+ end
@@ -0,0 +1,101 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/requests/v2/public/list_keypairs' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ klass.new(session_data, &block)
9
+ end
10
+
11
+
12
+ def get_session_data
13
+ session.send :auth_response
14
+ end
15
+
16
+
17
+ def helper
18
+ Aviator::Test::RequestHelper
19
+ end
20
+
21
+
22
+ def klass
23
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'public', 'list_keypairs.rb')
24
+ end
25
+
26
+
27
+ def session
28
+ unless @session
29
+ @session = Aviator::Session.new(
30
+ :config_file => Environment.path,
31
+ :environment => 'openstack_member'
32
+ )
33
+ @session.authenticate
34
+ end
35
+
36
+ @session
37
+ end
38
+
39
+
40
+ validate_attr :anonymous? do
41
+ klass.anonymous?.must_equal false
42
+ end
43
+
44
+
45
+ validate_attr :api_version do
46
+ klass.api_version.must_equal :v2
47
+ end
48
+
49
+
50
+ validate_attr :body do
51
+ klass.body?.must_equal false
52
+ create_request.body?.must_equal false
53
+ end
54
+
55
+
56
+ validate_attr :endpoint_type do
57
+ klass.endpoint_type.must_equal :public
58
+ end
59
+
60
+
61
+ validate_attr :headers do
62
+ session_data = get_session_data
63
+
64
+ headers = { 'X-Auth-Token' => session_data[:body][:access][:token][:id] }
65
+
66
+ request = create_request(session_data)
67
+
68
+ request.headers.must_equal headers
69
+ end
70
+
71
+
72
+ validate_attr :http_method do
73
+ create_request.http_method.must_equal :get
74
+ end
75
+
76
+
77
+ validate_attr :url do
78
+ session_data = get_session_data
79
+ service_spec = session_data[:body][:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
80
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/os-keypairs"
81
+ request = klass.new(session_data)
82
+
83
+ request.url.must_equal url
84
+ end
85
+
86
+
87
+ validate_response 'no parameters are provided' do
88
+ service = session.compute_service
89
+
90
+ response = service.request :list_keypairs, :api_version => :v2
91
+
92
+ response.status.must_equal 200
93
+ response.body.wont_be_nil
94
+ response.body[:keypairs].wont_be_nil
95
+ response.body[:keypairs].must_be_kind_of Array
96
+ response.headers.wont_be_nil
97
+ end
98
+
99
+ end
100
+
101
+ end
@@ -0,0 +1,116 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/identity/requests/v2/admin/get_user' do
6
+
7
+ def get_name
8
+ Environment.openstack_member[:auth_credentials][:username]
9
+ end
10
+
11
+ def create_request(session_data = get_session_data, &block)
12
+ block ||= lambda { |p| p[:name] = get_name }
13
+ klass.new(session_data, &block)
14
+ end
15
+
16
+
17
+ def get_session_data
18
+ session.send :auth_response
19
+ end
20
+
21
+
22
+ def helper
23
+ Aviator::Test::RequestHelper
24
+ end
25
+
26
+
27
+ def klass
28
+ @klass ||= helper.load_request('openstack', 'identity', 'v2', 'admin', 'get_user.rb')
29
+ end
30
+
31
+
32
+ def session
33
+ unless @session
34
+ @session = Aviator::Session.new(
35
+ :config_file => Environment.path,
36
+ :environment => 'openstack_admin'
37
+ )
38
+ @session.authenticate
39
+ end
40
+
41
+ @session
42
+ end
43
+
44
+
45
+ validate_attr :anonymous? do
46
+ klass.anonymous?.must_equal false
47
+ end
48
+
49
+
50
+ validate_attr :api_version do
51
+ klass.api_version.must_equal :v2
52
+ end
53
+
54
+
55
+ validate_attr :body do
56
+ klass.body?.must_equal false
57
+ create_request.body?.must_equal false
58
+ end
59
+
60
+
61
+ validate_attr :endpoint_type do
62
+ klass.endpoint_type.must_equal :admin
63
+ end
64
+
65
+
66
+ validate_attr :headers do
67
+ session_data = get_session_data
68
+
69
+ headers = { 'X-Auth-Token' => session_data[:body][:access][:token][:id] }
70
+
71
+ request = create_request(session_data)
72
+
73
+ request.headers.must_equal headers
74
+ end
75
+
76
+
77
+ validate_attr :http_method do
78
+ create_request.http_method.must_equal :get
79
+ end
80
+
81
+
82
+ validate_attr :required_params do
83
+ klass.required_params.must_equal [:name]
84
+ end
85
+
86
+
87
+ validate_attr :url do
88
+ service_spec = get_session_data[:body][:access][:serviceCatalog].find{|s| s[:type] == 'identity' }
89
+ url = "#{ service_spec[:endpoints][0][:adminURL] }/users?name=#{get_name}"
90
+
91
+ request = create_request do |params|
92
+ params[:name] = get_name
93
+ end
94
+
95
+ request.url.must_equal url
96
+ end
97
+
98
+
99
+ validate_response 'name is provided' do
100
+ service = session.identity_service
101
+
102
+ response = service.request :get_user do |params|
103
+ params[:name] = get_name
104
+ end
105
+
106
+ response.status.must_equal 200
107
+ response.body.wont_be_nil
108
+ response.body[:user].wont_be_nil
109
+ response.body[:user][:name].must_equal get_name
110
+ response.headers.wont_be_nil
111
+ end
112
+
113
+
114
+ end
115
+
116
+ end