http_stub 0.14.2 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/lib/http_stub/configurer/request/http/basic.rb +21 -0
  3. data/lib/http_stub/configurer/request/http/factory.rb +43 -0
  4. data/lib/http_stub/configurer/request/http/multipart.rb +33 -0
  5. data/lib/http_stub/configurer/request/stub.rb +24 -8
  6. data/lib/http_stub/configurer/request/stub_activator.rb +12 -8
  7. data/lib/http_stub/configurer/request/{stub_activator_payload_builder.rb → stub_activator_builder.rb} +4 -4
  8. data/lib/http_stub/configurer/request/stub_builder.rb +34 -0
  9. data/lib/http_stub/configurer/request/stub_response.rb +40 -0
  10. data/lib/http_stub/configurer/request/stub_response_file.rb +20 -0
  11. data/lib/http_stub/configurer/server/command.rb +5 -1
  12. data/lib/http_stub/configurer/server/command_processor.rb +1 -1
  13. data/lib/http_stub/configurer/server/dsl.rb +4 -4
  14. data/lib/http_stub/configurer/server/facade.rb +25 -11
  15. data/lib/http_stub/extensions/core/hash.rb +26 -0
  16. data/lib/http_stub/rake/server_daemon_tasks.rb +1 -1
  17. data/lib/http_stub/rake/server_tasks.rb +1 -1
  18. data/lib/http_stub/rake/task_generators.rb +3 -3
  19. data/lib/http_stub/server/application.rb +117 -0
  20. data/lib/http_stub/server/daemon.rb +39 -0
  21. data/lib/http_stub/{models → server}/exact_value_matcher.rb +1 -1
  22. data/lib/http_stub/{models → server}/hash_with_string_value_matchers.rb +2 -2
  23. data/lib/http_stub/{models → server}/headers.rb +1 -1
  24. data/lib/http_stub/{models → server}/omitted_value_matcher.rb +1 -1
  25. data/lib/http_stub/{models → server}/regexp_value_matcher.rb +1 -1
  26. data/lib/http_stub/{models → server}/registry.rb +10 -3
  27. data/lib/http_stub/{models → server}/request_header_parser.rb +1 -1
  28. data/lib/http_stub/server/response.rb +13 -0
  29. data/lib/http_stub/server/response_pipeline.rb +18 -0
  30. data/lib/http_stub/{models → server}/string_value_matcher.rb +4 -4
  31. data/lib/http_stub/server/stub.rb +37 -0
  32. data/lib/http_stub/{models → server}/stub_activator.rb +10 -2
  33. data/lib/http_stub/{controllers → server}/stub_activator_controller.rb +5 -5
  34. data/lib/http_stub/{controllers → server}/stub_controller.rb +4 -4
  35. data/lib/http_stub/server/stub_factory.rb +30 -0
  36. data/lib/http_stub/{models → server}/stub_headers.rb +4 -4
  37. data/lib/http_stub/{models → server}/stub_parameters.rb +2 -2
  38. data/lib/http_stub/{models → server}/stub_registry.rb +4 -4
  39. data/lib/http_stub/server/stub_response/base.rb +62 -0
  40. data/lib/http_stub/server/stub_response/file.rb +48 -0
  41. data/lib/http_stub/server/stub_response/text.rb +17 -0
  42. data/lib/http_stub/server/stub_response.rb +14 -0
  43. data/lib/http_stub/{models → server}/stub_triggers.rb +6 -2
  44. data/lib/http_stub/{models → server}/stub_uri.rb +2 -2
  45. data/lib/http_stub/{views → server/views}/_stub.haml +0 -0
  46. data/lib/http_stub/{views → server/views}/application.sass +0 -0
  47. data/lib/http_stub/{views → server/views}/layout.haml +0 -0
  48. data/lib/http_stub/{views → server/views}/stub_activators.haml +0 -0
  49. data/lib/http_stub/{views → server/views}/stubs.haml +0 -0
  50. data/lib/http_stub/version.rb +1 -1
  51. data/lib/http_stub.rb +41 -24
  52. data/spec/lib/http_stub/configurer/deprecated_dsl_spec.rb +2 -2
  53. data/spec/lib/http_stub/configurer/request/http/basic_spec.rb +15 -0
  54. data/spec/lib/http_stub/configurer/request/http/factory_spec.rb +148 -0
  55. data/spec/lib/http_stub/configurer/request/http/multipart_spec.rb +74 -0
  56. data/spec/lib/http_stub/configurer/request/stub_activator_builder_spec.rb +119 -0
  57. data/spec/lib/http_stub/configurer/request/stub_activator_spec.rb +24 -22
  58. data/spec/lib/http_stub/configurer/request/stub_builder_spec.rb +154 -0
  59. data/spec/lib/http_stub/configurer/request/stub_response_spec.rb +136 -0
  60. data/spec/lib/http_stub/configurer/request/stub_spec.rb +238 -17
  61. data/spec/lib/http_stub/configurer/server/command_processor_integration_spec.rb +7 -3
  62. data/spec/lib/http_stub/configurer/server/command_spec.rb +7 -6
  63. data/spec/lib/http_stub/configurer/server/dsl_spec.rb +58 -94
  64. data/spec/lib/http_stub/configurer/server/facade_spec.rb +56 -41
  65. data/spec/lib/http_stub/configurer_integration_spec.rb +180 -81
  66. data/spec/lib/http_stub/{hash_extensions_spec.rb → extensions/core/hash_spec.rb} +1 -1
  67. data/spec/lib/http_stub/rake/server_daemon_tasks_smoke_spec.rb +1 -1
  68. data/spec/lib/http_stub/{server_integration_spec.rb → server/application_integration_spec.rb} +1 -1
  69. data/spec/lib/http_stub/server/application_spec.rb +205 -0
  70. data/spec/lib/http_stub/server/daemon_integration_spec.rb +7 -0
  71. data/spec/lib/http_stub/{server_daemon_spec.rb → server/daemon_spec.rb} +4 -4
  72. data/spec/lib/http_stub/{models → server}/exact_value_matcher_spec.rb +2 -2
  73. data/spec/lib/http_stub/{models → server}/hash_with_string_value_matchers_spec.rb +5 -5
  74. data/spec/lib/http_stub/{models → server}/headers_spec.rb +2 -2
  75. data/spec/lib/http_stub/{models → server}/omitted_value_matcher_spec.rb +2 -2
  76. data/spec/lib/http_stub/{models → server}/regexp_value_matcher_spec.rb +2 -2
  77. data/spec/lib/http_stub/{models → server}/registry_spec.rb +52 -55
  78. data/spec/lib/http_stub/{models → server}/request_header_parser_spec.rb +4 -4
  79. data/spec/lib/http_stub/server/response_pipeline_spec.rb +29 -0
  80. data/spec/lib/http_stub/server/response_spec.rb +41 -0
  81. data/spec/lib/http_stub/{models → server}/string_value_matcher_spec.rb +11 -11
  82. data/spec/lib/http_stub/server/stub_activator_controller_spec.rb +85 -0
  83. data/spec/lib/http_stub/server/stub_activator_spec.rb +124 -0
  84. data/spec/lib/http_stub/server/stub_controller_spec.rb +74 -0
  85. data/spec/lib/http_stub/server/stub_factory_spec.rb +117 -0
  86. data/spec/lib/http_stub/{models → server}/stub_headers_spec.rb +9 -9
  87. data/spec/lib/http_stub/{models → server}/stub_parameters_spec.rb +6 -6
  88. data/spec/lib/http_stub/{models → server}/stub_registry_integration_spec.rb +3 -3
  89. data/spec/lib/http_stub/{models → server}/stub_registry_spec.rb +15 -35
  90. data/spec/lib/http_stub/server/stub_response/base_spec.rb +225 -0
  91. data/spec/lib/http_stub/server/stub_response/file_spec.rb +140 -0
  92. data/spec/lib/http_stub/server/stub_response/text_spec.rb +103 -0
  93. data/spec/lib/http_stub/server/stub_response_spec.rb +49 -0
  94. data/spec/lib/http_stub/{models → server}/stub_spec.rb +34 -18
  95. data/spec/lib/http_stub/{models → server}/stub_triggers_spec.rb +26 -16
  96. data/spec/lib/http_stub/{models → server}/stub_uri_spec.rb +5 -5
  97. data/spec/resources/sample.pdf +0 -0
  98. data/spec/resources/sample.txt +1 -0
  99. data/spec/spec_helper.rb +13 -4
  100. data/spec/support/stub_fixture.rb +106 -0
  101. metadata +148 -102
  102. data/lib/http_stub/configurer/request/stub_payload_builder.rb +0 -46
  103. data/lib/http_stub/hash_extensions.rb +0 -22
  104. data/lib/http_stub/models/request_pipeline.rb +0 -13
  105. data/lib/http_stub/models/response.rb +0 -43
  106. data/lib/http_stub/models/stub.rb +0 -35
  107. data/lib/http_stub/server.rb +0 -114
  108. data/lib/http_stub/server_daemon.rb +0 -36
  109. data/spec/lib/http_stub/configurer/request/stub_activator_payload_builder_spec.rb +0 -103
  110. data/spec/lib/http_stub/configurer/request/stub_payload_builder_spec.rb +0 -304
  111. data/spec/lib/http_stub/controllers/stub_activator_controller_spec.rb +0 -94
  112. data/spec/lib/http_stub/controllers/stub_controller_spec.rb +0 -83
  113. data/spec/lib/http_stub/models/request_pipeline_spec.rb +0 -17
  114. data/spec/lib/http_stub/models/response_spec.rb +0 -206
  115. data/spec/lib/http_stub/models/stub_activator_spec.rb +0 -76
  116. data/spec/lib/http_stub/server_daemon_integration_spec.rb +0 -7
  117. data/spec/lib/http_stub/server_spec.rb +0 -234
  118. data/spec/support/http_stub/configurer/request/stub_payload_builder_shared_context.rb +0 -27
