pact 1.3.3 → 1.4.0.rc2

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 (110) hide show
  1. data/CHANGELOG.md +16 -1
  2. data/Gemfile +5 -0
  3. data/Gemfile.lock +34 -13
  4. data/README.md +3 -2
  5. data/example/animal-service/lib/animal_service/api.rb +1 -0
  6. data/example/zoo-app/lib/zoo_app/animal_service_client.rb +0 -9
  7. data/example/zoo-app/lib/zoo_app/models/alligator.rb +2 -0
  8. data/lib/pact.rb +6 -5
  9. data/lib/pact/cli.rb +0 -26
  10. data/lib/pact/consumer/configuration.rb +0 -1
  11. data/lib/pact/consumer/configuration/configuration_extensions.rb +51 -0
  12. data/lib/pact/consumer/consumer_contract_builder.rb +1 -2
  13. data/lib/pact/consumer/interaction_builder.rb +2 -4
  14. data/lib/pact/doc/interaction_view_model.rb +9 -6
  15. data/lib/pact/doc/sort_interactions.rb +1 -1
  16. data/lib/pact/provider/rspec.rb +11 -9
  17. data/lib/pact/version.rb +1 -1
  18. data/pact.gemspec +5 -0
  19. data/spec/lib/pact/consumer/interaction_builder_spec.rb +4 -8
  20. data/spec/support/case-insensitive-response-header-matching.json +21 -0
  21. data/spec/support/case-insensitive-response-header-matching.rb +15 -0
  22. data/tasks/pact-test.rake +5 -0
  23. metadata +42 -122
  24. data/lib/pact/configuration.rb +0 -195
  25. data/lib/pact/consumer/app_manager.rb +0 -158
  26. data/lib/pact/consumer/interactions_filter.rb +0 -48
  27. data/lib/pact/consumer/mock_service.rb +0 -2
  28. data/lib/pact/consumer/mock_service/app.rb +0 -82
  29. data/lib/pact/consumer/mock_service/interaction_delete.rb +0 -33
  30. data/lib/pact/consumer/mock_service/interaction_list.rb +0 -76
  31. data/lib/pact/consumer/mock_service/interaction_mismatch.rb +0 -73
  32. data/lib/pact/consumer/mock_service/interaction_post.rb +0 -31
  33. data/lib/pact/consumer/mock_service/interaction_replay.rb +0 -139
  34. data/lib/pact/consumer/mock_service/log_get.rb +0 -28
  35. data/lib/pact/consumer/mock_service/missing_interactions_get.rb +0 -30
  36. data/lib/pact/consumer/mock_service/mock_service_administration_endpoint.rb +0 -31
  37. data/lib/pact/consumer/mock_service/pact_post.rb +0 -33
  38. data/lib/pact/consumer/mock_service/rack_request_helper.rb +0 -51
  39. data/lib/pact/consumer/mock_service/verification_get.rb +0 -68
  40. data/lib/pact/consumer/mock_service_client.rb +0 -65
  41. data/lib/pact/consumer/mock_service_interaction_expectation.rb +0 -37
  42. data/lib/pact/consumer/request.rb +0 -27
  43. data/lib/pact/consumer/server.rb +0 -90
  44. data/lib/pact/consumer_contract.rb +0 -1
  45. data/lib/pact/consumer_contract/consumer_contract.rb +0 -115
  46. data/lib/pact/consumer_contract/consumer_contract_writer.rb +0 -84
  47. data/lib/pact/consumer_contract/file_name.rb +0 -19
  48. data/lib/pact/consumer_contract/headers.rb +0 -51
  49. data/lib/pact/consumer_contract/interaction.rb +0 -67
  50. data/lib/pact/consumer_contract/pact_file.rb +0 -24
  51. data/lib/pact/consumer_contract/request.rb +0 -73
  52. data/lib/pact/consumer_contract/service_consumer.rb +0 -28
  53. data/lib/pact/consumer_contract/service_provider.rb +0 -28
  54. data/lib/pact/logging.rb +0 -14
  55. data/lib/pact/matchers.rb +0 -1
  56. data/lib/pact/matchers/actual_type.rb +0 -16
  57. data/lib/pact/matchers/base_difference.rb +0 -37
  58. data/lib/pact/matchers/differ.rb +0 -153
  59. data/lib/pact/matchers/difference.rb +0 -13
  60. data/lib/pact/matchers/difference_indicator.rb +0 -26
  61. data/lib/pact/matchers/embedded_diff_formatter.rb +0 -62
  62. data/lib/pact/matchers/expected_type.rb +0 -35
  63. data/lib/pact/matchers/index_not_found.rb +0 -15
  64. data/lib/pact/matchers/list_diff_formatter.rb +0 -101
  65. data/lib/pact/matchers/matchers.rb +0 -139
  66. data/lib/pact/matchers/no_diff_indicator.rb +0 -18
  67. data/lib/pact/matchers/regexp_difference.rb +0 -13
  68. data/lib/pact/matchers/type_difference.rb +0 -16
  69. data/lib/pact/matchers/unexpected_index.rb +0 -11
  70. data/lib/pact/matchers/unexpected_key.rb +0 -11
  71. data/lib/pact/matchers/unix_diff_formatter.rb +0 -114
  72. data/lib/pact/reification.rb +0 -28
  73. data/lib/pact/rspec.rb +0 -53
  74. data/lib/pact/shared/active_support_support.rb +0 -51
  75. data/lib/pact/shared/dsl.rb +0 -76
  76. data/lib/pact/shared/jruby_support.rb +0 -18
  77. data/lib/pact/shared/json_differ.rb +0 -15
  78. data/lib/pact/shared/key_not_found.rb +0 -15
  79. data/lib/pact/shared/null_expectation.rb +0 -31
  80. data/lib/pact/shared/request.rb +0 -80
  81. data/lib/pact/shared/text_differ.rb +0 -14
  82. data/lib/pact/something_like.rb +0 -49
  83. data/lib/pact/symbolize_keys.rb +0 -12
  84. data/lib/pact/term.rb +0 -85
  85. data/spec/lib/pact/consumer/request_spec.rb +0 -24
  86. data/spec/lib/pact/consumer_contract/active_support_support_spec.rb +0 -58
  87. data/spec/lib/pact/consumer_contract/consumer_contract_spec.rb +0 -180
  88. data/spec/lib/pact/consumer_contract/headers_spec.rb +0 -107
  89. data/spec/lib/pact/consumer_contract/interaction_spec.rb +0 -107
  90. data/spec/lib/pact/consumer_contract/request_spec.rb +0 -329
  91. data/spec/lib/pact/matchers/differ_spec.rb +0 -214
  92. data/spec/lib/pact/matchers/difference_spec.rb +0 -22
  93. data/spec/lib/pact/matchers/embedded_diff_formatter_spec.rb +0 -90
  94. data/spec/lib/pact/matchers/index_not_found_spec.rb +0 -21
  95. data/spec/lib/pact/matchers/list_diff_formatter_spec.rb +0 -114
  96. data/spec/lib/pact/matchers/matchers_spec.rb +0 -500
  97. data/spec/lib/pact/matchers/regexp_difference_spec.rb +0 -20
  98. data/spec/lib/pact/matchers/type_difference_spec.rb +0 -34
  99. data/spec/lib/pact/matchers/unexpected_index_spec.rb +0 -20
  100. data/spec/lib/pact/matchers/unexpected_key_spec.rb +0 -20
  101. data/spec/lib/pact/matchers/unix_diff_formatter_spec.rb +0 -216
  102. data/spec/lib/pact/reification_spec.rb +0 -67
  103. data/spec/lib/pact/shared/dsl_spec.rb +0 -86
  104. data/spec/lib/pact/shared/json_differ_spec.rb +0 -36
  105. data/spec/lib/pact/shared/key_not_found_spec.rb +0 -20
  106. data/spec/lib/pact/shared/request_spec.rb +0 -111
  107. data/spec/lib/pact/shared/text_differ_spec.rb +0 -54
  108. data/spec/lib/pact/something_like_spec.rb +0 -21
  109. data/spec/lib/pact/term_spec.rb +0 -89
  110. data/spec/support/dsl_spec_support.rb +0 -7
