openshift-origin-controller 1.3.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of openshift-origin-controller might be problematic. Click here for more details.

Files changed (180) hide show
  1. data/COPYRIGHT +1 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +12 -0
  4. data/README.md +3 -0
  5. data/Rakefile +9 -0
  6. data/app/controllers/app_events_controller.rb +115 -0
  7. data/app/controllers/application_templates_controller.rb +19 -0
  8. data/app/controllers/applications_controller.rb +214 -0
  9. data/app/controllers/base_controller.rb +367 -0
  10. data/app/controllers/cartridges_controller.rb +48 -0
  11. data/app/controllers/descriptors_controller.rb +23 -0
  12. data/app/controllers/dns_resolvable_controller.rb +35 -0
  13. data/app/controllers/domains_controller.rb +156 -0
  14. data/app/controllers/emb_cart_controller.rb +276 -0
  15. data/app/controllers/emb_cart_events_controller.rb +52 -0
  16. data/app/controllers/environment_controller.rb +11 -0
  17. data/app/controllers/estimates_controller.rb +71 -0
  18. data/app/controllers/gear_groups_controller.rb +53 -0
  19. data/app/controllers/gears_controller.rb +70 -0
  20. data/app/controllers/keys_controller.rb +96 -0
  21. data/app/controllers/legacy_broker_controller.rb +510 -0
  22. data/app/controllers/quickstarts_controller.rb +29 -0
  23. data/app/controllers/user_controller.rb +38 -0
  24. data/app/helpers/cartridge_helper.rb +25 -0
  25. data/app/helpers/legacy_broker_helper.rb +21 -0
  26. data/app/helpers/user_action_logger.rb +38 -0
  27. data/app/models/application.rb +1718 -0
  28. data/app/models/application_template.rb +27 -0
  29. data/app/models/cartridge_cache.rb +51 -0
  30. data/app/models/cloud_user.rb +334 -0
  31. data/app/models/component_instance.rb +228 -0
  32. data/app/models/connection_endpoint.rb +10 -0
  33. data/app/models/district.rb +210 -0
  34. data/app/models/domain.rb +234 -0
  35. data/app/models/gear.rb +376 -0
  36. data/app/models/group_instance.rb +306 -0
  37. data/app/models/key.rb +20 -0
  38. data/app/models/legacy_reply.rb +15 -0
  39. data/app/models/legacy_request.rb +126 -0
  40. data/app/models/link.rb +11 -0
  41. data/app/models/message.rb +10 -0
  42. data/app/models/name_server_cache.rb +46 -0
  43. data/app/models/optional_param.rb +12 -0
  44. data/app/models/param.rb +13 -0
  45. data/app/models/remote_job.rb +57 -0
  46. data/app/models/rest_application.rb +126 -0
  47. data/app/models/rest_application10.rb +106 -0
  48. data/app/models/rest_application12.rb +124 -0
  49. data/app/models/rest_application_estimate.rb +12 -0
  50. data/app/models/rest_application_template.rb +20 -0
  51. data/app/models/rest_cartridge10.rb +41 -0
  52. data/app/models/rest_cartridge11.rb +151 -0
  53. data/app/models/rest_domain.rb +43 -0
  54. data/app/models/rest_domain10.rb +42 -0
  55. data/app/models/rest_estimates.rb +16 -0
  56. data/app/models/rest_gear.rb +14 -0
  57. data/app/models/rest_gear_group.rb +26 -0
  58. data/app/models/rest_key.rb +24 -0
  59. data/app/models/rest_reply.rb +31 -0
  60. data/app/models/rest_user.rb +43 -0
  61. data/app/models/result_io.rb +67 -0
  62. data/app/models/usage_record.rb +37 -0
  63. data/app/models/validators/app_validator.rb +30 -0
  64. data/app/models/validators/key_validator.rb +30 -0
  65. data/app/models/validators/namespace_validator.rb +18 -0
  66. data/config/routes.rb +36 -0
  67. data/lib/controller_engine.rb +7 -0
  68. data/lib/openshift-origin-controller.rb +14 -0
  69. data/lib/openshift/application_container_proxy.rb +241 -0
  70. data/lib/openshift/auth_service.rb +101 -0
  71. data/lib/openshift/data_store.rb +33 -0
  72. data/lib/openshift/dns_service.rb +41 -0
  73. data/lib/openshift/mongo_data_store.rb +671 -0
  74. data/openshift-origin-controller.gemspec +42 -0
  75. data/rubygem-openshift-origin-controller.spec +274 -0
  76. data/test/cucumber/application-estimate.feature +25 -0
  77. data/test/cucumber/cartridge-10gen-mms-agent.feature +28 -0
  78. data/test/cucumber/cartridge-cron.feature +32 -0
  79. data/test/cucumber/cartridge-haproxy.feature +31 -0
  80. data/test/cucumber/cartridge-jenkins-build.feature +12 -0
  81. data/test/cucumber/cartridge-jenkins-client.feature +10 -0
  82. data/test/cucumber/cartridge-lifecycle-diy.feature +21 -0
  83. data/test/cucumber/cartridge-lifecycle-jbossas.feature +61 -0
  84. data/test/cucumber/cartridge-lifecycle-jbosseap.feature +61 -0
  85. data/test/cucumber/cartridge-lifecycle-jbossews10.feature +61 -0
  86. data/test/cucumber/cartridge-lifecycle-jenkins.feature +41 -0
  87. data/test/cucumber/cartridge-lifecycle-nodejs.feature +59 -0
  88. data/test/cucumber/cartridge-lifecycle-perl.feature +40 -0
  89. data/test/cucumber/cartridge-lifecycle-php.feature +106 -0
  90. data/test/cucumber/cartridge-lifecycle-python.feature +40 -0
  91. data/test/cucumber/cartridge-lifecycle-ruby18.feature +49 -0
  92. data/test/cucumber/cartridge-lifecycle-ruby19.feature +41 -0
  93. data/test/cucumber/cartridge-mongodb.feature +31 -0
  94. data/test/cucumber/cartridge-mysql.feature +30 -0
  95. data/test/cucumber/cartridge-php.feature +14 -0
  96. data/test/cucumber/cartridge-phpmyadmin.feature +32 -0
  97. data/test/cucumber/cartridge-postgresql.feature +32 -0
  98. data/test/cucumber/cartridge-runtime-extended-db.feature +64 -0
  99. data/test/cucumber/cartridge-runtime-extended-jboss.feature +24 -0
  100. data/test/cucumber/cartridge-runtime-extended-nodejs.feature +21 -0
  101. data/test/cucumber/cartridge-runtime-extended-perl.feature +18 -0
  102. data/test/cucumber/cartridge-runtime-extended-php.feature +19 -0
  103. data/test/cucumber/cartridge-runtime-extended-python.feature +18 -0
  104. data/test/cucumber/cartridge-runtime-extended-ruby.feature +22 -0
  105. data/test/cucumber/cartridge-runtime-standard-diy.feature +6 -0
  106. data/test/cucumber/cartridge-runtime-standard-jbossas.feature +7 -0
  107. data/test/cucumber/cartridge-runtime-standard-jbosseap.feature +7 -0
  108. data/test/cucumber/cartridge-runtime-standard-jbossews10.feature +7 -0
  109. data/test/cucumber/cartridge-runtime-standard-jenkins.feature +8 -0
  110. data/test/cucumber/cartridge-runtime-standard-nodejs.feature +7 -0
  111. data/test/cucumber/cartridge-runtime-standard-perl.feature +6 -0
  112. data/test/cucumber/cartridge-runtime-standard-php.feature +6 -0
  113. data/test/cucumber/cartridge-runtime-standard-python.feature +6 -0
  114. data/test/cucumber/cartridge-runtime-standard-ruby.feature +19 -0
  115. data/test/cucumber/cartridge-switchyard.feature +36 -0
  116. data/test/cucumber/descriptor.feature +40 -0
  117. data/test/cucumber/embedded.feature +44 -0
  118. data/test/cucumber/idler.feature +75 -0
  119. data/test/cucumber/misc/descriptor/manifest.yml +22 -0
  120. data/test/cucumber/misc/php/db_test.php +21 -0
  121. data/test/cucumber/openshift-node.feature +21 -0
  122. data/test/cucumber/rest-application-templates.feature +31 -0
  123. data/test/cucumber/rest-applications.feature +431 -0
  124. data/test/cucumber/rest-cartridge-types.feature +16 -0
  125. data/test/cucumber/rest-domains.feature +276 -0
  126. data/test/cucumber/rest-gears.feature +38 -0
  127. data/test/cucumber/rest-keys.feature +247 -0
  128. data/test/cucumber/rest-quickstarts.feature +27 -0
  129. data/test/cucumber/rest-workflow.feature +64 -0
  130. data/test/cucumber/step_definitions/api_steps.rb +369 -0
  131. data/test/cucumber/step_definitions/application-estimate-steps.rb +51 -0
  132. data/test/cucumber/step_definitions/application_steps.rb +215 -0
  133. data/test/cucumber/step_definitions/cartridge-10gen-mms-agent_steps.rb +11 -0
  134. data/test/cucumber/step_definitions/cartridge-cron_steps.rb +51 -0
  135. data/test/cucumber/step_definitions/cartridge-haproxy_steps.rb +30 -0
  136. data/test/cucumber/step_definitions/cartridge-jenkins_steps.rb +93 -0
  137. data/test/cucumber/step_definitions/cartridge-lifecycle-nodejs_steps.rb +30 -0
  138. data/test/cucumber/step_definitions/cartridge-mongodb_steps.rb +60 -0
  139. data/test/cucumber/step_definitions/cartridge-mysql_steps.rb +56 -0
  140. data/test/cucumber/step_definitions/cartridge-php_steps.rb +72 -0
  141. data/test/cucumber/step_definitions/cartridge-postgresql_steps.rb +59 -0
  142. data/test/cucumber/step_definitions/cartridge-switchyard_steps.rb +29 -0
  143. data/test/cucumber/step_definitions/client_steps.rb +12 -0
  144. data/test/cucumber/step_definitions/descriptor_step.rb +32 -0
  145. data/test/cucumber/step_definitions/idler_steps.rb +37 -0
  146. data/test/cucumber/step_definitions/node_steps.rb +203 -0
  147. data/test/cucumber/step_definitions/runtime_steps.rb +547 -0
  148. data/test/cucumber/step_definitions/runtime_url_steps.rb +46 -0
  149. data/test/cucumber/step_definitions/trap-user-extended_steps.rb +14 -0
  150. data/test/cucumber/step_definitions/trap-user_steps.rb +58 -0
  151. data/test/cucumber/support/00_setup_helper.rb +106 -0
  152. data/test/cucumber/support/app_helper.rb +243 -0
  153. data/test/cucumber/support/assertions.rb +52 -0
  154. data/test/cucumber/support/command_helper.rb +453 -0
  155. data/test/cucumber/support/dns_helper.rb +54 -0
  156. data/test/cucumber/support/env.rb +5 -0
  157. data/test/cucumber/support/process_helper.rb +44 -0
  158. data/test/cucumber/support/runtime_support.rb +440 -0
  159. data/test/cucumber/support/unused.rb +27 -0
  160. data/test/cucumber/support/user_helper.rb +37 -0
  161. data/test/cucumber/trap-user-extended.feature +53 -0
  162. data/test/cucumber/trap-user.feature +34 -0
  163. data/test/ddns/1.168.192-rev.db.init +13 -0
  164. data/test/ddns/HOWTO.txt +207 -0
  165. data/test/ddns/Kexample.com.+157+06142.key +1 -0
  166. data/test/ddns/Kexample.com.+157+06142.private +7 -0
  167. data/test/ddns/authconfig.rb +14 -0
  168. data/test/ddns/example.com.db.init +23 -0
  169. data/test/ddns/example.com.key +4 -0
  170. data/test/ddns/named.ca +52 -0
  171. data/test/ddns/named.conf +48 -0
  172. data/test/ddns/named.empty +10 -0
  173. data/test/ddns/named.localhost +10 -0
  174. data/test/ddns/named.loopback +11 -0
  175. data/test/ddns/named.rfc1912.zones +42 -0
  176. data/test/ddns/named.root.key +5 -0
  177. data/test/ddns/named_service.rb +127 -0
  178. data/test/unit/bind_dns_service_test.rb +167 -0
  179. data/test/unit/broker_auth_test.rb +28 -0
  180. metadata +545 -0