@@ -23,10 +23,10 @@ describe HttpStub::Configurer, "when the server is running" do
23
23
 
24
24
  context "and the stub request is made" do
25
25
 
26
- let(:response) { Net::HTTP.get_response(server_host, "/stub_path", server_port) }
26
+ let(:response) { HTTParty.get("#{server_uri}/stub_path") }
27
27
 
28
28
  it "replays the stubbed response" do
29
- expect(response.code).to eql("200")
29
+ expect(response.code).to eql(200)
30
30
  expect(response.body).to eql("Stub activator body")
31
31
  end
32
32
 
@@ -38,10 +38,10 @@ describe HttpStub::Configurer, "when the server is running" do
38
38
 
39
39
  context "and the stub request is made" do
40
40
 
41
- let(:response) { Net::HTTP.get_response(server_host, "/stub_path", server_port) }
41
+ let(:response) { HTTParty.get("#{server_uri}/stub_path") }
42
42
 
43
43
  it "responds with a 404 status code" do
44
- expect(response.code).to eql("404")
44
+ expect(response.code).to eql(404)
45
45
  end
46
46
 
47
47
  end
@@ -53,9 +53,9 @@ describe HttpStub::Configurer, "when the server is running" do
53
53
  let(:configurer) { HttpStub::Examples::ConfigurerWithClassStub.new }