data/lib/pact/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pact
2
- VERSION = "1.3.3"
2
+ VERSION = "1.4.0.rc2"
3
3
  end
data/pact.gemspec CHANGED
@@ -28,6 +28,11 @@ Gem::Specification.new do |gem|
28
28
  gem.add_runtime_dependency 'webrick'
29
29
  gem.add_runtime_dependency 'term-ansicolor', '~> 1.0'
30
30
 
31
+ unless ENV['X_PACT_DEVELOPMENT']
32
+ gem.add_runtime_dependency 'pact-support', '~> 0.0.2'
33
+ gem.add_runtime_dependency 'pact-mock_service', '~> 0.0.1'
34
+ end
35
+
31
36
  gem.add_development_dependency 'rake', '~> 10.0.3'
32
37
  gem.add_development_dependency 'webmock', '~> 1.18.0'
33
38
  gem.add_development_dependency 'pry'
@@ -5,7 +5,7 @@ module Pact
5
5
  module Consumer
6
6
  describe InteractionBuilder do
7
7
 
8
- subject { InteractionBuilder.new }
8
+ subject { InteractionBuilder.new {|interaction|} }
9
9
  let(:interaction) { double('Interaction').as_null_object}
10
10
 
11
11
  before do
@@ -57,7 +57,7 @@ module Pact
57
57
  it "returns itself" do
