aviator 0.0.3 → 0.0.4

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 (148) hide show
  1. checksums.yaml +15 -0
  2. data/.travis.yml +1 -0
  3. data/README.md +35 -8
  4. data/README.md.orig +217 -0
  5. data/aviator.gemspec +3 -3
  6. data/lib/aviator/openstack/compute/v2/public/change_admin_password.rb +54 -0
  7. data/lib/aviator/openstack/compute/v2/public/create_image.rb +56 -0
  8. data/lib/aviator/openstack/compute/v2/public/create_server.rb +64 -0
  9. data/lib/aviator/openstack/compute/v2/public/delete_server.rb +39 -0
  10. data/lib/aviator/openstack/compute/v2/public/get_server.rb +39 -0
  11. data/lib/aviator/openstack/compute/v2/public/list_addresses.rb +48 -0
  12. data/lib/aviator/openstack/compute/v2/public/list_flavors.rb +55 -0
  13. data/lib/aviator/openstack/compute/v2/public/reboot_server.rb +51 -0
  14. data/lib/aviator/openstack/compute/v2/public/rebuild_server.rb +63 -0
  15. data/lib/aviator/openstack/compute/v2/public/root.rb +34 -0
  16. data/lib/aviator/openstack/compute/v2/public/update_server.rb +55 -0
  17. data/lib/aviator/version.rb +1 -1
  18. data/test/aviator/core/service_test.rb +3 -15
  19. data/test/aviator/core/session_test.rb +3 -3
  20. data/test/aviator/openstack/compute/v2/public/change_admin_password_test.rb +141 -0
  21. data/test/aviator/openstack/compute/v2/public/create_image_test.rb +146 -0
  22. data/test/aviator/openstack/compute/v2/public/create_server_test.rb +177 -0
  23. data/test/aviator/openstack/compute/v2/public/delete_server_test.rb +131 -0
  24. data/test/aviator/openstack/compute/v2/public/get_server_test.rb +138 -0
  25. data/test/aviator/openstack/compute/v2/public/list_addresses_test.rb +161 -0
  26. data/test/aviator/openstack/compute/v2/public/list_flavors_test.rb +160 -0
  27. data/test/aviator/openstack/compute/v2/public/list_images_test.rb +1 -1
  28. data/test/aviator/openstack/compute/v2/public/reboot_server_test.rb +137 -0
  29. data/test/aviator/openstack/compute/v2/public/rebuild_server_test.rb +183 -0
  30. data/test/aviator/openstack/compute/v2/public/root_test.rb +106 -0
  31. data/test/aviator/openstack/compute/v2/public/update_server_test.rb +144 -0
  32. data/test/aviator/openstack/identity/v2/admin/create_tenant_test.rb +1 -1
  33. data/test/cassettes/core/service/i_default_session_data_/sets_the_service_s_default_session_data.yml +18 -17
  34. data/test/cassettes/core/service/i_request/accepts_an_endpoint_type_option_for_selecting_a_specific_request.yml +31 -30
  35. data/test/cassettes/core/service/i_request/can_find_the_correct_request_based_on_bootstrapped_session_data.yml +18 -17
  36. data/test/cassettes/core/service/i_request/can_find_the_correct_request_based_on_non-bootstrapped_session_data.yml +29 -27
  37. data/test/cassettes/core/service/i_request/can_find_the_correct_request_if_api_version_is_not_defined_but_can_be_inferred_from_host_uri.yml +18 -17
  38. data/test/cassettes/core/service/i_request/uses_the_default_session_data_if_session_data_is_not_provided.yml +29 -27
  39. data/test/cassettes/core/session/c_load/creates_a_new_instance_from_the_given_session_dump.yml +18 -17
  40. data/test/cassettes/core/session/c_load/uses_the_loaded_auth_info_for_its_services.yml +18 -17
  41. data/test/cassettes/core/session/c_new/directs_log_entries_to_the_given_log_file.yml +18 -17
  42. data/test/cassettes/core/session/i_authenticate/authenticates_against_the_auth_service_indicated_in_the_config_file.yml +18 -17
  43. data/test/cassettes/core/session/i_authenticate/authenticates_against_the_auth_service_using_the_credentials_in_the_given_block.yml +10 -10
  44. data/test/cassettes/core/session/i_authenticate/raises_an_AuthenticationError_when_authentication_fails.yml +3 -3
  45. data/test/cassettes/core/session/i_authenticate/updates_the_session_data_of_its_service_objects.yml +36 -34
  46. data/test/cassettes/core/session/i_dump/serializes_the_session_data_for_caching.yml +18 -17
  47. data/test/cassettes/core/session/i_load/returns_itself.yml +18 -17
  48. data/test/cassettes/core/session/i_load/updates_the_session_data_of_its_service_objects.yml +36 -34
  49. data/test/cassettes/core/session/i_validate/returns_false_if_session_is_no_longer_valid.yml +20 -19
  50. data/test/cassettes/core/session/i_validate/returns_true_if_session_is_still_valid.yml +22 -21
  51. data/test/cassettes/core/session/i_xxx_service/returns_an_instance_of_the_indicated_service.yml +18 -17
  52. data/test/cassettes/openstack/compute/v2/public/change_admin_password/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +97 -0
  53. data/test/cassettes/openstack/compute/v2/public/change_admin_password/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
  54. data/test/cassettes/openstack/compute/v2/public/change_admin_password/returns_the_correct_value_for_body_.yml +63 -0
  55. data/test/cassettes/openstack/compute/v2/public/change_admin_password/returns_the_correct_value_for_headers_.yml +63 -0
  56. data/test/cassettes/openstack/compute/v2/public/change_admin_password/returns_the_correct_value_for_http_method_.yml +63 -0
  57. data/test/cassettes/openstack/compute/v2/public/change_admin_password/returns_the_correct_value_for_url_.yml +63 -0
  58. data/test/cassettes/openstack/compute/v2/public/create_image/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +97 -0
  59. data/test/cassettes/openstack/compute/v2/public/create_image/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
  60. data/test/cassettes/openstack/compute/v2/public/create_image/returns_the_correct_value_for_body_.yml +63 -0
  61. data/test/cassettes/openstack/compute/v2/public/create_image/returns_the_correct_value_for_headers_.yml +63 -0
  62. data/test/cassettes/openstack/compute/v2/public/create_image/returns_the_correct_value_for_http_method_.yml +63 -0
  63. data/test/cassettes/openstack/compute/v2/public/create_image/returns_the_correct_value_for_url_.yml +63 -0
  64. data/test/cassettes/openstack/compute/v2/public/create_server/leads_to_a_valid_response_when_parameters_are_provided.yml +182 -0
  65. data/test/cassettes/openstack/compute/v2/public/create_server/leads_to_a_valid_response_when_the_adminPass_parameter_is_provided.yml +182 -0
  66. data/test/cassettes/openstack/compute/v2/public/create_server/leads_to_a_valid_response_when_the_flavorRef_parameter_is_invalid.yml +135 -0
  67. data/test/cassettes/openstack/compute/v2/public/create_server/returns_the_correct_value_for_body_.yml +142 -0
  68. data/test/cassettes/openstack/compute/v2/public/create_server/returns_the_correct_value_for_headers_.yml +142 -0
  69. data/test/cassettes/openstack/compute/v2/public/create_server/returns_the_correct_value_for_http_method_.yml +142 -0
  70. data/test/cassettes/openstack/compute/v2/public/create_server/returns_the_correct_value_for_url_.yml +222 -0
  71. data/test/cassettes/openstack/compute/v2/public/delete_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +96 -0
  72. data/test/cassettes/openstack/compute/v2/public/delete_server/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +131 -0
  73. data/test/cassettes/openstack/compute/v2/public/delete_server/returns_the_correct_value_for_body_.yml +62 -0
  74. data/test/cassettes/openstack/compute/v2/public/delete_server/returns_the_correct_value_for_headers_.yml +62 -0
  75. data/test/cassettes/openstack/compute/v2/public/delete_server/returns_the_correct_value_for_http_method_.yml +62 -0
  76. data/test/cassettes/openstack/compute/v2/public/delete_server/returns_the_correct_value_for_url_.yml +62 -0
  77. data/test/cassettes/openstack/compute/v2/public/get_server/leads_to_a_valid_response_when_a_valid_server_id_is_provided.yml +145 -0
  78. data/test/cassettes/openstack/compute/v2/public/get_server/leads_to_a_valid_response_when_an_invalid_server_id_is_provided.yml +96 -0
  79. data/test/cassettes/openstack/compute/v2/public/get_server/returns_the_correct_value_for_body_.yml +62 -0
  80. data/test/cassettes/openstack/compute/v2/public/get_server/returns_the_correct_value_for_headers_.yml +62 -0
  81. data/test/cassettes/openstack/compute/v2/public/get_server/returns_the_correct_value_for_http_method_.yml +62 -0
  82. data/test/cassettes/openstack/compute/v2/public/get_server/returns_the_correct_value_for_url_.yml +62 -0
  83. data/test/cassettes/openstack/compute/v2/public/list_addresses/leads_to_a_valid_response_when_a_networkID_parameter_is_provided.yml +167 -0
  84. data/test/cassettes/openstack/compute/v2/public/list_addresses/leads_to_a_valid_response_when_a_valid_server_id_is_provided.yml +132 -0
  85. data/test/cassettes/openstack/compute/v2/public/list_addresses/leads_to_a_valid_response_when_an_invalid_server_id_is_provided.yml +96 -0
  86. data/test/cassettes/openstack/compute/v2/public/list_addresses/returns_the_correct_value_for_body_.yml +63 -0
  87. data/test/cassettes/openstack/compute/v2/public/list_addresses/returns_the_correct_value_for_headers_.yml +63 -0
  88. data/test/cassettes/openstack/compute/v2/public/list_addresses/returns_the_correct_value_for_http_method_.yml +63 -0
  89. data/test/cassettes/openstack/compute/v2/public/list_addresses/returns_the_correct_value_for_url_.yml +63 -0
  90. data/test/cassettes/openstack/compute/v2/public/list_flavors/leads_to_a_valid_response_when_no_parameters_are_provided.yml +104 -0
  91. data/test/cassettes/openstack/compute/v2/public/list_flavors/leads_to_a_valid_response_when_the_details_filter_is_provided.yml +111 -0
  92. data/test/cassettes/openstack/compute/v2/public/list_flavors/leads_to_a_valid_response_when_the_minDisk_filter_is_provided.yml +146 -0
  93. data/test/cassettes/openstack/compute/v2/public/list_flavors/returns_the_correct_value_for_body_.yml +62 -0
  94. data/test/cassettes/openstack/compute/v2/public/list_flavors/returns_the_correct_value_for_headers_.yml +62 -0
  95. data/test/cassettes/openstack/compute/v2/public/list_flavors/returns_the_correct_value_for_http_method_.yml +62 -0
  96. data/test/cassettes/openstack/compute/v2/public/list_flavors/returns_the_correct_value_for_url_.yml +62 -0
  97. data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_no_parameters_are_provided.yml +32 -31
  98. data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_parameters_are_invalid.yml +23 -22
  99. data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_parameters_are_valid.yml +32 -31
  100. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_body_.yml +18 -17
  101. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_headers_.yml +18 -17
  102. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_http_method_.yml +18 -17
  103. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_url_.yml +18 -17
  104. data/test/cassettes/openstack/compute/v2/public/list_servers/leads_to_a_valid_response_when_no_parameters_are_provided.yml +39 -38
  105. data/test/cassettes/openstack/compute/v2/public/list_servers/leads_to_a_valid_response_when_parameters_are_invalid.yml +37 -35
  106. data/test/cassettes/openstack/compute/v2/public/list_servers/leads_to_a_valid_response_when_parameters_are_valid.yml +42 -39
  107. data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_body_.yml +32 -30
  108. data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_headers_.yml +32 -30
  109. data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_http_method_.yml +32 -30
  110. data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_url_.yml +32 -30
  111. data/test/cassettes/openstack/compute/v2/public/reboot_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +97 -0
  112. data/test/cassettes/openstack/compute/v2/public/reboot_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +130 -0
  113. data/test/cassettes/openstack/compute/v2/public/reboot_server/returns_the_correct_value_for_body_.yml +63 -0
  114. data/test/cassettes/openstack/compute/v2/public/reboot_server/returns_the_correct_value_for_headers_.yml +63 -0
  115. data/test/cassettes/openstack/compute/v2/public/reboot_server/returns_the_correct_value_for_http_method_.yml +63 -0
  116. data/test/cassettes/openstack/compute/v2/public/reboot_server/returns_the_correct_value_for_url_.yml +63 -0
  117. data/test/cassettes/openstack/compute/v2/public/rebuild_server/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +133 -0
  118. data/test/cassettes/openstack/compute/v2/public/rebuild_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +167 -0
  119. data/test/cassettes/openstack/compute/v2/public/rebuild_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +216 -0
  120. data/test/cassettes/openstack/compute/v2/public/rebuild_server/returns_the_correct_value_for_body_.yml +63 -0
  121. data/test/cassettes/openstack/compute/v2/public/rebuild_server/returns_the_correct_value_for_headers_.yml +63 -0
  122. data/test/cassettes/openstack/compute/v2/public/rebuild_server/returns_the_correct_value_for_http_method_.yml +63 -0
  123. data/test/cassettes/openstack/compute/v2/public/rebuild_server/returns_the_correct_value_for_url_.yml +63 -0
  124. data/test/cassettes/openstack/compute/v2/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +101 -0
  125. data/test/cassettes/openstack/compute/v2/public/root/returns_the_correct_value_for_body_.yml +62 -0
  126. data/test/cassettes/openstack/compute/v2/public/root/returns_the_correct_value_for_headers_.yml +62 -0
  127. data/test/cassettes/openstack/compute/v2/public/root/returns_the_correct_value_for_http_method_.yml +62 -0
  128. data/test/cassettes/openstack/compute/v2/public/root/returns_the_correct_value_for_url_.yml +62 -0
  129. data/test/cassettes/openstack/compute/v2/public/update_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +96 -0
  130. data/test/cassettes/openstack/compute/v2/public/update_server/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +142 -0
  131. data/test/cassettes/openstack/compute/v2/public/update_server/returns_the_correct_value_for_body_.yml +142 -0
  132. data/test/cassettes/openstack/compute/v2/public/update_server/returns_the_correct_value_for_headers_.yml +142 -0
  133. data/test/cassettes/openstack/compute/v2/public/update_server/returns_the_correct_value_for_http_method_.yml +142 -0
  134. data/test/cassettes/openstack/compute/v2/public/update_server/returns_the_correct_value_for_url_.yml +142 -0
  135. data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_params_are_invalid.yml +21 -20
  136. data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_params_are_valid.yml +25 -24
  137. data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_parameters_are_invalid.yml +3 -3
  138. data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_parameters_are_valid.yml +10 -10
  139. data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_provided_with_a_token.yml +28 -27
  140. data/test/environment.yml.example +16 -9
  141. data/test/environment.yml.travis-ci +19 -14
  142. data/test/support/vcr_setup.rb +35 -10
  143. data/test/test_helper.rb +3 -1
  144. metadata +180 -52
  145. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_body.yml +0 -63
  146. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_headers.yml +0 -63
  147. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_url.yml +0 -63
  148. data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_provided_with_invalid_params.yml +0 -97