54
54
 
55
55
  it "registers the stub" do
56
- response = Net::HTTP.get_response(server_host, "/a_class_stub", server_port)
56
+ response = HTTParty.get("#{server_uri}/a_class_stub")
57
57
 
58
- expect(response.code).to eql("201")
58
+ expect(response.code).to eql(201)
59
59
  expect(response.body).to eql("Class stub body")
60
60
  end
61
61
 
@@ -67,12 +67,14 @@ describe HttpStub::Configurer, "when the server is running" do
67
67
 
68
68
  context "and the configurer is re-initialized" do
69
69
 
70
- before(:example) { configurer.class.initialize! }
70
+ before(:example) do
71
+ configurer.class.initialize!
72
+ end
71
73
 
72
74
  it "re-establishes the class stub as having priority" do
73
- response = Net::HTTP.get_response(server_host, "/a_class_stub", server_port)
75
+ response = HTTParty.get("#{server_uri}/a_class_stub")
74
76
 
75
- expect(response.code).to eql("201")
77
+ expect(response.code).to eql(201)
76
78
  expect(response.body).to eql("Class stub body")
77
79
  end
78
80
 
@@ -87,16 +89,16 @@ describe HttpStub::Configurer, "when the server is running" do
87
89
  let(:configurer) { HttpStub::Examples::ConfigurerWithComplexInitializer.new }
88
90
 
89
91
  it "registers the activated activator" do
90
- response = Net::HTTP.get_response(server_host, "/activated_during_initialization_stub_path", server_port)
92
+ response = HTTParty.get("#{server_uri}/activated_during_initialization_stub_path")
91
93
 
92
- expect(response.code).to eql("200")
94
+ expect(response.code).to eql(200)
93
95
  expect(response.body).to eql("Activated during initialization body")
94
96
  end