58
58
  expect(subject.given(nil)).to be(subject)
59
59
  end
60
- end
60
+ end
61
61
 
62
62
  describe "will_respond_with" do
63
63
  let(:response) { {a: 'response'} }
@@ -66,11 +66,7 @@ module Pact
66
66
  double(callback: nil)
67
67
  end
68
68
 
69
- before do
70
- subject.on_interaction_fully_defined do | interaction |
71
- provider.callback interaction
72
- end
73
- end
69
+ subject { InteractionBuilder.new {|interaction| provider.callback interaction } }
74
70
 
75
71
  it "sets the response on the interaction" do
76
72
  expect(interaction).to receive(:response=).with(response)
@@ -84,7 +80,7 @@ module Pact
84
80
  it "invokes the 'on_interaction_fully_defined' callback" do
85
81
  expect(provider).to receive(:callback).with(interaction)
86
82
  subject.will_respond_with response
87
- end
83
+ end
88
84
  end
89
85
  end
90
86
  end
@@ -0,0 +1,21 @@
1
+ {
2
+ "consumer": {
3
+ "name": "an easy consumer"
4
+ },
5
+ "provider": {
6
+ "name": "a provider which returns headers that don't match the expected case"
7
+ },
8
+ "interactions": [
9
+ {
10
+ "description": "a test request",
11
+ "request": {
12
+ "method": "get",
13
+ "path": "/"
14
+ },
15
+ "response": {
16
+ "status": 200,
17
+ "headers": {"Content-Type": "application/hippo"}
18
+ }
19
+ }
20
+ ]
21
+ }
@@ -0,0 +1,15 @@
1
+ module Pact
2
+ module Test
3
+ class CaseInsensitiveResponseHeadersApp
4
+
5
+ def call env
6
+ [200, {'cOnTent-tYpe' => 'application/hippo'},[]]
7
+ end
8
+
9
+ end
10
+ end
11
+ end
12
+
13
+ Pact.service_provider "Provider" do
14
+ app { Pact::Test::CaseInsensitiveResponseHeadersApp.new }
15
+ end
data/tasks/pact-test.rake CHANGED
@@ -22,6 +22,10 @@ Pact::VerificationTask.new(:term) do | pact |
22
22
  pact.uri './spec/support/term.json'
23
23
  end
24
24
 
25
+ Pact::VerificationTask.new(:case_insensitive_response_header_matching) do | pact |
26
+ pact.uri './spec/support/case-insensitive-response-header-matching.json', :pact_helper => './spec/support/case-insensitive-response-header-matching.rb'
27
+ end
28
+
25
29
  RSpec::Core::RakeTask.new('spec:standalone:fail') do | task |
26
30
  task.pattern = FileList["spec/standalone/**/*_fail_test.rb"]
27
31
  end
@@ -55,6 +59,7 @@ namespace :pact do
55
59
  Rake::Task['pact:test:fail'].execute
56
60
  Rake::Task['pact:test:pactfile'].execute
57
61
  Rake::Task['pact:verify:test_app:content_type'].execute
62
+ Rake::Task['pact:verify:case_insensitive_response_header_matching'].execute
58
63
  end
59
64
 
60
65
  desc "All the verification tests with active support loaded"
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
5
- prerelease:
4
+ version: 1.4.0.rc2
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - James Fraser
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2014-09-22 00:00:00.000000000 Z
16
+ date: 2014-10-12 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: randexp
@@ -159,6 +159,38 @@ dependencies:
159
159
  - - ~>
160
160
  - !ruby/object:Gem::Version
161
161
  version: '1.0'
