aviator 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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