95
97
 
96
98
  it "registers the stub" do
97
- response = Net::HTTP.get_response(server_host, "/stubbed_during_initialization_path", server_port)
99
+ response = HTTParty.get("#{server_uri}/stubbed_during_initialization_path")
98
100
 
99
- expect(response.code).to eql("200")
101
+ expect(response.code).to eql(200)
100
102
  expect(response.body).to eql("Stubbed during initialization body")
101
103
  end
102
104
 
@@ -111,22 +113,22 @@ describe HttpStub::Configurer, "when the server is running" do
111
113
  before(:example) { configurer.recall_stubs! }
112
114
 
113
115
  it "removes the stub registered post-initialization" do
114
- response = Net::HTTP.get_response(server_host, "/another_stub", server_port)
116
+ response = HTTParty.get("#{server_uri}/another_stub")
115
117
 
116
- expect(response.code).to eql("404")
118
+ expect(response.code).to eql(404)
117
119
  end
118
120
 
119
121
  it "retains the activated activator during initialization" do
120
- response = Net::HTTP.get_response(server_host, "/activated_during_initialization_stub_path", server_port)
122
+ response = HTTParty.get("#{server_uri}/activated_during_initialization_stub_path")
121
123
 
122
- expect(response.code).to eql("200")
124
+ expect(response.code).to eql(200)
123
125
  expect(response.body).to eql("Activated during initialization body")
124
126
  end
125
127
 
126
128
  it "retains the stub registered during initialization" do
127
- response = Net::HTTP.get_response(server_host, "/stubbed_during_initialization_path", server_port)
129
+ response = HTTParty.get("#{server_uri}/stubbed_during_initialization_path")
128
130
 
129
- expect(response.code).to eql("200")
131
+ expect(response.code).to eql(200)
130
132
  expect(response.body).to eql("Stubbed during initialization body")
131
133
  end
132
134
 
@@ -148,10 +150,10 @@ describe HttpStub::Configurer, "when the server is running" do
148
150
 
149
151
  context "and that request is made" do
150
152
 
151
- let(:response) { Net::HTTP.get_response(server_host, "/stub_with_status", server_port) }
153
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_status") }
152
154
 
153
155
  it "responds with the stubbed status" do
154
- expect(response.code).to eql("201")
156
+ expect(response.code).to eql(201)
155
157
  end
156
158
 
157
159
  it "replays the stubbed body" do
@@ -166,10 +168,10 @@ describe HttpStub::Configurer, "when the server is running" do
166
168
 
167
169
  context "and the original request is made" do
168
170
 
169
- let(:response) { Net::HTTP.get_response(server_host, "/stub_with_status", server_port) }
171
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_status") }
170
172
 
171
173
  it "responds with a 404 status code" do
172
- expect(response.code).to eql("404")
174
+ expect(response.code).to eql(404)
173
175
  end
174
176
 
175
177
  end
@@ -186,7 +188,7 @@ describe HttpStub::Configurer, "when the server is running" do
186
188
 
187
189
  context "and that request is made" do
188
190
 
189
- let(:response) { Net::HTTP.get_response(server_host, "/stub_without_status", server_port) }
191
+ let(:response) { HTTParty.get("#{server_uri}/stub_without_status") }
190
192
 
191
193
  it "responds with the stubbed body" do
192
194
  expect(response.body).to eql("Stub body")
@@ -202,7 +204,7 @@ describe HttpStub::Configurer, "when the server is running" do
202
204
 
203
205
  context "and a request is made whose uri matches the regular expression" do
204
206
 
205
- let(:response) { Net::HTTP.get_response(server_host, "/match/stub/regexp/$key=value", server_port) }
207
+ let(:response) { HTTParty.get("#{server_uri}/match/stub/regexp/$key=value") }
206
208
 
207
209
  it "responds with the stubbed body" do
208
210
  expect(response.body).to eql("Stub body")
@@ -212,10 +214,10 @@ describe HttpStub::Configurer, "when the server is running" do
212
214
 
213
215
  context "and a request is made whose uri does not match the regular expression" do
214
216
 
215
- let(:response) { Net::HTTP.get_response(server_host, "/stub/no_match/regexp", server_port) }
217
+ let(:response) { HTTParty.get("#{server_uri}/stub/no_match/regexp") }
216
218
 
217
219
  it "responds with a 404 status code" do
218
- expect(response.code).to eql("404")
220
+ expect(response.code).to eql(404)
219
221
  end
