vayacondios-server 0.2.11 → 0.3.0

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 (142) hide show
  1. data/.gitignore +3 -1
  2. data/.travis.yml +2 -0
  3. data/Gemfile +15 -9
  4. data/LICENSE.md +2 -6
  5. data/Procfile +1 -1
  6. data/README.md +656 -111
  7. data/Rakefile +89 -6
  8. data/bin/vcd +10 -0
  9. data/bin/vcd-server +8 -0
  10. data/config/database.yml +6 -0
  11. data/config/spec.example.yml +18 -0
  12. data/config/vayacondios.example.yml +15 -0
  13. data/config/vcd-server.rb +37 -0
  14. data/examples/configuration.rb +56 -0
  15. data/examples/event_stream.rb +19 -0
  16. data/examples/simple.rb +61 -0
  17. data/features/event.feature +319 -0
  18. data/features/events.feature +208 -0
  19. data/features/stash.feature +840 -0
  20. data/features/stashes.feature +492 -0
  21. data/features/step_definitions/stash_steps.rb +113 -0
  22. data/features/stream.feature +30 -0
  23. data/features/support/em.rb +14 -0
  24. data/features/support/env.rb +13 -0
  25. data/lib/vayacondios/configuration.rb +63 -0
  26. data/lib/vayacondios/server/api.rb +126 -0
  27. data/lib/vayacondios/server/api_options.rb +56 -0
  28. data/lib/vayacondios/server/configuration.rb +23 -0
  29. data/lib/vayacondios/server/driver.rb +71 -0
  30. data/lib/vayacondios/server/drivers/mongo.rb +126 -0
  31. data/lib/vayacondios/server/handlers/document_handler.rb +81 -0
  32. data/lib/vayacondios/server/handlers/event_handler.rb +31 -26
  33. data/lib/vayacondios/server/handlers/events_handler.rb +31 -0
  34. data/lib/vayacondios/server/handlers/stash_handler.rb +69 -0
  35. data/lib/vayacondios/server/handlers/stashes_handler.rb +49 -0
  36. data/lib/vayacondios/server/handlers/stream_handler.rb +39 -0
  37. data/lib/vayacondios/server/models/document.rb +87 -0
  38. data/lib/vayacondios/server/models/event.rb +198 -0
  39. data/lib/vayacondios/server/models/stash.rb +100 -0
  40. data/lib/vayacondios/server.rb +35 -0
  41. data/lib/vayacondios-server.rb +19 -13
  42. data/lib/vayacondios.rb +22 -0
  43. data/pom.xml +124 -4
  44. data/spec/configuration_spec.rb +41 -0
  45. data/spec/server/api_options_spec.rb +32 -0
  46. data/spec/server/api_spec.rb +279 -0
  47. data/spec/server/configuration_spec.rb +27 -0
  48. data/spec/server/drivers/mongo_spec.rb +107 -0
  49. data/spec/server/handlers/event_handler_spec.rb +62 -0
  50. data/spec/server/handlers/events_handler_spec.rb +51 -0
  51. data/spec/server/handlers/stash_handler_spec.rb +68 -0
  52. data/spec/server/handlers/stashes_handler_spec.rb +50 -0
  53. data/spec/server/handlers/stream_handler_spec.rb +5 -0
  54. data/spec/server/models/document_spec.rb +9 -0
  55. data/spec/server/models/event_spec.rb +185 -0
  56. data/spec/server/models/stash_spec.rb +95 -0
  57. data/spec/spec_helper.rb +23 -3
  58. data/spec/support/database_helper.rb +42 -0
  59. data/spec/support/log_helper.rb +19 -0
  60. data/spec/support/shared_context_for_events.rb +22 -0
  61. data/spec/support/shared_context_for_stashes.rb +24 -0
  62. data/spec/support/shared_examples_for_handlers.rb +32 -0
  63. data/src/main/java/com/infochimps/vayacondios/BaseClient.java +342 -0
  64. data/src/main/java/com/infochimps/vayacondios/HTTPClient.java +426 -0
  65. data/src/main/java/com/infochimps/vayacondios/VayacondiosClient.java +487 -65
  66. data/src/main/java/com/infochimps/vayacondios/test/IntegrationTest.java +3 -0
  67. data/src/test/java/com/infochimps/vayacondios/BaseClientTest.java +50 -0
  68. data/src/test/java/com/infochimps/vayacondios/HTTPClientIT.java +267 -0
  69. data/vayacondios-server.gemspec +9 -9
  70. metadata +127 -122
  71. checksums.yaml +0 -15
  72. data/.rspec +0 -2
  73. data/.yardopts +0 -10
  74. data/Guardfile +0 -41
  75. data/app/http_shim.rb +0 -71
  76. data/bin/vcd.sh +0 -27
  77. data/config/http_shim.rb +0 -43
  78. data/config/vayacondios.example.yaml +0 -7
  79. data/config/vayacondios.yaml +0 -7
  80. data/examples/java/ItemSetTest.java +0 -76
  81. data/lib/tasks/publish.rake +0 -23
  82. data/lib/tasks/spec.rake +0 -11
  83. data/lib/tasks/yard.rake +0 -2
  84. data/lib/vayacondios/client/config.rb +0 -7
  85. data/lib/vayacondios/client/configliere.rb +0 -38
  86. data/lib/vayacondios/client/cube_client.rb +0 -39
  87. data/lib/vayacondios/client/http_client.rb +0 -49
  88. data/lib/vayacondios/client/itemset.rb +0 -130
  89. data/lib/vayacondios/client/legacy_switch.rb +0 -43
  90. data/lib/vayacondios/client/notifier.rb +0 -123
  91. data/lib/vayacondios/client/zabbix_client.rb +0 -148
  92. data/lib/vayacondios/legacy_switch.rb +0 -43
  93. data/lib/vayacondios/server/errors/bad_request.rb +0 -6
  94. data/lib/vayacondios/server/errors/not_found.rb +0 -6
  95. data/lib/vayacondios/server/handlers/config_handler.rb +0 -32
  96. data/lib/vayacondios/server/handlers/itemset_handler.rb +0 -60
  97. data/lib/vayacondios/server/legacy_switch.rb +0 -43
  98. data/lib/vayacondios/server/model/config_document.rb +0 -89
  99. data/lib/vayacondios/server/model/document.rb +0 -25
  100. data/lib/vayacondios/server/model/event_document.rb +0 -94
  101. data/lib/vayacondios/server/model/itemset_document.rb +0 -126
  102. data/lib/vayacondios/server/rack/extract_methods.rb +0 -35
  103. data/lib/vayacondios/server/rack/jsonize.rb +0 -43
  104. data/lib/vayacondios/server/rack/params.rb +0 -50
  105. data/lib/vayacondios/server/rack/path.rb +0 -23
  106. data/lib/vayacondios/server/rack/path_validation.rb +0 -22
  107. data/lib/vayacondios/version.rb +0 -3
  108. data/lib/vayacondios-client.rb +0 -22
  109. data/scripts/hadoop_monitor/configurable.rb +0 -66
  110. data/scripts/hadoop_monitor/hadoop_attempt_scraper.rb +0 -45
  111. data/scripts/hadoop_monitor/hadoop_client.rb +0 -273
  112. data/scripts/hadoop_monitor/hadoop_monitor.rb +0 -101
  113. data/scripts/hadoop_monitor/hadoopable.rb +0 -65
  114. data/scripts/hadoop_monitor/machine_monitor.rb +0 -115
  115. data/scripts/s3_cataloger/buckets +0 -33
  116. data/scripts/s3_cataloger/foreach_bucket +0 -88
  117. data/scripts/s3_cataloger/parse_ls.py +0 -391
  118. data/spec/client/itemset_legacy_spec.rb +0 -55
  119. data/spec/client/itemset_spec.rb +0 -60
  120. data/spec/client/notifier_spec.rb +0 -120
  121. data/spec/server/config_spec.rb +0 -113
  122. data/spec/server/event_spec.rb +0 -103
  123. data/spec/server/itemset_legacy_spec.rb +0 -320
  124. data/spec/server/itemset_spec.rb +0 -317
  125. data/spec/server/rack/extract_methods_spec.rb +0 -60
  126. data/spec/server/rack/path_spec.rb +0 -36
  127. data/spec/server/rack/path_validation_spec.rb +0 -22
  128. data/spec/server/server_spec.rb +0 -20
  129. data/spec/support/mongo_cleaner.rb +0 -32
  130. data/src/main/java/ItemSetTest.java +0 -76
  131. data/src/main/java/com/infochimps/util/CurrentClass.java +0 -26
  132. data/src/main/java/com/infochimps/util/DebugUtil.java +0 -38
  133. data/src/main/java/com/infochimps/util/HttpHelper.java +0 -181
  134. data/src/main/java/com/infochimps/vayacondios/ItemSets.java +0 -373
  135. data/src/main/java/com/infochimps/vayacondios/LinkToVCD.java +0 -18
  136. data/src/main/java/com/infochimps/vayacondios/MemoryVCDShim.java +0 -84
  137. data/src/main/java/com/infochimps/vayacondios/Organization.java +0 -62
  138. data/src/main/java/com/infochimps/vayacondios/PathBuilder.java +0 -13
  139. data/src/main/java/com/infochimps/vayacondios/StandardVCDLink.java +0 -218
  140. data/src/main/java/com/infochimps/vayacondios/VCDIntegrationTest.java +0 -108
  141. data/src/test/java/com/infochimps/vayacondios/TestVayacondiosInMemory.java +0 -78
  142. data/vayacondios-client.gemspec +0 -25