@@ -0,0 +1,16 @@
1
+ @broker_api
2
+ @broker_api1
3
+ Feature: cartridge types
4
+ As an API client
5
+ In order to do things with application templates
6
+ I want to List and Show cartridge types without authenticating
7
+
8
+ Scenario Outline: List cartridge types
9
+ Given I accept "<format>"
10
+ When I send an unauthenticated GET request to "/cartridges"
11
+ Then the response should be "200"
12
+ And the response should be a list of "cartridges"
13
+
14
+ Scenarios:
15
+ |format|
16
+ |JSON|
@@ -0,0 +1,276 @@
1
+ @broker_api
2
+ @broker_api3
3
+ Feature: domains
4
+ As an API client
5
+ In order to do things with domains
6
+ I want to List, Create, Retrieve, Update and Delete domains
7
+
8
+ Scenario Outline: List domains
9
+ Given a new user
10
+ And I accept "<format>"
11
+ When I send a POST request to "/domains" with the following:"id=api<random>"
12
+ Then the response should be "201"
13
+ When I send a GET request to "/domains"
14
+ Then the response should be "200"
15
+
16
+ Scenarios:
17
+ | format |
18
+ | JSON |
19
+ | XML |
20
+
21
+ Scenario Outline: Create domain
22
+ Given a new user
23
+ And I accept "<format>"
24
+ When I send a POST request to "/domains" with the following:"id=api<random>"
25
+ Then the response should be "201"
26
+ And the response should be a "domain" with attributes "id=api<random>"
27
+
28
+ Scenarios:
29
+ | format |
30
+ | JSON |
31
+ | XML |
32
+
33
+ Scenario Outline: Create domain with blank, missing, too long and invalid id
34
+ Given a new user
35
+ And I accept "<format>"
36
+ When I send a POST request to "/domains" with the following:"id="
37
+ Then the response should be "422"
38
+ And the error message should have "field=id&severity=error&exit_code=106"
39
+ When I send a POST request to "/domains" with the following:""
40
+ Then the response should be "422"
41
+ And the error message should have "field=id&severity=error&exit_code=106"
42
+ When I send a POST request to "/domains" with the following:"id=cucum?ber"
43
+ Then the response should be "422"
44
+ And the error message should have "field=id&severity=error&exit_code=106"
45
+ When I send a POST request to "/domains" with the following:"id=namethatistoolongtobeavaliddomain"
46
+ Then the response should be "422"
47
+ And the error message should have "field=id&severity=error&exit_code=106"
48
+
49
+ Scenarios:
50
+ | format |
51
+ | JSON |
52
+ | XML |
53
+
54
+ Scenario Outline: Retrieve domain
55
+ Given a new user
56
+ And I accept "<format>"
57
+ When I send a POST request to "/domains" with the following:"id=api<random>"
58
+ Then the response should be "201"
59
+ When I send a GET request to "/domains/api<random>"
60
+ Then the response should be "200"
61
+ And the response should be a "domain" with attributes "id=api<random>"
62
+
63
+ Scenarios:
64
+ | format |
65
+ | JSON |
66
+ | XML |
67
+
68
+ Scenario Outline: Retrieve non-existent domain
69
+ Given a new user
70
+ And I accept "<format>"
71
+ When I send a GET request to "/domains/api<random>"
72
+ Then the response should be "404"
73
+ And the error message should have "severity=error&exit_code=127"
74
+
75
+ Scenarios:
76
+ | format |
77
+ | JSON |
78
+ | XML |
79
+
80
+ Scenario Outline: Update domain
81
+ Given a new user
82
+ And I accept "<format>"
83
+ When I send a POST request to "/domains" with the following:"id=api<random>"
84
+ Then the response should be "201"
85
+ When I send a PUT request to "/domains/api<random>" with the following:"id=apiX<random>"
86
+ Then the response should be "200"
87
+ And the response should be a "domain" with attributes "id=apiX<random>"
88
+
89
+ Scenarios:
90
+ | format |
91
+ | JSON |
92
+ | XML |
93
+
94
+ Scenario Outline: Update domain with blank, missing, too long and invalid id
95
+ Given a new user
96
+ And I accept "<format>"
97
+ When I send a POST request to "/domains" with the following:"id=api<random>"
98
+ Then the response should be "201"
99
+ When I send a PUT request to "/domains/api<random>" with the following:"id="
100
+ Then the response should be "422"
101
+ And the error message should have "field=id&severity=error&exit_code=106"
102
+ When I send a PUT request to "/domains/api<random>" with the following:""
103
+ Then the response should be "422"
104
+ And the error message should have "field=id&severity=error&exit_code=106"
105
+ When I send a PUT request to "/domains/api<random>" with the following:"id=api?"
106
+ Then the response should be "422"
107
+ And the error message should have "field=id&severity=error&exit_code=106"
108
+ When I send a PUT request to "/domains/api<random>" with the following:"id=namethatistoolongtobeavaliddomain"
109
+ Then the response should be "422"
110
+ And the error message should have "field=id&severity=error&exit_code=106"
111
+ When I send a GET request to "/domains/api<random>"
112
+ Then the response should be "200"
113
+ And the response should be a "domain" with attributes "id=api<random>"
114
+
115
+ Scenarios:
116
+ | format |
117
+ | JSON |
118
+ | XML |
119
+
120
+ Scenario Outline: Update non-existent domain
121
+ Given a new user
122
+ And I accept "<format>"
123
+ When I send a POST request to "/domains" with the following:"id=api<random>"
124
+ Then the response should be "201"
125
+ When I send a PUT request to "/domains/apiX<random>" with the following:"id=apiY<random>"
126
+ Then the response should be "404"
127
+ And the error message should have "severity=error&exit_code=127"
128
+
129
+ Scenarios:
130
+ | format |
131
+ | JSON |
132
+ | XML |
133
+
134
+ Scenario Outline: Update domain with applications
135
+ Given a new user
136
+ And I accept "<format>"
137
+ When I send a POST request to "/domains" with the following:"id=api<random>"
138
+ Then the response should be "201"
139
+ When I send a POST request to "/domains/api<random>/applications" with the following:"name=app&cartridge=php-5.3"
140
+ Then the response should be "201"
141
+ When I send a PUT request to "/domains/api<random>" with the following:"id=apiX<random>"
142
+ Then the response should be "200"
143
+ And the response should be a "domain" with attributes "id=apiX<random>"
144
+
145
+
146
+ Scenarios:
147
+ | format |
148
+ | JSON |
149
+ | XML |
150
+
151
+
152
+ Scenario Outline: Update the domain of another user
153
+ Given a new user
154
+ And I accept "<format>"
155
+ When I send a POST request to "/domains" with the following:"id=api<random>"
156
+ Then the response should be "201"
157
+ Given a new user
158
+
159
+ When I send a GET request to "/domains/api<random>"
160
+ Then the response should be "404"
161
+ When I send a PUT request to "/domains/api<random>" with the following:"id=apiX<random>"
162
+ Then the response should be "404"
163
+ And the error message should have "severity=error&exit_code=127"
164
+
165
+ Scenarios:
166
+ | format |
167
+ | JSON |
168
+ | XML |
169
+
170
+
171
+ Scenario Outline: Delete domain
172
+ Given a new user
173
+ And I accept "<format>"
174
+ When I send a POST request to "/domains" with the following:"id=api<random>"
175
+ Then the response should be "201"
176
+ When I send a DELETE request to "/domains/api<random>"
177
+ Then the response should be "204"
178
+ When I send a GET request to "/domains/api<random>"
179
+ Then the response should be "404"
180
+
181
+ Scenarios:
182
+ | format |
183
+ | JSON |
184
+ | XML |
185
+
186
+ Scenario Outline: Delete non-existent domain
187
+ Given a new user
188
+ And I accept "<format>"
189
+ When I send a POST request to "/domains" with the following:"id=api<random>"
190
+ Then the response should be "201"
191
+ When I send a DELETE request to "/domains/apiX<random>"
192
+ Then the response should be "404"
193
+ And the error message should have "severity=error&exit_code=127"
194
+
195
+ Scenarios:
196
+ | format |
197
+ | JSON |
198
+ | XML |
199
+
200
+ Scenario Outline: Delete domain of another user
201
+ Given a new user
202
+ And I accept "<format>"
203
+ When I send a POST request to "/domains" with the following:"id=api<random>"
204
+ Then the response should be "201"
205
+ Given a new user
206
+
207
+ When I send a DELETE request to "/domains/api<random>"
208
+ Then the response should be "404"
209
+
210
+ Scenarios:
211
+ | format |
212
+ | JSON |
213
+ | XML |
214
+
215
+ Scenario Outline: Delete domain with existing applications
216
+ Given a new user
217
+ And I accept "<format>"
218
+ When I send a POST request to "/domains" with the following:"id=api<random>"
219
+ Then the response should be "201"
220
+ When I send a POST request to "/domains/api<random>/applications" with the following:"name=app&cartridge=php-5.3"
221
+ Then the response should be "201"
222
+ When I send a DELETE request to "/domains/api<random>"
223
+ Then the response should be "400"
224
+ And the error message should have "severity=error&exit_code=128"
225
+ When I send a DELETE request to "/domains/api<random>/applications/app"
226
+ Then the response should be "204"
227
+
228
+ Scenarios:
229
+ | format |
230
+ | JSON |
231
+ | XML |
232
+
233
+ Scenario Outline: Force Delete domain with existing applications
234
+ Given a new user
235
+ And I accept "<format>"
236
+ When I send a POST request to "/domains" with the following:"id=api<random>"
237
+ Then the response should be "201"
238
+ When I send a POST request to "/domains/api<random>/applications" with the following:"name=app&cartridge=php-5.3"
239
+ Then the response should be "201"
240
+ When I send a DELETE request to "/domains/api<random>?force=true"
241
+ Then the response should be "204"
242
+
243
+ Scenarios:
244
+ | format |
245
+ | JSON |
246
+ | XML |
247
+
248
+ Scenario Outline: Create more than one domain
249
+ Given a new user
250
+ And I accept "<format>"
251
+ When I send a POST request to "/domains" with the following:"id=api<random>"
252
+ Then the response should be "201"
253
+ And the response should be a "domain" with attributes "id=api<random>"
254
+ When I send a POST request to "/domains" with the following:"id=apiX<random>"
255
+ Then the response should be "409"
256
+
257
+ Scenarios:
258
+ | format |
259
+ | JSON |
260
+ | XML |
261
+
262
+ Scenario Outline: Create duplicate domain
263
+ Given a new user
264
+ And I accept "<format>"
265
+ When I send a POST request to "/domains" with the following:"id=api<random>"
266
+ Then the response should be "201"
267
+ When I send a POST request to "/domains" with the following:"id=api<random>"
268
+ Then the response should be "422"
269
+ And the error message should have "field=id&severity=error&exit_code=103"
270
+
271
+ Scenarios:
272
+ | format |
273
+ | JSON |
274
+ | XML |
275
+
276
+
@@ -0,0 +1,38 @@
1
+ @broker_api
2
+ @broker_api4
3
+ Feature: gear-groups
4
+ As an API client
5
+ I want to check the application state on each of the gears within each gear group
6
+
7
+ Scenario Outline: Check application state on gear with xml
8
+ Given a new user
9
+ And I accept "<format>"
10
+ When I send a POST request to "/domains" with the following:"id=api<random>"
11
+ Then the response should be "201"
12
+ When I send a POST request to "/domains/api<random>/applications" with the following:"name=app&cartridge=php-5.3"
13
+ Then the response should be "201"
14
+
15
+ When I send a GET request to "/domains/api<random>/applications/app/gear_groups"
16
+ Then the response should be a "gear-group/gears/gear" with attributes "state=started"
17
+
18
+ When I send a POST request to "/domains/api<random>/applications/app/events" with the following:"event=stop"
19
+ Then the response should be "200"
20
+ When I send a GET request to "/domains/api<random>/applications/app/gear_groups"
21
+ Then the response should be a "gear-group/gears/gear" with attributes "state=stopped"
22
+
23
+ When I send a POST request to "/domains/api<random>/applications/app/events" with the following:"event=start"
24
+ Then the response should be "200"
25
+ When I send a GET request to "/domains/api<random>/applications/app/gear_groups"
26
+ Then the response should be a "gear-group/gears/gear" with attributes "state=started"
27
+
28
+ When I send a POST request to "/domains/api<random>/applications/app/events" with the following:"event=restart"
29
+ Then the response should be "200"
30
+ When I send a GET request to "/domains/api<random>/applications/app/gear_groups"
31
+ Then the response should be a "gear-group/gears/gear" with attributes "state=started"
32
+
33
+ When I send a DELETE request to "/domains/api<random>/applications/app"
34
+ Then the response should be "204"
35
+
36
+ Scenarios:
37
+ | format |
38
+ | XML |
@@ -0,0 +1,247 @@
1
+ @broker_api
2
+ @broker_api1
3
+ Feature: keys
4
+ As an API client
5
+ In order to do things with keys
6
+ I want to List, Create, Retrieve, Update and Delete keys
7
+
8
+ Scenario Outline: List keys
9
+ Given a new user
10
+ And I accept "<format>"
11
+ When I send a GET request to "/user/keys"
12
+ Then the response should be "200"
13
+
14
+ Scenarios:
15
+ | format |
16
+ | JSON |
17
+ | XML |
18
+
19
+ Scenario Outline: Create key
20
+ Given a new user
21
+ And I accept "<format>"
22
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content=XYZ123567"
23
+ Then the response should be "201"
24
+ And the response should be a "key" with attributes "name=api&type=ssh-rsa&content=XYZ123567"
25
+
26
+ Scenarios:
27
+ | format |
28
+ | JSON |
29
+ | XML |
30
+
31
+
32
+ Scenario Outline: Create key with with blank, missing and invalid content
33
+ Given a new user
34
+ And I accept "<format>"
35
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content=XYZ123=567[dfhhfl]"
36
+ Then the response should be "422"
37
+ And the error message should have "field=content&severity=error&exit_code=108"
38
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content="
39
+ Then the response should be "422"
40
+ And the error message should have "field=content&severity=error&exit_code=108"
41
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa"
42
+ Then the response should be "422"
43
+ And the error message should have "field=content&severity=error&exit_code=108"
44
+
45
+ Scenarios:
46
+ | format |
47
+ | JSON |
48
+ | XML |
49
+
50
+ Scenario Outline: Create key with with blank, missing, too long and invalid name
51
+ Given a new user
52
+ And I accept "<format>"
53
+ When I send a POST request to "/user/keys" with the following:"name=cucum?*ber&type=ssh-rsa&content=XYZ123"
54
+ Then the response should be "422"
55
+ And the error message should have "field=name&severity=error&exit_code=117"
56
+ When I send a POST request to "/user/keys" with the following:"name=&type=ssh-rsa&content=XYZ123"
57
+ Then the response should be "422"
58
+ And the error message should have "field=name&severity=error&exit_code=117"
59
+ When I send a POST request to "/user/keys" with the following:"type=ssh-rsa&content=XYZ123"
60
+ Then the response should be "422"
61
+ And the error message should have "field=name&severity=error&exit_code=117"
62
+ When I send a POST request to "/user/keys" with the following:"name=cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc&type=ssh-rsa&content=XYZ123"
63
+ Then the response should be "422"
64
+ And the error message should have "field=name&severity=error&exit_code=117"
65
+
66
+ Scenarios:
67
+ | format |
68
+ | JSON |
69
+ | XML |
70
+
71
+ Scenario Outline: Create key with blank, missing and invalid type
72
+ Given a new user
73
+ And I accept "<format>"
74
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-xyz&content=XYZ123567"
75
+ Then the response should be "422"
76
+ And the error message should have "field=type&severity=error&exit_code=116"
77
+ When I send a POST request to "/user/keys" with the following:"name=api&type=&content=XYZ123567"
78
+ Then the response should be "422"
79
+ And the error message should have "field=type&severity=error&exit_code=116"
80
+ When I send a POST request to "/user/keys" with the following:"name=api&content=XYZ123567"
81
+ Then the response should be "422"
82
+ And the error message should have "field=type&severity=error&exit_code=116"
83
+
84
+ Scenarios:
85
+ | format |
86
+ | JSON |
87
+ | XML |
88
+
89
+ Scenario Outline: Retrieve key
90
+ Given a new user
91
+ And I accept "<format>"
92
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content=XYZ123"
93
+ Then the response should be "201"
94
+ When I send a GET request to "/user/keys/api"
95
+ Then the response should be "200"
96
+ And the response should be a "key" with attributes "name=api&type=ssh-rsa&content=XYZ123"
97
+
98
+ Scenarios:
99
+ | format |
100
+ | JSON |
101
+ | XML |
102
+
103
+ Scenario Outline: Retrieve non-existent key
104
+ Given a new user
105
+ And I accept "<format>"
106
+ When I send a GET request to "/user/keys/api"
107
+ Then the response should be "404"
108
+ And the error message should have "severity=error&exit_code=118"
109
+
110
+ Scenarios:
111
+ | format |
112
+ | JSON |
113
+ | XML |
114
+
115
+ Scenario Outline: Update key
116
+ Given a new user
117
+ And I accept "<format>"
118
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content=XYZ123"
119
+ Then the response should be "201"
120
+ When I send a PUT request to "/user/keys/api" with the following:"type=ssh-rsa&content=ABC890"
121
+ Then the response should be "200"
122
+ And the response should be a "key" with attributes "name=api&type=ssh-rsa&content=ABC890"
123
+
124
+ Scenarios:
125
+ | format |
126
+ | JSON |
127
+ | XML |
128
+
129
+
130
+ Scenario Outline: Update key with with blank, missing and invalid content
131
+ Given a new user
132
+ And I accept "<format>"
133
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content=XYZ123"
134
+ Then the response should be "201"
135
+ When I send a PUT request to "/user/keys/api" with the following:"type=ssh-rsa&content="
136
+ Then the response should be "422"
137
+ And the error message should have "field=content&severity=error&exit_code=108"
138
+ When I send a PUT request to "/user/keys/api" with the following:"type=ssh-rsa"
139
+ Then the response should be "422"
140
+ And the error message should have "field=content&severity=error&exit_code=108"
141
+ When I send a PUT request to "/user/keys/api" with the following:"type=ssh-rsa&content=ABC8??#@@90"
142
+ Then the response should be "422"
143
+ And the error message should have "field=content&severity=error&exit_code=108"
144
+ When I send a GET request to "/user/keys/api"
145
+ Then the response should be "200"
146
+ And the response should be a "key" with attributes "name=api&type=ssh-rsa&content=XYZ123"
147
+
148
+ Scenarios:
149
+ | format |
150
+ | JSON |
151
+ | XML |
152
+
153
+ Scenario Outline: Update key with blank, missing and invalid type
154
+ Given a new user
155
+ And I accept "<format>"
156
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content=XYZ123"
157
+ Then the response should be "201"
158
+ When I send a PUT request to "/user/keys/api" with the following:"type=&content=ABC890"
159
+ Then the response should be "422"
160
+ And the error message should have "field=type&severity=error&exit_code=116"
161
+ When I send a PUT request to "/user/keys/api" with the following:"&content=ABC890"
162
+ Then the response should be "422"
163
+ And the error message should have "field=type&severity=error&exit_code=116"
164
+ When I send a PUT request to "/user/keys/api" with the following:"type=ssh-abc&content=ABC890"
165
+ Then the response should be "422"
166
+ And the error message should have "field=type&severity=error&exit_code=116"
167
+ When I send a GET request to "/user/keys/api"
168
+ Then the response should be "200"
169
+ And the response should be a "key" with attributes "name=api&type=ssh-rsa&content=XYZ123"
170
+
171
+ Scenarios:
172
+ | format |
173
+ | JSON |
174
+ | XML |
175
+
176
+ Scenario Outline: Update non-existent key
177
+ Given a new user
178
+ And I accept "<format>"
179
+ When I send a PUT request to "/user/keys/api1" with the following:"type=ssh-rsa&content=ABC890"
180
+ Then the response should be "404"
181
+ And the error message should have "severity=error&exit_code=118"
182
+
183
+ Scenarios:
184
+ | format |
185
+ | JSON |
186
+ | XML |
187
+
188
+ Scenario Outline: Delete key
189
+ Given a new user
190
+ And I accept "<format>"
191
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content=XYZ123"
192
+ Then the response should be "201"
193
+ When I send a POST request to "/user/keys" with the following:"name=api1&type=ssh-rsa&content=XYZ123456"
194
+ Then the response should be "201"
195
+ When I send a DELETE request to "/user/keys/api1"
196
+ Then the response should be "204"
197
+
198
+ Scenarios:
199
+ | format |
200
+ | JSON |
201
+ | XML |
202
+
203
+ Scenario Outline: Delete last key
204
+ Given a new user
205
+ And I accept "<format>"
206
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content=XYZ123"
207
+ Then the response should be "201"
208
+ When I send a DELETE request to "/user/keys/api"
209
+ Then the response should be "204"
210
+
211
+ Scenarios:
212
+ | format |
213
+ | JSON |
214
+ | XML |
215
+
216
+ Scenario Outline: Delete non-existent key
217
+ Given a new user
218
+ And I accept "<format>"
219
+ When I send a DELETE request to "/user/keys/api"
220
+ Then the response should be "404"
221
+ And the error message should have "severity=error&exit_code=118"
222
+
223
+ Scenarios:
224
+ | format |
225
+ | JSON |
226
+ | XML |
227
+
228
+ Scenario Outline: Create duplicate key
229
+ Given a new user
230
+ And I accept "<format>"
231
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content=XYZ123"
232
+ Then the response should be "201"
233
+ When I send a POST request to "/user/keys" with the following:"name=api&type=ssh-rsa&content=XYZ1234"
234
+ Then the response should be "409"
235
+ When I send a POST request to "/user/keys" with the following:"name=apiX&type=ssh-rsa&content=XYZ123"
236
+ Then the response should be "409"
237
+
238
+ Scenarios:
239
+ | format |
240
+ | JSON |
241
+ | XML |
242
+
243
+
244
+
245
+
246
+
247
+