162
+ - !ruby/object:Gem::Dependency
163
+ name: pact-support
164
+ requirement: !ruby/object:Gem::Requirement
165
+ none: false
166
+ requirements:
167
+ - - ~>
168
+ - !ruby/object:Gem::Version
169
+ version: 0.0.2
170
+ type: :runtime
171
+ prerelease: false
172
+ version_requirements: !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - ~>
176
+ - !ruby/object:Gem::Version
177
+ version: 0.0.2
178
+ - !ruby/object:Gem::Dependency
179
+ name: pact-mock_service
180
+ requirement: !ruby/object:Gem::Requirement
181
+ none: false
182
+ requirements:
183
+ - - ~>
184
+ - !ruby/object:Gem::Version
185
+ version: 0.0.1
186
+ type: :runtime
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ none: false
190
+ requirements:
191
+ - - ~>
192
+ - !ruby/object:Gem::Version
193
+ version: 0.0.1
162
194
  - !ruby/object:Gem::Dependency
163
195
  name: rake
164
196
  requirement: !ruby/object:Gem::Requirement
@@ -325,9 +357,7 @@ files:
325
357
  - example/zoo-app/spec/spec_helper.rb
326
358
  - lib/pact.rb
327
359
  - lib/pact/cli.rb
328
- - lib/pact/configuration.rb
329
360
  - lib/pact/consumer.rb
330
- - lib/pact/consumer/app_manager.rb
331
361
  - lib/pact/consumer/configuration.rb
332
362
  - lib/pact/consumer/configuration/configuration_extensions.rb
333
363
  - lib/pact/consumer/configuration/dsl.rb
@@ -337,37 +367,9 @@ files:
337
367
  - lib/pact/consumer/consumer_contract_builder.rb
338
368
  - lib/pact/consumer/consumer_contract_builders.rb
339
369
  - lib/pact/consumer/interaction_builder.rb
340
- - lib/pact/consumer/interactions_filter.rb
341
- - lib/pact/consumer/mock_service.rb
342
- - lib/pact/consumer/mock_service/app.rb
343
- - lib/pact/consumer/mock_service/interaction_delete.rb
344
- - lib/pact/consumer/mock_service/interaction_list.rb
345
- - lib/pact/consumer/mock_service/interaction_mismatch.rb
346
- - lib/pact/consumer/mock_service/interaction_post.rb
347
- - lib/pact/consumer/mock_service/interaction_replay.rb
348
- - lib/pact/consumer/mock_service/log_get.rb
349
- - lib/pact/consumer/mock_service/missing_interactions_get.rb
350
- - lib/pact/consumer/mock_service/mock_service_administration_endpoint.rb
351
- - lib/pact/consumer/mock_service/pact_post.rb
352
- - lib/pact/consumer/mock_service/rack_request_helper.rb
353
- - lib/pact/consumer/mock_service/verification_get.rb
354
- - lib/pact/consumer/mock_service_client.rb
355
- - lib/pact/consumer/mock_service_interaction_expectation.rb
356
- - lib/pact/consumer/request.rb
357
370
  - lib/pact/consumer/rspec.rb
358
- - lib/pact/consumer/server.rb
359
371
  - lib/pact/consumer/spec_hooks.rb
360
372
  - lib/pact/consumer/world.rb
361
- - lib/pact/consumer_contract.rb
362
- - lib/pact/consumer_contract/consumer_contract.rb
363
- - lib/pact/consumer_contract/consumer_contract_writer.rb
364
- - lib/pact/consumer_contract/file_name.rb
365
- - lib/pact/consumer_contract/headers.rb
366
- - lib/pact/consumer_contract/interaction.rb
367
- - lib/pact/consumer_contract/pact_file.rb
368
- - lib/pact/consumer_contract/request.rb
369
- - lib/pact/consumer_contract/service_consumer.rb
370
- - lib/pact/consumer_contract/service_provider.rb
371
373
  - lib/pact/doc/doc_file.rb
372
374
  - lib/pact/doc/generate.rb
373
375
  - lib/pact/doc/generator.rb
@@ -378,24 +380,6 @@ files:
378
380
  - lib/pact/doc/markdown/interaction.erb
379
381
  - lib/pact/doc/markdown/interaction_renderer.rb
380
382
  - lib/pact/doc/sort_interactions.rb