220
222
 
221
223
  end
@@ -310,10 +312,10 @@ describe HttpStub::Configurer, "when the server is running" do
310
312
 
311
313
  context "and that request is made" do
312
314
 
313
- let(:response) { Net::HTTP.get_response(server_host, "/stub_with_parameters?key=value", server_port) }
315
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_parameters?key=value") }
314
316
 
315
317
  it "replays the stubbed response" do
316
- expect(response.code).to eql("202")
318
+ expect(response.code).to eql(202)
317
319
  expect(response.body).to eql("Another stub body")
318
320
  end
319
321
 
@@ -321,12 +323,10 @@ describe HttpStub::Configurer, "when the server is running" do
321
323
 
322
324
  context "and a request with different parameters is made" do
323
325
 
324
- let(:response) do
325
- Net::HTTP.get_response(server_host, "/stub_with_parameters?key=another_value", server_port)
326
- end
326
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_parameters?key=another_value") }
327
327
 
328
328
  it "responds with a 404 status code" do
329
- expect(response.code).to eql("404")
329
+ expect(response.code).to eql(404)
330
330
  end
331
331
 
332
332
  end
@@ -344,12 +344,10 @@ describe HttpStub::Configurer, "when the server is running" do
344
344
 
345
345
  context "and a request that matches is made" do
346
346
 
347
- let(:response) do
348
- Net::HTTP.get_response(server_host, "/stub_with_parameters?key=matching_value", server_port)
349
- end
347
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_parameters?key=matching_value") }
350
348
 
351
349
  it "replays the stubbed response" do
352
- expect(response.code).to eql("202")
350
+ expect(response.code).to eql(202)
353
351
  expect(response.body).to eql("Another stub body")
354
352
  end
355
353
 
@@ -357,12 +355,10 @@ describe HttpStub::Configurer, "when the server is running" do
357
355
 
358
356
  context "and a request that does not match is made" do
359
357
 
360
- let(:response) do
361
- Net::HTTP.get_response(server_host, "/stub_with_parameters?key=does_not_match_value", server_port)
362
- end
358
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_parameters?key=does_not_match_value") }
363
359
 
364
360
  it "responds with a 404 status code" do
365
- expect(response.code).to eql("404")
361
+ expect(response.code).to eql(404)
366
362
  end
367
363
 
368
364
  end
@@ -380,10 +376,10 @@ describe HttpStub::Configurer, "when the server is running" do
380
376
 
381
377
  context "and a request that matches is made" do
382
378
 
383
- let(:response) { Net::HTTP.get_response(server_host, "/stub_with_omitted_parameters", server_port) }
379
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_omitted_parameters") }
384
380
 
385
381
  it "replays the stubbed response" do
386
- expect(response.code).to eql("202")
382
+ expect(response.code).to eql(202)
387
383
  expect(response.body).to eql("Omitted parameter stub body")
388
384
  end
389
385
 
@@ -391,12 +387,10 @@ describe HttpStub::Configurer, "when the server is running" do
391
387
 
392
388
  context "and a request that does not match is made" do
393
389
 
394
- let(:response) do
395
- Net::HTTP.get_response(server_host, "/stub_with_omitted_parameters?key=must_be_omitted", server_port)
396
- end
390
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_omitted_parameters?key=must_be_omitted") }
397
391
 
398
392
  it "responds with a 404 status code" do
399
- expect(response.code).to eql("404")
393
+ expect(response.code).to eql(404)
400
394
  end
401
395
 
402
396
  end
@@ -412,10 +406,10 @@ describe HttpStub::Configurer, "when the server is running" do
412
406
 
413
407
  context "and that request is made" do
414
408
 
415
- let(:response) { Net::HTTP.get_response(server_host, "/stub_with_parameters?key=88", server_port) }
409
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_parameters?key=88") }
416
410
 
417
411
  it "replays the stubbed response" do
418
- expect(response.code).to eql("203")
412
+ expect(response.code).to eql(203)
419
413
  expect(response.body).to eql("Body for parameter number")
420
414
  end
421
415
 
@@ -434,12 +428,10 @@ describe HttpStub::Configurer, "when the server is running" do
434
428
 
435
429
  context "and a request that matches is made" do
436
430
 
437
- let(:response) do
438
- Net::HTTP.get_response(server_host, "/stub_with_parameters?key=matching_value", server_port)
439
- end
431
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_parameters?key=matching_value") }
440
432
 