@@ -0,0 +1,840 @@
1
+ Feature: Stash
2
+ In order to provide functionality
3
+ As a user of the Vayacondios Api
4
+ I want to document how a Stash works
5
+
6
+ Scenario: Retrieving a non-Existent Stash
7
+ Given there are no matching Stashes in the database
8
+ When the client sends a GET request to "/v3/organization/stash/topic" with no body
9
+ Then the response status should be 404
10
+ And the response body should be:
11
+ """
12
+ {
13
+ "error": "Stash with topic <topic> not found"
14
+ }
15
+ """
16
+
17
+ Scenario: Retrieving an Existing Stash
18
+ Given the following Stash exists in the database:
19
+ """
20
+ {
21
+ "_id": "topic",
22
+ "foo": "bar"
23
+ }
24
+ """
25
+ When the client sends a GET request to "/v3/organization/stash/topic" with no body
26
+ Then the response status should be 200
27
+ And the response body should be:
28
+ """
29
+ {
30
+ "foo": "bar"
31
+ }
32
+ """
33
+
34
+ Scenario: Retrieving a non-Existent Stash with an Id
35
+ Given there are no matching Stashes in the database
36
+ When the client sends a GET request to "/v3/organization/stash/topic/id" with no body
37
+ Then the response status should be 404
38
+ And the response body should be:
39
+ """
40
+ {
41
+ "error": "Stash with topic <topic> not found"
42
+ }
43
+ """
44
+
45
+ Scenario: Retrieving an Existing Stash with an Id
46
+ Given the following Stash exists in the database:
47
+ """
48
+ {
49
+ "_id": "topic",
50
+ "sub": {
51
+ "foo": "bar"
52
+ }
53
+ }
54
+ """
55
+ When the client sends a GET request to "/v3/organization/stash/topic/sub" with no body
56
+ Then the response status should be 200
57
+ And the response body should be:
58
+ """
59
+ {
60
+ "foo":"bar"
61
+ }
62
+ """
63
+
64
+ Scenario: Creating an Empty Stash without an Id
65
+ Given there are no matching Stashes in the database
66
+ When the client sends a POST request to "/v3/organization/stash/topic" with no body
67
+ Then the response status should be 200
68
+ And the response body should be:
69
+ """
70
+ {
71
+ }
72
+ """
73
+ And the database should have the following Stash:
74
+ """
75
+ {
76
+ "_id": "topic"
77
+ }
78
+ """
79
+
80
+ Scenario: Creating a Stash without an Id
81
+ Given there are no matching Stashes in the database
82
+ When the client sends a POST request to "/v3/organization/stash/topic" with the following body:
83
+ """
84
+ {
85
+ "foo": "bar"
86
+ }
87
+ """
88
+ Then the response status should be 200
89
+ And the response body should be:
90
+ """
91
+ {
92
+ "foo": "bar"
93
+ }
94
+ """
95
+ And the database should have the following Stash:
96
+ """
97
+ {
98
+ "_id": "topic",
99
+ "foo": "bar"
100
+ }
101
+ """
102
+
103
+ Scenario: Creating a non-Hash Stash without an Id
104
+ Given there are no matching Stashes in the database
105
+ When the client sends a POST request to "/v3/organization/stash/topic" with the following body:
106
+ """
107
+ [
108
+ "foo",
109
+ "bar"
110
+ ]
111
+ """
112
+ Then the response status should be 400
113
+ And the response body should be:
114
+ """
115
+ {
116
+ "error": "If not including an Id, the document must be a Hash"
117
+ }
118
+ """
119
+
120
+ Scenario: Creating a Stash without an Id when one Already Exists
121
+ Given the following Stash exists in the database:
122
+ """
123
+ {
124
+ "_id": "topic",
125
+ "foo": "bar"
126
+ }
127
+ """
128
+ When the client sends a POST request to "/v3/organization/stash/topic" with the following body:
129
+ """
130
+ {
131
+ "new": "body"
132
+ }
133
+ """
134
+ Then the response status should be 200
135
+ And the response body should be:
136
+ """
137
+ {
138
+ "new": "body"
139
+ }
140
+ """
141
+ And the database should have the following Stash:
142
+ """
143
+ {
144
+ "_id": "topic",
145
+ "new": "body"
146
+ }
147
+ """
148
+
149
+ Scenario: Creating an Empty Stash With an Id
150
+ Given there are no matching Stashes in the database
151
+ When the client sends a POST request to "/v3/organization/stash/topic/id" with no body
152
+ Then the response status should be 200
153
+ And the response body should be:
154
+ """
155
+ {
156
+ "id": {}
157
+ }
158
+ """
159
+ And the database should have the following Stash:
160
+ """
161
+ {
162
+ "_id": "topic",
163
+ "id": {}
164
+ }
165
+ """
166
+
167
+ Scenario: Creating a Stash With an Id
168
+ Given there are no matching Stashes in the database
169
+ When the client sends a POST request to "/v3/organization/stash/topic/id" with the following body:
170
+ """
171
+ {
172
+ "foo": "bar"
173
+ }
174
+ """
175
+ Then the response status should be 200
176
+ And the response body should be:
177
+ """
178
+ {
179
+ "id": {
180
+ "foo": "bar"
181
+ }
182
+ }
183
+ """
184
+ And the database should have the following Stash:
185
+ """
186
+ {
187
+ "_id": "topic",
188
+ "id": {
189
+ "foo": "bar"
190
+ }
191
+ }
192
+ """
193
+
194
+ Scenario: Creating an Array Stash With an Id
195
+ Given there are no matching Stashes in the database
196
+ When the client sends a POST request to "/v3/organization/stash/topic/id" with the following body:
197
+ """
198
+ [
199
+ "foo",
200
+ "bar"
201
+ ]
202
+ """
203
+ Then the response status should be 200
204
+ And the response body should be:
205
+ """
206
+ {
207
+ "id": [
208
+ "foo",
209
+ "bar"
210
+ ]
211
+ }
212
+ """
213
+ And the database should have the following Stash:
214
+ """
215
+ {
216
+ "_id": "topic",
217
+ "id": [
218
+ "foo",
219
+ "bar"
220
+ ]
221
+ }
222
+ """
223
+
224
+ Scenario: Creating an String Stash With an Id
225
+ Given there are no matching Stashes in the database
226
+ When the client sends a POST request to "/v3/organization/stash/topic/id" with the following body:
227
+ """
228
+ "HELLO"
229
+ """
230
+ Then the response status should be 200
231
+ And the response body should be:
232
+ """
233
+ {
234
+ "id": "HELLO"
235
+ }
236
+ """
237
+ And the database should have the following Stash:
238
+ """
239
+ {
240
+ "_id": "topic",
241
+ "id": "HELLO"
242
+ }
243
+ """
244
+
245
+ Scenario: Creating an nil Stash With an Id
246
+ Given there are no matching Stashes in the database
247
+ When the client sends a POST request to "/v3/organization/stash/topic/id" with the following body:
248
+ """
249
+ "null"
250
+ """
251
+ Then the response status should be 200
252
+ And the response body should be:
253
+ """
254
+ {
255
+ "id": "null"
256
+ }
257
+ """
258
+ And the database should have the following Stash:
259
+ """
260
+ {
261
+ "_id": "topic",
262
+ "id": "null"
263
+ }
264
+ """
265
+
266
+ Scenario: Creating a Stash With an Id when one Already Exists
267
+ Given the following Stash exists in the database:
268
+ """
269
+ {
270
+ "_id": "topic",
271
+ "id": {
272
+ "foo": "bar"
273
+ }
274
+ }
275
+ """
276
+ When the client sends a POST request to "/v3/organization/stash/topic/id" with the following body:
277
+ """
278
+ {
279
+ "new": "body"
280
+ }
281
+ """
282
+ Then the response status should be 200
283
+ And the response body should be:
284
+ """
285
+ {
286
+ "id": {
287
+ "new": "body"
288
+ }
289
+ }
290
+ """
291
+ And the database should have the following Stash:
292
+ """
293
+ {
294
+ "_id": "topic",
295
+ "id": {
296
+ "new": "body"
297
+ }
298
+ }
299
+ """
300
+
301
+ Scenario: Updating a non-Existent Stash with a Hash
302
+ Given there are no matching Stashes in the database
303
+ When the client sends a PUT request to "/v3/organization/stash/topic" with the following body:
304
+ """
305
+ {
306
+ "foo": "bar"
307
+ }
308
+ """
309
+ Then the response status should be 405
310
+ And the response body should be:
311
+ """
312
+ {
313
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
314
+ }
315
+ """
316
+ # Then the response status should be 200
317
+ # And the response body should be:
318
+ # """
319
+ # {
320
+ # "foo": "bar"
321
+ # }
322
+ # """
323
+ # And the database should have the following Stash:
324
+ # """
325
+ # {
326
+ # "_id": "topic",
327
+ # "foo": "bar"
328
+ # }
329
+ # """
330
+
331
+ Scenario: Updating an Existing Stash with a Hash
332
+ Given the following Stash exists in the database:
333
+ """
334
+ {
335
+ "_id": "topic",
336
+ "foo": "bar"
337
+ }
338
+ """
339
+ When the client sends a PUT request to "/v3/organization/stash/topic" with the following body:
340
+ """
341
+ {
342
+ "baz": "qix"
343
+ }
344
+ """
345
+ Then the response status should be 405
346
+ And the response body should be:
347
+ """
348
+ {
349
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
350
+ }
351
+ """
352
+ # Then the response status should be 200
353
+ # And the response body should be:
354
+ # """
355
+ # {
356
+ # "foo": "bar",
357
+ # "baz": "qix"
358
+ # }
359
+ # """
360
+ # And the database should have the following Stash:
361
+ # """
362
+ # {
363
+ # "_id": "topic",
364
+ # "foo": "bar",
365
+ # "baz": "qix"
366
+ # }
367
+ # """
368
+
369
+ Scenario: Updating an Stash with a non-Hash
370
+ Given there are no matching Stashes in the database
371
+ When the client sends a PUT request to "/v3/organization/stash/topic" with the following body:
372
+ """
373
+ [
374
+ "foo",
375
+ "bar"
376
+ ]
377
+ """
378
+ Then the response status should be 405
379
+ And the response body should be:
380
+ """
381
+ {
382
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
383
+ }
384
+ """
385
+ # Then the response status should be 400
386
+ # And the response body should be:
387
+ # """
388
+ # {
389
+ # "error": "If not including an id the document must be a Hash"
390
+ # }
391
+ # """
392
+ # And there are no Stashes in the database
393
+
394
+ Scenario: Updating an non-Existent Stash Using an Id with an Empty Hash
395
+ Given there are no matching Stashes in the database
396
+ When the client sends a PUT request to "/v3/organization/stash/topic/id" with no body
397
+ Then the response status should be 405
398
+ And the response body should be:
399
+ """
400
+ {
401
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
402
+ }
403
+ """
404
+ # Then the response status should be 200
405
+ # And the response body should be:
406
+ # """
407
+ # {
408
+ # "id": {}
409
+ # }
410
+ # """
411
+ # And the database should have the following Stash:
412
+ # """
413
+ # {
414
+ # "_id": "topic",
415
+ # "id": {}
416
+ # }
417
+ # """
418
+
419
+ Scenario: Updating an Existing Stash Using an Id with an Empty Hash
420
+ Given the following Stash exists in the database:
421
+ """
422
+ {
423
+ "_id": "topic",
424
+ "id": "yolo"
425
+ }
426
+ """
427
+ When the client sends a PUT request to "/v3/organization/stash/topic/id" with no body
428
+ Then the response status should be 405
429
+ And the response body should be:
430
+ """
431
+ {
432
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
433
+ }
434
+ """
435
+ # Then the response status should be 200
436
+ # And the response body should be:
437
+ # """
438
+ # {
439
+ # "id": {}
440
+ # }
441
+ # """
442
+ # And the database should have the following Stash:
443
+ # """
444
+ # {
445
+ # "_id": "topic",
446
+ # "id": {}
447
+ # }
448
+ # """
449
+
450
+ Scenario: Updating an non-Existent Stash Using an Id with a Hash
451
+ Given there are no matching Stashes in the database
452
+ When the client sends a PUT request to "/v3/organization/stash/topic/id" with the following body:
453
+ """
454
+ {
455
+ "foo": "bar"
456
+ }
457
+ """
458
+ Then the response status should be 405
459
+ And the response body should be:
460
+ """
461
+ {
462
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
463
+ }
464
+ """
465
+ # Then the response status should be 200
466
+ # And the response body should be:
467
+ # """
468
+ # {
469
+ # "id": {
470
+ # "foo": "bar"
471
+ # }
472
+ # }
473
+ # """
474
+ # And the database should have the following Stash:
475
+ # """
476
+ # {
477
+ # "_id": "topic",
478
+ # "id": {
479
+ # "foo": "bar"
480
+ # }
481
+ # }
482
+ # """
483
+
484
+ Scenario: Updating an Existing Stash Using an Id with a Hash
485
+ Given the following Stash exists in the database:
486
+ """
487
+ {
488
+ "_id": "topic",
489
+ "id": "yolo"
490
+ }
491
+ """
492
+ When the client sends a PUT request to "/v3/organization/stash/topic/id" with the following body:
493
+ """
494
+ {
495
+ "foo": "bar"
496
+ }
497
+ """
498
+ Then the response status should be 405
499
+ And the response body should be:
500
+ """
501
+ {
502
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
503
+ }
504
+ """
505
+ # Then the response status should be 200
506
+ # And the response body should be:
507
+ # """
508
+ # {
509
+ # "id": {
510
+ # "foo": "bar"
511
+ # }
512
+ # }
513
+ # """
514
+ # And the database should have the following Stash:
515
+ # """
516
+ # {
517
+ # "_id": "topic",
518
+ # "id": {
519
+ # "foo": "bar"
520
+ # }
521
+ # }
522
+ # """
523
+
524
+ Scenario: Updating an non-Existent Stash Using an Id with an Array
525
+ Given there are no matching Stashes in the database
526
+ When the client sends a PUT request to "/v3/organization/stash/topic/id" with the following body:
527
+ """
528
+ [
529
+ "foo",
530
+ "bar"
531
+ ]
532
+ """
533
+ Then the response status should be 405
534
+ And the response body should be:
535
+ """
536
+ {
537
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
538
+ }
539
+ """
540
+ # Then the response status should be 200
541
+ # And the response body should be:
542
+ # """
543
+ # {
544
+ # "id": [
545
+ # "foo",
546
+ # "bar"
547
+ # ]
548
+ # }
549
+ # """
550
+ # And the database should have the following Stash:
551
+ # """
552
+ # {
553
+ # "_id": "topic",
554
+ # "id": [
555
+ # "foo",
556
+ # "bar"
557
+ # ]
558
+ # }
559
+ # """
560
+
561
+ Scenario: Updating an Existing Stash Using an Id with an Array
562
+ Given the following Stash exists in the database:
563
+ """
564
+ {
565
+ "_id": "topic",
566
+ "id": "yolo",
567
+ "foo": "bar"
568
+ }
569
+ """
570
+ When the client sends a PUT request to "/v3/organization/stash/topic/id" with the following body:
571
+ """
572
+ [
573
+ "foo",
574
+ "bar"
575
+ ]
576
+ """
577
+ Then the response status should be 405
578
+ And the response body should be:
579
+ """
580
+ {
581
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
582
+ }
583
+ """
584
+ # Then the response status should be 200
585
+ # And the response body should be:
586
+ # """
587
+ # {
588
+ # "id": [
589
+ # "foo",
590
+ # "bar"
591
+ # ],
592
+ # "foo": "bar"
593
+ # }
594
+ # """
595
+ # And the database should have the following Stash:
596
+ # """
597
+ # {
598
+ # "_id": "topic",
599
+ # "id": [
600
+ # "foo",
601
+ # "bar"
602
+ # ],
603
+ # "foo": "bar"
604
+ # }
605
+ # """
606
+
607
+ Scenario: Updating an non-Existent Stash Using an Id with a String
608
+ Given there are no matching Stashes in the database
609
+ When the client sends a PUT request to "/v3/organization/stash/topic/id" with the following body:
610
+ """
611
+ "HELLO"
612
+ """
613
+ Then the response status should be 405
614
+ And the response body should be:
615
+ """
616
+ {
617
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
618
+ }
619
+ """
620
+ # Then the response status should be 200
621
+ # And the response body should be:
622
+ # """
623
+ # {
624
+ # "id": "HELLO"
625
+ # }
626
+ # """
627
+ # And the database should have the following Stash:
628
+ # """
629
+ # {
630
+ # "_id": "topic",
631
+ # "id": "HELLO"
632
+ # }
633
+ # """
634
+
635
+ Scenario: Updating an Existing Stash Using an Id with a String
636
+ Given the following Stash exists in the database:
637
+ """
638
+ {
639
+ "_id": "topic",
640
+ "id": "yolo"
641
+ }
642
+ """
643
+ When the client sends a PUT request to "/v3/organization/stash/topic/id" with the following body:
644
+ """
645
+ "HELLO"
646
+ """
647
+ Then the response status should be 405
648
+ And the response body should be:
649
+ """
650
+ {
651
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
652
+ }
653
+ """
654
+ # Then the response status should be 200
655
+ # And the response body should be:
656
+ # """
657
+ # {
658
+ # "id": "HELLO"
659
+ # }
660
+ # """
661
+ # And the database should have the following Stash:
662
+ # """
663
+ # {
664
+ # "_id": "topic",
665
+ # "id": "HELLO"
666
+ # }
667
+ # """
668
+
669
+ Scenario: Updating an non-Existent Stash Using an Id with a nil
670
+ Given there are no matching Stashes in the database
671
+ When the client sends a PUT request to "/v3/organization/stash/topic/id" with the following body:
672
+ """
673
+ "null"
674
+ """
675
+ Then the response status should be 405
676
+ And the response body should be:
677
+ """
678
+ {
679
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
680
+ }
681
+ """
682
+ # Then the response status should be 200
683
+ # And the response body should be:
684
+ # """
685
+ # {
686
+ # "id": "null"
687
+ # }
688
+ # """
689
+ # And the database should have the following Stash:
690
+ # """
691
+ # {
692
+ # "_id": "topic",
693
+ # "id": "null"
694
+ # }
695
+ # """
696
+
697
+ Scenario: Updating an Existing Stash Using an Id with a nil
698
+ Given the following Stash exists in the database:
699
+ """
700
+ {
701
+ "_id": "topic",
702
+ "id": "yolo"
703
+ }
704
+ """
705
+ When the client sends a PUT request to "/v3/organization/stash/topic/id" with the following body:
706
+ """
707
+ "null"
708
+ """
709
+ Then the response status should be 405
710
+ And the response body should be:
711
+ """
712
+ {
713
+ "error":"Operation update not allowed for Vayacondios::Server::StashHandler. Valid operations are [\"create\", \"retrieve\", \"delete\"]"
714
+ }
715
+ """
716
+ # Then the response status should be 200
717
+ # And the response body should be:
718
+ # """
719
+ # {
720
+ # "id": "null"
721
+ # }
722
+ # """
723
+ # And the database should have the following Stash:
724
+ # """
725
+ # {
726
+ # "_id": "topic",
727
+ # "id": "null"
728
+ # }
729
+ # """
730
+
731
+ Scenario: Deleting a non-Existent Stash
732
+ Given there are no matching Stashes in the database
733
+ When the client sends a DELETE request to "/v3/organization/stash/topic" with no body
734
+ Then the response status should be 200
735
+ And the response body should be:
736
+ """
737
+ {
738
+ "ok": true
739
+ }
740
+ """
741
+
742
+ Scenario: Deleting an Existing Stash without an Id
743
+ Given the following Stash exists in the database:
744
+ """
745
+ {
746
+ "_id": "topic",
747
+ "foo": "bar"
748
+ }
749
+ """
750
+ When the client sends a DELETE request to "/v3/organization/stash/topic" with no body
751
+ Then the response status should be 200
752
+ And the response body should be:
753
+ """
754
+ {
755
+ "ok": true
756
+ }
757
+ """
758
+ And there are no Stashes in the database
759
+
760
+ Scenario: Deleting a non-Existent Stash with an Id
761
+ Given there are no matching Stashes in the database
762
+ When the client sends a DELETE request to "/v3/organization/stash/topic/id" with no body
763
+ Then the response status should be 501
764
+ And the response body should be:
765
+ """
766
+ {
767
+ "error": "Deleting an Id from a Stash is not supported"
768
+ }
769
+ """
770
+
771
+ # Then the response status should be 200
772
+ # And the response body should be:
773
+ # """
774
+ # {
775
+ # "ok": true
776
+ # }
777
+ # """
778
+
779
+ Scenario: Deleting a Existent Stash with a non-Existent Id
780
+ Given the following Stash exists in the database:
781
+ """
782
+ {
783
+ "_id": "topic",
784
+ "foo": "bar"
785
+ }
786
+ """
787
+ When the client sends a DELETE request to "/v3/organization/stash/topic/id" with no body
788
+ Then the response status should be 501
789
+ And the response body should be:
790
+ """
791
+ {
792
+ "error": "Deleting an Id from a Stash is not supported"
793
+ }
794
+ """
795
+ # Then the response status should be 200
796
+ # And the response body should be:
797
+ # """
798
+ # {
799
+ # "ok": true
800
+ # }
801
+ # """
802
+ # And the database should have the following Stash:
803
+ # """
804
+ # {
805
+ # "_id": "topic",
806
+ # "foo": "bar"
807
+ # }
808
+ # """
809
+
810
+ Scenario: Deleting a Existent Stash with an Existent Id
811
+ Given the following Stash exists in the database:
812
+ """
813
+ {
814
+ "_id": "topic",
815
+ "id": "data",
816
+ "foo": "bar"
817
+ }
818
+ """
819
+ When the client sends a DELETE request to "/v3/organization/stash/topic/id" with no body
820
+ Then the response status should be 501
821
+ And the response body should be:
822
+ """
823
+ {
824
+ "error": "Deleting an Id from a Stash is not supported"
825
+ }
826
+ """
827
+ # Then the response status should be 200
828
+ # And the response body should be:
829
+ # """
830
+ # {
831
+ # "ok": true
832
+ # }
833
+ # """
834
+ # And the database should have the following Stash:
835
+ # """
836
+ # {
837
+ # "_id": "topic",
838
+ # "foo": "bar"
839
+ # }
840
+ # """