381
- - lib/pact/logging.rb
382
- - lib/pact/matchers.rb
383
- - lib/pact/matchers/actual_type.rb
384
- - lib/pact/matchers/base_difference.rb
385
- - lib/pact/matchers/differ.rb
386
- - lib/pact/matchers/difference.rb
387
- - lib/pact/matchers/difference_indicator.rb
388
- - lib/pact/matchers/embedded_diff_formatter.rb
389
- - lib/pact/matchers/expected_type.rb
390
- - lib/pact/matchers/index_not_found.rb
391
- - lib/pact/matchers/list_diff_formatter.rb
392
- - lib/pact/matchers/matchers.rb
393
- - lib/pact/matchers/no_diff_indicator.rb
394
- - lib/pact/matchers/regexp_difference.rb
395
- - lib/pact/matchers/type_difference.rb
396
- - lib/pact/matchers/unexpected_index.rb
397
- - lib/pact/matchers/unexpected_key.rb
398
- - lib/pact/matchers/unix_diff_formatter.rb
399
383
  - lib/pact/project_root.rb
400
384
  - lib/pact/provider.rb
401
385
  - lib/pact/provider/configuration.rb
@@ -424,23 +408,10 @@ files:
424
408
  - lib/pact/provider/test_methods.rb
425
409
  - lib/pact/provider/verification_report.rb
426
410
  - lib/pact/provider/world.rb
427
- - lib/pact/reification.rb
428
- - lib/pact/rspec.rb
429
- - lib/pact/shared/active_support_support.rb
430
- - lib/pact/shared/dsl.rb
431
- - lib/pact/shared/jruby_support.rb
432
- - lib/pact/shared/json_differ.rb
433
- - lib/pact/shared/key_not_found.rb
434
- - lib/pact/shared/null_expectation.rb
435
- - lib/pact/shared/request.rb
436
- - lib/pact/shared/text_differ.rb
437
- - lib/pact/something_like.rb
438
- - lib/pact/symbolize_keys.rb
439
411
  - lib/pact/tasks.rb
440
412
  - lib/pact/tasks/task_helper.rb
441
413
  - lib/pact/tasks/verification_task.rb
442
414
  - lib/pact/templates/provider_state.erb
443
- - lib/pact/term.rb
444
415
  - lib/pact/version.rb
445
416
  - lib/tasks/pact.rake
446
417
  - pact.gemspec
@@ -466,29 +437,12 @@ files:
466
437
  - spec/lib/pact/consumer/mock_service/verification_get_spec.rb
467
438
  - spec/lib/pact/consumer/mock_service_client_spec.rb
468
439
  - spec/lib/pact/consumer/mock_service_interaction_expectation_spec.rb
469
- - spec/lib/pact/consumer/request_spec.rb
470
440
  - spec/lib/pact/consumer/service_consumer_spec.rb
471
- - spec/lib/pact/consumer_contract/active_support_support_spec.rb
472
- - spec/lib/pact/consumer_contract/consumer_contract_spec.rb
473
441
  - spec/lib/pact/consumer_contract/consumer_contract_writer_spec.rb
474
- - spec/lib/pact/consumer_contract/headers_spec.rb
475
- - spec/lib/pact/consumer_contract/interaction_spec.rb
476
- - spec/lib/pact/consumer_contract/request_spec.rb
477
442
  - spec/lib/pact/doc/generator_spec.rb
478
443
  - spec/lib/pact/doc/interaction_view_model_spec.rb
479
444
  - spec/lib/pact/doc/markdown/consumer_contract_renderer_spec.rb
480
445
  - spec/lib/pact/doc/markdown/index_renderer_spec.rb
481
- - spec/lib/pact/matchers/differ_spec.rb
482
- - spec/lib/pact/matchers/difference_spec.rb
483
- - spec/lib/pact/matchers/embedded_diff_formatter_spec.rb
484
- - spec/lib/pact/matchers/index_not_found_spec.rb
485
- - spec/lib/pact/matchers/list_diff_formatter_spec.rb
486
- - spec/lib/pact/matchers/matchers_spec.rb
487
- - spec/lib/pact/matchers/regexp_difference_spec.rb
488
- - spec/lib/pact/matchers/type_difference_spec.rb
489
- - spec/lib/pact/matchers/unexpected_index_spec.rb
490
- - spec/lib/pact/matchers/unexpected_key_spec.rb
491
- - spec/lib/pact/matchers/unix_diff_formatter_spec.rb
492
446
  - spec/lib/pact/provider/configuration/configuration_extension_spec.rb