441
433
  it "replays the stubbed response" do
442
- expect(response.code).to eql("202")
434
+ expect(response.code).to eql(202)
443
435
  expect(response.body).to eql("Another stub body")
444
436
  end
445
437
 
@@ -447,12 +439,10 @@ describe HttpStub::Configurer, "when the server is running" do
447
439
 
448
440
  context "and a request that does not match is made" do
449
441
 
450
- let(:response) do
451
- Net::HTTP.get_response(server_host, "/stub_with_parameters?key=does_not_match_value", server_port)
452
- end
442
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_parameters?key=does_not_match_value") }
453
443
 
454
444
  it "responds with a 404 status code" do
455
- expect(response.code).to eql("404")
445
+ expect(response.code).to eql(404)
456
446
  end
457
447
 
458
448
  end
@@ -470,10 +460,10 @@ describe HttpStub::Configurer, "when the server is running" do
470
460
 
471
461
  context "and a request that matches is made" do
472
462
 
473
- let(:response) { Net::HTTP.get_response(server_host, "/stub_with_omitted_parameters", server_port) }
463
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_omitted_parameters") }
474
464
 
475
465
  it "replays the stubbed response" do
476
- expect(response.code).to eql("202")
466
+ expect(response.code).to eql(202)
477
467
  expect(response.body).to eql("Omitted parameter stub body")
478
468
  end
479
469
 
@@ -481,12 +471,10 @@ describe HttpStub::Configurer, "when the server is running" do
481
471
 
482
472
  context "and a request that does not match is made" do
483
473
 
484
- let(:response) do
485
- Net::HTTP.get_response(server_host, "/stub_with_omitted_parameters?key=must_be_omitted", server_port)
486
- end
474
+ let(:response) { HTTParty.get("#{server_uri}/stub_with_omitted_parameters?key=must_be_omitted") }
487
475
 
488
476
  it "responds with a 404 status code" do
489
- expect(response.code).to eql("404")
477
+ expect(response.code).to eql(404)
490
478
  end
491
479
 
492
480
  end
@@ -495,7 +483,7 @@ describe HttpStub::Configurer, "when the server is running" do
495
483
 
496
484
  end
497
485
 
498
- context "that contains triggers" do
486
+ context "that contains triggers with simple response bodies" do
499
487
 
500
488
  let(:triggered_stubs) do
501
489
  (1..3).map do |trigger_number|
@@ -516,12 +504,10 @@ describe HttpStub::Configurer, "when the server is running" do
516
504
 
517
505
  context "and a request is made matching the stub" do
518
506
 
519
- before(:example) do
520
- @stub_with_triggers_response = Net::HTTP.get_response(server_host, "/stub_with_triggers", server_port)
521
- end
507
+ before(:example) { @stub_with_triggers_response = HTTParty.get("#{server_uri}/stub_with_triggers") }
522
508
 
523
509
  it "replays the stubbed response" do
524
- expect(@stub_with_triggers_response.code).to eql("200")
510
+ expect(@stub_with_triggers_response.code).to eql(200)
525
511
  expect(@stub_with_triggers_response.body).to eql("Trigger stub body")
526
512
  end
527
513
 
@@ -529,10 +515,10 @@ describe HttpStub::Configurer, "when the server is running" do
529
515
 
530
516
  context "and then a request matching triggered stub ##{trigger_number} is made" do
531
517
 
532
- let(:response) { Net::HTTP.get_response(server_host, "/triggered_stub_#{trigger_number}", server_port) }
518
+ let(:response) { HTTParty.get("#{server_uri}/triggered_stub_#{trigger_number}") }
533
519
 
534
520
  it "replays the triggered response" do
535
- expect(response.code).to eql("20#{trigger_number}")
521
+ expect(response.code).to eql("20#{trigger_number}".to_i)
536
522
  expect(response.body).to eql("Triggered stub body #{trigger_number}")
537
523
  end
538
524
 
@@ -544,6 +530,91 @@ describe HttpStub::Configurer, "when the server is running" do
544
530
 
545
531
  end
546
532
 