@@ -0,0 +1,160 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/v2/public/list_flavors' do
6
+
7
+ def create_request(session_data = get_session_data)
8
+ klass.new(session_data)
9
+ end
10
+
11
+
12
+ def session
13
+ unless @session
14
+ @session = Aviator::Session.new(
15
+ config_file: Environment.path,
16
+ environment: 'openstack_member'
17
+ )
18
+ @session.authenticate
19
+ end
20
+
21
+ @session
22
+ end
23
+
24
+
25
+ def get_session_data
26
+ session.send :auth_info
27
+ end
28
+
29
+
30
+ def helper
31
+ Aviator::Test::RequestHelper
32
+ end
33
+
34
+
35
+ def klass
36
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'public', 'list_flavors.rb')
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
+ headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
63
+
64
+ request = create_request(get_session_data)
65
+
66
+ request.headers.must_equal headers
67
+ end
68
+
69
+
70
+ validate_attr :http_method do
71
+ create_request.http_method.must_equal :get
72
+ end
73
+
74
+
75
+ validate_attr :optional_params do
76
+ klass.optional_params.must_equal [
77
+ :details,
78
+ :minDisk,
79
+ :minRam,
80
+ :marker,
81
+ :limit
82
+ ]
83
+ end
84
+
85
+
86
+ validate_attr :required_params do
87
+ klass.required_params.must_equal []
88
+ end
89
+
90
+
91
+ validate_attr :url do
92
+ service_spec = get_session_data[:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
93
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/flavors"
94
+
95
+ params = [
96
+ [ :details, true ],
97
+ [ :minDisk, 2 ],
98
+ [ :minRam, 'cirros-0.3.1-x86_64-uec-ramdisk' ],
99
+ [ :marker, '123456' ],
100
+ [ :limit, 10 ]
101
+ ]
102
+
103
+ url += "/detail" if params.find{|pair| pair[0] == :details && pair[1] == true }
104
+
105
+ filters = []
106
+
107
+ params.select{|pair| pair[0]!=:details }.each{ |pair| filters << "#{ pair[0] }=#{ pair[1] }" }
108
+
109
+ url += "?#{ filters.join('&') }" unless filters.empty?
110
+
111
+ request = klass.new(get_session_data) do |p|
112
+ params.each { |pair| p[pair[0]] = pair[1] }
113
+ end
114
+
115
+ request.url.must_equal url
116
+ end
117
+
118
+
119
+ validate_response 'no parameters are provided' do
120
+ response = session.compute_service.request :list_flavors
121
+
122
+ response.status.must_equal 200
123
+ response.body.wont_be_nil
124
+ response.headers.wont_be_nil
125
+ end
126
+
127
+
128
+ validate_response 'the details filter is provided' do
129
+ response = session.compute_service.request :list_flavors do |params|
130
+ params[:details] = true
131
+ end
132
+
133
+ response.status.must_equal 200
134
+ response.body.wont_be_nil
135
+ response.body[:flavors].length.wont_equal 0
136
+ response.headers.wont_be_nil
137
+ end
138
+
139
+
140
+ validate_response 'the minDisk filter is provided' do
141
+ response = session.compute_service.request :list_flavors do |params|
142
+ params[:details] = true
143
+ end
144
+
145
+ max_disk_size = response.body[:flavors].max{|a,b| a[:disk] <=> b[:disk] }[:disk]
146
+ total_entries = response.body[:flavors].count{|flv| flv[:disk] == max_disk_size }
147
+
148
+ response = session.compute_service.request :list_flavors do |params|
149
+ params[:minDisk] = max_disk_size
150
+ end
151
+
152
+ response.status.must_equal 200
153
+ response.body.wont_be_nil
154
+ response.body[:flavors].length.must_equal total_entries
155
+ response.headers.wont_be_nil
156
+ end
157
+
158
+ end
159
+
160
+ end
@@ -163,7 +163,7 @@ class Aviator::Test
163
163
 
164
164
  response = service.request :list_images do |params|
165
165
  params[:details] = true
166
- params[:name] = "cirros-0.3.1-x86_64-uec-ramdisk"
166
+ params[:name] = "cirros-0.3.1-x86_64-uec"
167
167
  end
168
168
 
169
169
  response.status.must_equal 200
@@ -0,0 +1,137 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/v2/public/reboot_server' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ block ||= lambda do |params|
9
+ params[:id] = 0
10
+ end
11
+
12
+ klass.new(session_data, &block)
13
+ end
14
+
15
+
16
+ def get_session_data
17
+ session.send :auth_info
18
+ end
19
+
20
+
21
+ def helper
22
+ Aviator::Test::RequestHelper
23
+ end
24
+
25
+
26
+ def klass
27
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'public', 'reboot_server.rb')
28
+ end
29
+
30
+
31
+ def session
32
+ unless @session
33
+ @session = Aviator::Session.new(
34
+ config_file: Environment.path,
35
+ environment: 'openstack_member'
36
+ )
37
+ @session.authenticate
38
+ end
39
+
40
+ @session
41
+ end
42
+
43
+
44
+ validate_attr :anonymous? do
45
+ klass.anonymous?.must_equal false
46
+ end
47
+
48
+
49
+ validate_attr :api_version do
50
+ klass.api_version.must_equal :v2
51
+ end
52
+
53
+
54
+ validate_attr :body do
55
+ request = create_request
56
+
57
+ klass.body?.must_equal true
58
+ request.body?.must_equal true
59
+ request.body.wont_be_nil
60
+ end
61
+
62
+
63
+ validate_attr :endpoint_type do
64
+ klass.endpoint_type.must_equal :public
65
+ end
66
+
67
+
68
+ validate_attr :headers do
69
+ headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
70
+
71
+ request = create_request
72
+
73
+ request.headers.must_equal headers
74
+ end
75
+
76
+
77
+ validate_attr :http_method do
78
+ create_request.http_method.must_equal :post
79
+ end
80
+
81
+
82
+ validate_attr :optional_params do
83
+ klass.optional_params.must_equal [
84
+ :type
85
+ ]
86
+ end
87
+
88
+
89
+ validate_attr :required_params do
90
+ klass.required_params.must_equal [
91
+ :id
92
+ ]
93
+ end
94
+
95
+
96
+ validate_attr :url do
97
+ service_spec = get_session_data[:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
98
+ server_id = '105b09f0b6500d36168480ad84'
99
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ server_id }/action"
100
+
101
+ request = create_request do |params|
102
+ params[:id] = server_id
103
+ end
104
+
105
+ request.url.must_equal url
106
+ end
107
+
108
+
109
+ validate_response 'valid params are provided' do
110
+ server = session.compute_service.request(:list_servers).body[:servers].first
111
+ server_id = server[:id]
112
+
113
+ response = session.compute_service.request :reboot_server do |params|
114
+ params[:id] = server_id
115
+ end
116
+
117
+ response.status.must_equal 202
118
+ response.headers.wont_be_nil
119
+ end
120
+
121
+
122
+ validate_response 'invalid server id is provided' do
123
+ server_id = 'abogusserveridthatdoesnotexist'
124
+
125
+ response = session.compute_service.request :reboot_server do |params|
126
+ params[:id] = server_id
127
+ end
128
+
129
+ response.status.must_equal 404
130
+ response.body.wont_be_nil
131
+ response.headers.wont_be_nil
132
+ end
133
+
134
+
135
+ end
136
+
137
+ end
@@ -0,0 +1,183 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/v2/public/rebuild_server' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ block ||= lambda do |params|
9
+ params[:adminPass] = 'newadminpassword'
10
+ params[:id] = 0
11
+ params[:imageRef] = 'bogusimageref'
12
+ params[:name] = 'newservername'
13
+ end
14
+
15
+ klass.new(session_data, &block)
16
+ end
17
+
18
+
19
+ def get_session_data
20
+ session.send :auth_info
21
+ end
22
+
23
+
24
+ def helper
25
+ Aviator::Test::RequestHelper
26
+ end
27
+
28
+
29
+ def klass
30
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'public', 'rebuild_server.rb')
31
+ end
32
+
33
+
34
+ def session
35
+ unless @session
36
+ @session = Aviator::Session.new(
37
+ config_file: Environment.path,
38
+ environment: 'openstack_member'
39
+ )
40
+ @session.authenticate
41
+ end
42
+
43
+ @session
44
+ end
45
+
46
+
47
+ validate_attr :anonymous? do
48
+ klass.anonymous?.must_equal false
49
+ end
50
+
51
+
52
+ validate_attr :api_version do
53
+ klass.api_version.must_equal :v2
54
+ end
55
+
56
+
57
+ validate_attr :body do
58
+ request = create_request
59
+
60
+ klass.body?.must_equal true
61
+ request.body?.must_equal true
62
+ request.body.wont_be_nil
63
+ end
64
+
65
+
66
+ validate_attr :endpoint_type do
67
+ klass.endpoint_type.must_equal :public
68
+ end
69
+
70
+
71
+ validate_attr :headers do
72
+ headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
73
+
74
+ request = create_request
75
+
76
+ request.headers.must_equal headers
77
+ end
78
+
79
+
80
+ validate_attr :http_method do
81
+ create_request.http_method.must_equal :post
82
+ end
83
+
84
+
85
+ validate_attr :optional_params do
86
+ klass.optional_params.must_equal [
87
+ :accessIPv4,
88
+ :accessIPv6,
89
+ :metadata,
90
+ :personality
91
+ ]
92
+ end
93
+
94
+
95
+ validate_attr :required_params do
96
+ klass.required_params.must_equal [
97
+ :adminPass,
98
+ :id,
99
+ :imageRef,
100
+ :name
101
+ ]
102
+ end
103
+
104
+
105
+ validate_attr :url do
106
+ service_spec = get_session_data[:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
107
+ server_id = '105b09f0b6500d36168480ad84'
108
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ server_id }/action"
109
+
110
+ request = create_request do |params|
111
+ params[:adminPass] = 'thisdoesnotmatterforthistest'
112
+ params[:id] = server_id
113
+ params[:imageRef] = 'thisdoesnotmatterforthistest'
114
+ params[:name] = 'thisdoesnotmatterforthistest'
115
+ end
116
+
117
+ request.url.must_equal url
118
+ end
119
+
120
+
121
+ validate_response 'valid params are provided' do
122
+ server = session.compute_service.request(:list_servers).body[:servers].first
123
+ server_id = server[:id]
124
+ image = session.compute_service.request(:list_images).body[:images].first
125
+ image_id = image[:id]
126
+
127
+
128
+ response = session.compute_service.request :rebuild_server do |params|
129
+ params[:adminPass] = 'settheadminpasswordtothis'
130
+ params[:id] = server_id
131
+ params[:imageRef] = image_id
132
+ params[:name] = 'setthenewnametothis'
133
+ end
134
+
135
+
136
+ response.status.must_equal 202
137
+ response.headers.wont_be_nil
138
+ end
139
+
140
+
141
+ validate_response 'invalid server id is provided' do
142
+ server_id = 'abogusserveridthatdoesnotexist'
143
+ image = session.compute_service.request(:list_images).body[:images].first
144
+ image_id = image[:id]
145
+
146
+
147
+ response = session.compute_service.request :rebuild_server do |params|
148
+ params[:adminPass] = 'settheadminpasswordtothis'
149
+ params[:id] = server_id
150
+ params[:imageRef] = image_id
151
+ params[:name] = 'setthenewnametothis'
152
+ end
153
+
154
+
155
+ response.status.must_equal 404
156
+ response.body.wont_be_nil
157
+ response.headers.wont_be_nil
158
+ end
159
+
160
+
161
+ validate_response 'invalid image id is provided' do
162
+ server = session.compute_service.request(:list_servers).body[:servers].first
163
+ server_id = server[:id]
164
+ image_id = 'abogusimageidthatdoesnotexist'
165
+
166
+
167
+ response = session.compute_service.request :rebuild_server do |params|
168
+ params[:adminPass] = 'settheadminpasswordtothis'
169
+ params[:id] = server_id
170
+ params[:imageRef] = image_id
171
+ params[:name] = 'setthenewnametothis'
172
+ end
173
+
174
+
175
+ response.status.must_equal 400
176
+ response.body.wont_be_nil
177
+ response.headers.wont_be_nil
178
+ end
179
+
180
+
181
+ end
182
+
183
+ end
@@ -0,0 +1,106 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/v2/public/root' 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_info
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', 'root.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 false
54
+ request.body?.must_equal false
55
+ end
56
+
57
+
58
+ validate_attr :endpoint_type do
59
+ klass.endpoint_type.must_equal :public
60
+ end
61
+
62
+
63
+ validate_attr :headers do
64
+ headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
65
+
66
+ request = create_request
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 :optional_params do
78
+ klass.optional_params.must_equal []
79
+ end
80
+
81
+
82
+ validate_attr :required_params do
83
+ klass.required_params.must_equal []
84
+ end
85
+
86
+
87
+ validate_attr :url do
88
+ service_spec = get_session_data[:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
89
+ uri = URI(service_spec[:endpoints][0][:publicURL])
90
+ url = "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v2/"
91
+
92
+ create_request.url.must_equal url
93
+ end
94
+
95
+
96
+
97
+ validate_response 'no parameters are provided' do
98
+ response = session.compute_service.request :root
99
+
100
+ response.status.must_equal 200
101
+ response.body.wont_be_nil
102
+ end
103
+
104
+ end
105
+
106
+ end