493
447
  - spec/lib/pact/provider/configuration/pact_verification_spec.rb
494
448
  - spec/lib/pact/provider/configuration/service_provider_config_spec.rb
@@ -505,16 +459,8 @@ files:
505
459
  - spec/lib/pact/provider/state/provider_state_proxy_spec.rb
506
460
  - spec/lib/pact/provider/state/provider_state_spec.rb
507
461
  - spec/lib/pact/provider/world_spec.rb
508
- - spec/lib/pact/reification_spec.rb
509
- - spec/lib/pact/shared/dsl_spec.rb
510
- - spec/lib/pact/shared/json_differ_spec.rb
511
- - spec/lib/pact/shared/key_not_found_spec.rb
512
- - spec/lib/pact/shared/request_spec.rb
513
- - spec/lib/pact/shared/text_differ_spec.rb
514
- - spec/lib/pact/something_like_spec.rb
515
462
  - spec/lib/pact/tasks/task_helper_spec.rb
516
463
  - spec/lib/pact/tasks/verification_task_spec.rb
517
- - spec/lib/pact/term_spec.rb
518
464
  - spec/pact_specification/compliance-1.0.0.rb
519
465
  - spec/spec_helper.rb
520
466
  - spec/standalone/consumer_fail_test.rb
@@ -523,8 +469,9 @@ files:
523
469
  - spec/support/a_consumer-a_provider.json
524
470
  - spec/support/active_support_if_configured.rb
525
471
  - spec/support/app_for_config_ru.rb
472
+ - spec/support/case-insensitive-response-header-matching.json
473
+ - spec/support/case-insensitive-response-header-matching.rb
526
474
  - spec/support/consumer_contract_template.json
527
- - spec/support/dsl_spec_support.rb
528
475
  - spec/support/factories.rb
529
476
  - spec/support/generated_index.md
530
477
  - spec/support/generated_markdown.md
@@ -560,16 +507,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
560
507
  version: '0'
561
508
  segments:
562
509
  - 0
563
- hash: 3250914731854232740
510
+ hash: 2508150550724999576
564
511
  required_rubygems_version: !ruby/object:Gem::Requirement
565
512
  none: false
566
513
  requirements:
567
- - - ! '>='
514
+ - - ! '>'
568
515
  - !ruby/object:Gem::Version
569
- version: '0'
570
- segments:
571
- - 0
572
- hash: 3250914731854232740
516
+ version: 1.3.1
573
517
  requirements: []
574
518
  rubyforge_project:
575
519
  rubygems_version: 1.8.23
@@ -600,29 +544,12 @@ test_files:
600
544
  - spec/lib/pact/consumer/mock_service/verification_get_spec.rb
601
545
  - spec/lib/pact/consumer/mock_service_client_spec.rb
602
546
  - spec/lib/pact/consumer/mock_service_interaction_expectation_spec.rb
603
- - spec/lib/pact/consumer/request_spec.rb
604
547
  - spec/lib/pact/consumer/service_consumer_spec.rb
605
- - spec/lib/pact/consumer_contract/active_support_support_spec.rb
606
- - spec/lib/pact/consumer_contract/consumer_contract_spec.rb
607
548
  - spec/lib/pact/consumer_contract/consumer_contract_writer_spec.rb
608
- - spec/lib/pact/consumer_contract/headers_spec.rb
609
- - spec/lib/pact/consumer_contract/interaction_spec.rb
610
- - spec/lib/pact/consumer_contract/request_spec.rb
611
549
  - spec/lib/pact/doc/generator_spec.rb
612
550
  - spec/lib/pact/doc/interaction_view_model_spec.rb
613
551
  - spec/lib/pact/doc/markdown/consumer_contract_renderer_spec.rb
614
552
  - spec/lib/pact/doc/markdown/index_renderer_spec.rb
615
- - spec/lib/pact/matchers/differ_spec.rb
616
- - spec/lib/pact/matchers/difference_spec.rb
617
- - spec/lib/pact/matchers/embedded_diff_formatter_spec.rb
618
- - spec/lib/pact/matchers/index_not_found_spec.rb
619
- - spec/lib/pact/matchers/list_diff_formatter_spec.rb
620
- - spec/lib/pact/matchers/matchers_spec.rb
621
- - spec/lib/pact/matchers/regexp_difference_spec.rb
622
- - spec/lib/pact/matchers/type_difference_spec.rb
623
- - spec/lib/pact/matchers/unexpected_index_spec.rb
624
- - spec/lib/pact/matchers/unexpected_key_spec.rb
625
- - spec/lib/pact/matchers/unix_diff_formatter_spec.rb
626
553
  - spec/lib/pact/provider/configuration/configuration_extension_spec.rb