533
+ context "that contains triggers with a mix of file and text responses" do
534
+
535
+ let(:pdf_file_path) { "#{HttpStub::Spec::RESOURCES_DIR}/sample.pdf" }
536
+ let(:pdf_file_trigger) do
537
+ stub_server.build_stub do |stub|
538
+ stub.match_requests("/triggered_stub_pdf_file", method: :get)
539
+ stub.respond_with(
540
+ status: 201,
541
+ headers: { "content-type" => "application/pdf" },
542
+ body: { file: { path: pdf_file_path, name: ::File.basename(pdf_file_path) } }
543
+ )
544
+ end
545
+ end
546
+
547
+ let(:text_body) { "Sample trigger stub body" }
548
+ let(:text_trigger) do
549
+ stub_server.build_stub do |stub|
550
+ stub.match_requests("/triggered_stub_text", method: :get)
551
+ stub.respond_with(status: 202, body: "Sample trigger stub body")
552
+ end
553
+ end
554
+
555
+ let(:txt_file_path) { "#{HttpStub::Spec::RESOURCES_DIR}/sample.txt" }
556
+ let(:txt_file_trigger) do
557
+ stub_server.build_stub do |stub|
558
+ stub.match_requests("/triggered_stub_txt_file", method: :get)
559
+ stub.respond_with(
560
+ status: 203,
561
+ headers: { "content-type" => "text/plain" },
562
+ body: { file: { path: txt_file_path, name: ::File.basename(txt_file_path) } }
563
+ )
564
+ end
565
+ end
566
+
567
+ let(:triggered_stubs) { [ pdf_file_trigger, text_trigger, txt_file_trigger ] }
568
+
569
+ before(:example) do
570
+ stub_server.add_stub! do |stub|
571
+ stub.match_requests("/stub_with_triggers", method: :get)
572
+ stub.respond_with(body: "Trigger stub body")
573
+ stub.trigger(triggered_stubs)
574
+ end
575
+ end
576
+
577
+ context "and a request is made matching the stub" do
578
+
579
+ before(:example) { HTTParty.get("#{server_uri}/stub_with_triggers") }
580
+
581
+ context "and then a request matching a triggered stub returning a PDF file is made" do
582
+
583
+ let(:response) { HTTParty.get("#{server_uri}/triggered_stub_pdf_file") }
584
+
585
+ it "replays the triggered response" do
586
+ expect(response.code).to eql(201)
587
+ assert_response_contains_file(pdf_file_path)
588
+ end
589
+
590
+ end
591
+
592
+ context "and then a request matching a triggered stub returning texrt is made" do
593
+
594
+ let(:response) { HTTParty.get("#{server_uri}/triggered_stub_text") }
595
+
596
+ it "replays the triggered response" do
597
+ expect(response.code).to eql(202)
598
+ expect(response.body).to eql(text_body)
599
+ end
600
+
601
+ end
602
+
603
+ context "and then a request matching a triggered stub returning a text file is made" do
604
+
605
+ let(:response) { HTTParty.get("#{server_uri}/triggered_stub_txt_file") }
606
+
607
+ it "replays the triggered response" do
608
+ expect(response.code).to eql(203)
609
+ expect(response.parsed_response).to eql(::File.read(txt_file_path))
610
+ end
611
+
612
+ end
613
+
614
+ end
615
+
616
+ end
617
+
547
618
  end
548
619
 
549
620
  context "and the configurer contains an on initialize callback" do
@@ -551,9 +622,9 @@ describe HttpStub::Configurer, "when the server is running" do
551
622
  let(:configurer) { HttpStub::Examples::ConfigurerWithInitializeCallback.new }
552
623
 
553
624
  it "executes the callback" do
554
- response = Net::HTTP.get_response(server_host, "/stubbed_on_initialize_path", server_port)
625
+ response = HTTParty.get("#{server_uri}/stubbed_on_initialize_path")
555
626
 
556
- expect(response.code).to eql("200")
627
+ expect(response.code).to eql(200)
557
628
  expect(response.body).to eql("Stubbed on initialize body")
558
629
  end
559
630
 
@@ -571,6 +642,26 @@ describe HttpStub::Configurer, "when the server is running" do
571
642
 
572
643
  end
573
644
 
645
+ context "and the configurer stubs a response with a file body" do
646
+
647
+ let(:configurer) { HttpStub::Examples::ConfigurerWithFileResponse.new }
648
+
649
+ context "and a request that matches is made" do
650
+
651
+ let(:response) { HTTParty.get("#{server_uri}/stub_response_with_file") }
652
+
653
+ it "responds with the configured status code" do
654
+ expect(response.code).to eql(200)
655
+ end
656
+
657
+ it "responds with the file" do
658
+ assert_response_contains_file(HttpStub::Examples::ConfigurerWithFileResponse::FILE_PATH)
659
+ end
660
+
661
+ end
662
+
663
+ end
664
+
574
665
  end
575
666
 
576
667
  context "and the configurer is uninitialized" do
@@ -588,13 +679,13 @@ describe HttpStub::Configurer, "when the server is running" do
588
679
  context "and an attempt is made to register a stub" do
589
680
 
590
681
  before(:example) do
591
- configurer.stub_response!("/some_stub_path", method: :get, response: { body: "Some stub body"})
682
+ configurer.stub_response!("/some_stub_path", method: :get, response: { body: "Some stub body" })
592
683
  end
593
684
 
594
685
  it "registers the stub" do
595
- response = Net::HTTP.get_response(server_host, "/some_stub_path", server_port)
686
+ response = HTTParty.get("#{server_uri}/some_stub_path")
596
687
 
597
- expect(response.code).to eql("200")
688
+ expect(response.code).to eql(200)
598
689
  expect(response.body).to eql("Some stub body")
599
690
  end
600
691
 
@@ -603,14 +694,14 @@ describe HttpStub::Configurer, "when the server is running" do
603
694
  context "and an attempt is made to register a stub with a timeout" do
604
695
 
605
696
  before(:example) do
606
- configurer.stub_response!("/some_stub_path", method: :get, response: {:delay_in_seconds => 2})
697
+ configurer.stub_response!("/some_stub_path", method: :get, response: { delay_in_seconds: 2 })
607
698
  end
608
699
 
609
700
  it "delegates to request pipeline" do
610
701
  before = Time.new
611
702
 
612
- response = Net::HTTP.get_response(server_host, "/some_stub_path", server_port)
613
- expect(response.code).to eql("200")
703
+ response = HTTParty.get("#{server_uri}/some_stub_path")
704
+ expect(response.code).to eql(200)
614
705
 
615
706
  after = Time.now
616
707
 
@@ -629,7 +720,7 @@ describe HttpStub::Configurer, "when the server is running" do
629
720
  end
630
721
 
631
722
  it "registers the stub" do
632
- response = Net::HTTP.get_response("localhost", "/some_stub_path", 8001)
723
+ response = HTTParty.get("#{server_uri}/some_stub_path")
633
724
 
634
725
  expect(response.content_type).to eql("application/xhtml")
635
726
  end
@@ -681,13 +772,21 @@ describe HttpStub::Configurer, "when the server is running" do
681
772
  let(:configurer) { HttpStub::Examples::ConfigurerWithInitializeCallback.new }
682
773
 
683
774
  it "does not execute the callback" do
684
- response = Net::HTTP.get_response(server_host, "/stubbed_on_initialize_path", server_port)
775
+ response = HTTParty.get("#{server_uri}/stubbed_on_initialize_path")
685
776
 
686
- expect(response.code).to eql("404")
777
+ expect(response.code).to eql(404)
687
778
  end
688
779
 
689
780
  end
690
781
 
691
782
  end
692
783
 
784
+ def assert_response_contains_file(path)
785
+ response_file = Tempfile.new(File.basename(path)).tap do |file|
786
+ file.write(response.parsed_response)
787
+ file.flush
788
+ end
789
+ expect(FileUtils.compare_file(path, response_file.path)).to be(true)
790
+ end
791
+
693
792
  end
@@ -1,4 +1,4 @@
1
- describe HttpStub::HashExtensions do
1
+ describe HttpStub::Extensions::Core::Hash do
2
2
 
3
3
  describe "#downcase_and_underscore_keys" do
4
4
 
@@ -17,7 +17,7 @@ describe HttpStub::Rake::ServerDaemonTasks do
17
17
 
18
18
  it "starts a stub server that responds to stub requests" do
19
19
  request = Net::HTTP::Post.new("/stubs")
20
- request.body = { "response" => { "status" => 302, "body" => "Some Body" } }.to_json
20
+ request.body = { response: { status: 302, body: "Some Body" } }.to_json
21
21
 
22
22
  response = Net::HTTP.new("localhost", 8002).start { |http| http.request(request) }
23
23
 
@@ -1,4 +1,4 @@
1
- describe HttpStub::Server, "when the server is running" do
1
+ describe HttpStub::Server::Application, "when the server is running" do
2
2
  include Rack::Utils
3
3
  include_context "server integration"
4
4