627
554
  - spec/lib/pact/provider/configuration/pact_verification_spec.rb
628
555
  - spec/lib/pact/provider/configuration/service_provider_config_spec.rb
@@ -639,16 +566,8 @@ test_files:
639
566
  - spec/lib/pact/provider/state/provider_state_proxy_spec.rb
640
567
  - spec/lib/pact/provider/state/provider_state_spec.rb
641
568
  - spec/lib/pact/provider/world_spec.rb
642
- - spec/lib/pact/reification_spec.rb
643
- - spec/lib/pact/shared/dsl_spec.rb
644
- - spec/lib/pact/shared/json_differ_spec.rb
645
- - spec/lib/pact/shared/key_not_found_spec.rb
646
- - spec/lib/pact/shared/request_spec.rb
647
- - spec/lib/pact/shared/text_differ_spec.rb
648
- - spec/lib/pact/something_like_spec.rb
649
569
  - spec/lib/pact/tasks/task_helper_spec.rb
650
570
  - spec/lib/pact/tasks/verification_task_spec.rb
651
- - spec/lib/pact/term_spec.rb
652
571
  - spec/pact_specification/compliance-1.0.0.rb
653
572
  - spec/spec_helper.rb
654
573
  - spec/standalone/consumer_fail_test.rb
@@ -657,8 +576,9 @@ test_files:
657
576
  - spec/support/a_consumer-a_provider.json
658
577
  - spec/support/active_support_if_configured.rb
659
578
  - spec/support/app_for_config_ru.rb
579
+ - spec/support/case-insensitive-response-header-matching.json
580
+ - spec/support/case-insensitive-response-header-matching.rb
660
581
  - spec/support/consumer_contract_template.json
661
- - spec/support/dsl_spec_support.rb
662
582
  - spec/support/factories.rb
663
583
  - spec/support/generated_index.md
664
584
  - spec/support/generated_markdown.md
@@ -1,195 +0,0 @@
1
- require 'ostruct'
2
- require 'logger'
3
- require 'pact/doc/markdown/generator'
4
- require 'pact/matchers/unix_diff_formatter'
5
- require 'pact/matchers/embedded_diff_formatter'
6
- require 'pact/matchers/list_diff_formatter'
7
- require 'pact/shared/json_differ'
8
- require 'pact/shared/text_differ'
9
-
10
- module Pact
11
-
12
- class Configuration
13
-
14
- DOC_GENERATORS = { markdown: Pact::Doc::Markdown::Generator }
15
-
16
- DIFF_FORMATTERS = {
17
- :embedded => Pact::Matchers::EmbeddedDiffFormatter,
18
- :unix => Pact::Matchers::UnixDiffFormatter,
19
- :list => Pact::Matchers::ListDiffFormatter
20
- }
21
-
22
-
23
- class NilMatcher
24
- def self.=~ other
25
- other == nil ? 0 : nil
26
- end
27
- end
28
-
29
- DIFF_FORMATTER_REGISTRATIONS = [
30
- [/.*/, Pact::Matchers::UnixDiffFormatter],
31
- [NilMatcher, Pact::Matchers::UnixDiffFormatter]
32
- ]
33
-
34
- DIFFERS = [
35
- [/json/, Pact::JsonDiffer],
36
- [NilMatcher, Pact::TextDiffer],
37
- [/.*/, Pact::TextDiffer]
38
- ]
39
-
40
-
41
- DEFAULT_DIFFER = Pact::TextDiffer
42
-
43
- attr_accessor :pact_dir
44
- attr_accessor :log_dir
45
- attr_accessor :doc_dir
46
- attr_accessor :reports_dir
47
- attr_writer :logger
48
- attr_accessor :tmp_dir
49
- attr_writer :pactfile_write_mode
50
-
51
- attr_accessor :error_stream
52
- attr_accessor :output_stream
53
-
54
- def self.default_configuration
55
- c = Configuration.new
56
- c.pact_dir = File.expand_path('./spec/pacts')
57
- c.tmp_dir = File.expand_path('./tmp/pacts')
58
- c.log_dir = default_log_dir
59
- c.pactfile_write_mode = :overwrite
60
- c.reports_dir = File.expand_path('./reports/pacts')
61
- c.doc_dir = File.expand_path("./doc/pacts")
62
- c.output_stream = $stdout
63
- c.error_stream = $stderr
64
- c
65
- end
66
-
67
- def initialize
68
- @differ_registrations = []
69
- @diff_formatter_registrations = []
70
- end
71
-
72
- def logger
73
- @logger ||= create_logger
74
- end
75
-
76
- def doc_generator= doc_generator
77
- doc_generators << begin
78
- if DOC_GENERATORS[doc_generator]
79
- DOC_GENERATORS[doc_generator]
80
- elsif doc_generator.respond_to?(:call)
81
- doc_generator
82
- else
83
- raise "Pact.configuration.doc_generator needs to respond to call, or be in the preconfigured list: #{DOC_GENERATORS.keys}"
84
- end
85
- end
86
- end
87
-
88
- def doc_generators
89
- @doc_generators ||= []
90
- end
91
-
92
- # Should this be deprecated in favour of register_diff_formatter???
93
- def diff_formatter= diff_formatter
94
- register_diff_formatter /.*/, diff_formatter
95
- register_diff_formatter nil, diff_formatter
96
- end
97
-
98
- def register_diff_formatter content_type, diff_formatter
99
- key = content_type_regexp_for content_type
100
- @diff_formatter_registrations << [key, diff_formatter_for(diff_formatter)]
101
- end
102
-
103
- def diff_formatter_for_content_type content_type
104
- diff_formatter_registrations.find{ | registration | registration.first =~ content_type }.last
105
- end
106
-
107
- def register_body_differ content_type, differ
108
- key = content_type_regexp_for content_type
109
- validate_differ differ
110
- @differ_registrations << [key, differ]
111
- end
112
-
113
- def body_differ_for_content_type content_type
114
- differ_registrations.find{ | registration | registration.first =~ content_type }.last
115
- end
116
-
117
- def log_path
118
- log_dir + "/pact.log"
119
- end
120
-
121
- def pactfile_write_mode
122
- if @pactfile_write_mode == :smart
123
- is_rake_running? ? :overwrite : :update
124
- else
125
- @pactfile_write_mode
126
- end
127
- end
128
-
129
- private
130
-
131
- def diff_formatter_for input
132
- if DIFF_FORMATTERS[input]
133
- DIFF_FORMATTERS[input]
134
- elsif input.respond_to?(:call)
135
- input
136
- else
137
- raise "Pact diff_formatter needs to respond to call, or be in the preconfigured list: #{DIFF_FORMATTERS.keys}"
138
- end
139
- end
140
-
141
- def validate_differ differ
142
- if !differ.respond_to?(:call)
143
- raise "Pact.configuration.register_body_differ expects a differ that is a lamda or a class/object that responds to call."
144
- end
145
- end
146
-
147
- def content_type_regexp_for content_type
148
- case content_type
149
- when String then Regexp.new(/^#{Regexp.escape(content_type)}$/)
150
- when Regexp then content_type
151
- when nil then NilMatcher
152
- else
153
- raise "Invalid content type used to register a differ (#{content_type.inspect}). Please use a Regexp or a String."
154
- end
155
- end
156
-
157
- def differ_registrations
158
- @differ_registrations + DIFFERS
159
- end
160
-
161
- def diff_formatter_registrations
162
- @diff_formatter_registrations + DIFF_FORMATTER_REGISTRATIONS
163
- end
164
-
165
- def self.default_log_dir
166
- File.expand_path("./log")
167
- end
168
-
169
- #Would love a better way of determining this! It sure won't work on windows.
170
- def is_rake_running?
171
- `ps -ef | grep rake | grep #{Process.ppid} | grep -v 'grep'`.size > 0
172
- end
173
-
174
- def create_logger
175
- FileUtils::mkdir_p log_dir
176
- logger = Logger.new(log_path)
177
- logger.level = Logger::DEBUG
178
- logger
179
- end
180
- end
181
-
182
- def self.configuration
183
- @configuration ||= Configuration.default_configuration
184
- end
185
-
186
- def self.configure
187
- yield configuration
188
- FileUtils::mkdir_p configuration.tmp_dir
189
- end
190
-
191
- def self.clear_configuration
192
- @configuration = nil
193
- end
194
-
195
- end