pact 1.3.3 → 1.4.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 (212) hide show
  1. data/CHANGELOG.md +37 -1
  2. data/lib/pact/cli.rb +0 -26
  3. data/lib/pact/consumer/configuration/configuration_extensions.rb +51 -0
  4. data/lib/pact/consumer/configuration/mock_service.rb +2 -1
  5. data/lib/pact/consumer/configuration.rb +0 -1
  6. data/lib/pact/consumer/consumer_contract_builder.rb +3 -3
  7. data/lib/pact/consumer/interaction_builder.rb +3 -5
  8. data/lib/pact/doc/interaction_view_model.rb +9 -6
  9. data/lib/pact/doc/sort_interactions.rb +1 -1
  10. data/lib/pact/provider/configuration/configuration_extension.rb +0 -9
  11. data/lib/pact/provider/rspec.rb +11 -9
  12. data/lib/pact/version.rb +1 -1
  13. data/lib/pact.rb +6 -5
  14. data/pact.gemspec +6 -2
  15. metadata +57 -304
  16. data/.gitignore +0 -29
  17. data/.rspec +0 -2
  18. data/.ruby-version +0 -1
  19. data/.travis.yml +0 -8
  20. data/Gemfile +0 -4
  21. data/Gemfile.lock +0 -86
  22. data/README.md +0 -313
  23. data/Rakefile +0 -9
  24. data/config.ru +0 -3
  25. data/documentation/README.md +0 -13
  26. data/documentation/configuration.md +0 -166
  27. data/documentation/diff_formatter_embedded.png +0 -0
  28. data/documentation/diff_formatter_list.png +0 -0
  29. data/documentation/diff_formatter_unix.png +0 -0
  30. data/example/animal-service/Gemfile +0 -14
  31. data/example/animal-service/Gemfile.lock +0 -69
  32. data/example/animal-service/Rakefile +0 -5
  33. data/example/animal-service/config.ru +0 -3
  34. data/example/animal-service/db/animal_db.sqlite3 +0 -0
  35. data/example/animal-service/lib/animal_service/animal_repository.rb +0 -12
  36. data/example/animal-service/lib/animal_service/api.rb +0 -28
  37. data/example/animal-service/lib/animal_service/db.rb +0 -5
  38. data/example/animal-service/spec/service_consumers/pact_helper.rb +0 -11
  39. data/example/animal-service/spec/service_consumers/provider_states_for_zoo_app.rb +0 -26
  40. data/example/zoo-app/Gemfile +0 -12
  41. data/example/zoo-app/Gemfile.lock +0 -63
  42. data/example/zoo-app/Rakefile +0 -5
  43. data/example/zoo-app/doc/pacts/markdown/README.md +0 -3
  44. data/example/zoo-app/doc/pacts/markdown/Zoo App - Animal Service.md +0 -75
  45. data/example/zoo-app/lib/zoo_app/animal_service_client.rb +0 -40
  46. data/example/zoo-app/lib/zoo_app/models/alligator.rb +0 -15
  47. data/example/zoo-app/spec/pacts/zoo_app-animal_service.json +0 -67
  48. data/example/zoo-app/spec/service_providers/animal_service_client_spec.rb +0 -71
  49. data/example/zoo-app/spec/service_providers/pact_helper.rb +0 -15
  50. data/example/zoo-app/spec/spec_helper.rb +0 -6
  51. data/lib/pact/configuration.rb +0 -195
  52. data/lib/pact/consumer/app_manager.rb +0 -158
  53. data/lib/pact/consumer/interactions_filter.rb +0 -48
  54. data/lib/pact/consumer/mock_service/app.rb +0 -82
  55. data/lib/pact/consumer/mock_service/interaction_delete.rb +0 -33
  56. data/lib/pact/consumer/mock_service/interaction_list.rb +0 -76
  57. data/lib/pact/consumer/mock_service/interaction_mismatch.rb +0 -73
  58. data/lib/pact/consumer/mock_service/interaction_post.rb +0 -31
  59. data/lib/pact/consumer/mock_service/interaction_replay.rb +0 -139
  60. data/lib/pact/consumer/mock_service/log_get.rb +0 -28
  61. data/lib/pact/consumer/mock_service/missing_interactions_get.rb +0 -30
  62. data/lib/pact/consumer/mock_service/mock_service_administration_endpoint.rb +0 -31
  63. data/lib/pact/consumer/mock_service/pact_post.rb +0 -33
  64. data/lib/pact/consumer/mock_service/rack_request_helper.rb +0 -51
  65. data/lib/pact/consumer/mock_service/verification_get.rb +0 -68
  66. data/lib/pact/consumer/mock_service.rb +0 -2
  67. data/lib/pact/consumer/mock_service_client.rb +0 -65
  68. data/lib/pact/consumer/mock_service_interaction_expectation.rb +0 -37
  69. data/lib/pact/consumer/request.rb +0 -27
  70. data/lib/pact/consumer/server.rb +0 -90
  71. data/lib/pact/consumer_contract/consumer_contract.rb +0 -115
  72. data/lib/pact/consumer_contract/consumer_contract_writer.rb +0 -84
  73. data/lib/pact/consumer_contract/file_name.rb +0 -19
  74. data/lib/pact/consumer_contract/headers.rb +0 -51
  75. data/lib/pact/consumer_contract/interaction.rb +0 -67
  76. data/lib/pact/consumer_contract/pact_file.rb +0 -24
  77. data/lib/pact/consumer_contract/request.rb +0 -73
  78. data/lib/pact/consumer_contract/service_consumer.rb +0 -28
  79. data/lib/pact/consumer_contract/service_provider.rb +0 -28
  80. data/lib/pact/consumer_contract.rb +0 -1
  81. data/lib/pact/logging.rb +0 -14
  82. data/lib/pact/matchers/actual_type.rb +0 -16
  83. data/lib/pact/matchers/base_difference.rb +0 -37
  84. data/lib/pact/matchers/differ.rb +0 -153
  85. data/lib/pact/matchers/difference.rb +0 -13
  86. data/lib/pact/matchers/difference_indicator.rb +0 -26
  87. data/lib/pact/matchers/embedded_diff_formatter.rb +0 -62
  88. data/lib/pact/matchers/expected_type.rb +0 -35
  89. data/lib/pact/matchers/index_not_found.rb +0 -15
  90. data/lib/pact/matchers/list_diff_formatter.rb +0 -101
  91. data/lib/pact/matchers/matchers.rb +0 -139
  92. data/lib/pact/matchers/no_diff_indicator.rb +0 -18
  93. data/lib/pact/matchers/regexp_difference.rb +0 -13
  94. data/lib/pact/matchers/type_difference.rb +0 -16
  95. data/lib/pact/matchers/unexpected_index.rb +0 -11
  96. data/lib/pact/matchers/unexpected_key.rb +0 -11
  97. data/lib/pact/matchers/unix_diff_formatter.rb +0 -114
  98. data/lib/pact/matchers.rb +0 -1
  99. data/lib/pact/reification.rb +0 -28
  100. data/lib/pact/rspec.rb +0 -53
  101. data/lib/pact/shared/active_support_support.rb +0 -51
  102. data/lib/pact/shared/dsl.rb +0 -76
  103. data/lib/pact/shared/jruby_support.rb +0 -18
  104. data/lib/pact/shared/json_differ.rb +0 -15
  105. data/lib/pact/shared/key_not_found.rb +0 -15
  106. data/lib/pact/shared/null_expectation.rb +0 -31
  107. data/lib/pact/shared/request.rb +0 -80
  108. data/lib/pact/shared/text_differ.rb +0 -14
  109. data/lib/pact/something_like.rb +0 -49
  110. data/lib/pact/symbolize_keys.rb +0 -12
  111. data/lib/pact/term.rb +0 -85
  112. data/scratchpad.rb +0 -52
  113. data/spec/features/consumption_spec.rb +0 -114
  114. data/spec/features/production_spec.rb +0 -155
  115. data/spec/features/provider_states/zebras.rb +0 -28
  116. data/spec/integration/consumer_spec.rb +0 -212
  117. data/spec/integration/pact/consumer_configuration_spec.rb +0 -66
  118. data/spec/integration/pact/provider_configuration_spec.rb +0 -25
  119. data/spec/lib/pact/cli_spec.rb +0 -47
  120. data/spec/lib/pact/configuration_spec.rb +0 -297
  121. data/spec/lib/pact/consumer/app_manager_spec.rb +0 -41
  122. data/spec/lib/pact/consumer/configuration_spec.rb +0 -57
  123. data/spec/lib/pact/consumer/consumer_contract_builder_spec.rb +0 -69
  124. data/spec/lib/pact/consumer/interaction_builder_spec.rb +0 -91
  125. data/spec/lib/pact/consumer/interactions_spec.rb +0 -64
  126. data/spec/lib/pact/consumer/mock_service/app_spec.rb +0 -52
  127. data/spec/lib/pact/consumer/mock_service/interaction_list_spec.rb +0 -78
  128. data/spec/lib/pact/consumer/mock_service/interaction_mismatch_spec.rb +0 -70
  129. data/spec/lib/pact/consumer/mock_service/interaction_replay_spec.rb +0 -12
  130. data/spec/lib/pact/consumer/mock_service/rack_request_helper_spec.rb +0 -88
  131. data/spec/lib/pact/consumer/mock_service/verification_get_spec.rb +0 -142
  132. data/spec/lib/pact/consumer/mock_service_client_spec.rb +0 -88
  133. data/spec/lib/pact/consumer/mock_service_interaction_expectation_spec.rb +0 -54
  134. data/spec/lib/pact/consumer/request_spec.rb +0 -24
  135. data/spec/lib/pact/consumer/service_consumer_spec.rb +0 -11
  136. data/spec/lib/pact/consumer_contract/active_support_support_spec.rb +0 -58
  137. data/spec/lib/pact/consumer_contract/consumer_contract_spec.rb +0 -180
  138. data/spec/lib/pact/consumer_contract/consumer_contract_writer_spec.rb +0 -111
  139. data/spec/lib/pact/consumer_contract/headers_spec.rb +0 -107
  140. data/spec/lib/pact/consumer_contract/interaction_spec.rb +0 -107
  141. data/spec/lib/pact/consumer_contract/request_spec.rb +0 -329
  142. data/spec/lib/pact/doc/generator_spec.rb +0 -84
  143. data/spec/lib/pact/doc/interaction_view_model_spec.rb +0 -132
  144. data/spec/lib/pact/doc/markdown/consumer_contract_renderer_spec.rb +0 -29
  145. data/spec/lib/pact/doc/markdown/index_renderer_spec.rb +0 -29
  146. data/spec/lib/pact/matchers/differ_spec.rb +0 -214
  147. data/spec/lib/pact/matchers/difference_spec.rb +0 -22
  148. data/spec/lib/pact/matchers/embedded_diff_formatter_spec.rb +0 -90
  149. data/spec/lib/pact/matchers/index_not_found_spec.rb +0 -21
  150. data/spec/lib/pact/matchers/list_diff_formatter_spec.rb +0 -114
  151. data/spec/lib/pact/matchers/matchers_spec.rb +0 -500
  152. data/spec/lib/pact/matchers/regexp_difference_spec.rb +0 -20
  153. data/spec/lib/pact/matchers/type_difference_spec.rb +0 -34
  154. data/spec/lib/pact/matchers/unexpected_index_spec.rb +0 -20
  155. data/spec/lib/pact/matchers/unexpected_key_spec.rb +0 -20
  156. data/spec/lib/pact/matchers/unix_diff_formatter_spec.rb +0 -216
  157. data/spec/lib/pact/provider/configuration/configuration_extension_spec.rb +0 -30
  158. data/spec/lib/pact/provider/configuration/pact_verification_spec.rb +0 -43
  159. data/spec/lib/pact/provider/configuration/service_provider_config_spec.rb +0 -21
  160. data/spec/lib/pact/provider/configuration/service_provider_dsl_spec.rb +0 -108
  161. data/spec/lib/pact/provider/configuration_spec.rb +0 -50
  162. data/spec/lib/pact/provider/matchers/messages_spec.rb +0 -116
  163. data/spec/lib/pact/provider/pact_helper_locator_spec.rb +0 -54
  164. data/spec/lib/pact/provider/print_missing_provider_states_spec.rb +0 -19
  165. data/spec/lib/pact/provider/request_spec.rb +0 -78
  166. data/spec/lib/pact/provider/rspec/formatter_rspec_2_spec.rb +0 -68
  167. data/spec/lib/pact/provider/rspec/formatter_rspec_3_spec.rb +0 -72
  168. data/spec/lib/pact/provider/rspec_spec.rb +0 -55
  169. data/spec/lib/pact/provider/state/provider_state_manager_spec.rb +0 -89
  170. data/spec/lib/pact/provider/state/provider_state_proxy_spec.rb +0 -80
  171. data/spec/lib/pact/provider/state/provider_state_spec.rb +0 -213
  172. data/spec/lib/pact/provider/world_spec.rb +0 -41
  173. data/spec/lib/pact/reification_spec.rb +0 -67
  174. data/spec/lib/pact/shared/dsl_spec.rb +0 -86
  175. data/spec/lib/pact/shared/json_differ_spec.rb +0 -36
  176. data/spec/lib/pact/shared/key_not_found_spec.rb +0 -20
  177. data/spec/lib/pact/shared/request_spec.rb +0 -111
  178. data/spec/lib/pact/shared/text_differ_spec.rb +0 -54
  179. data/spec/lib/pact/something_like_spec.rb +0 -21
  180. data/spec/lib/pact/tasks/task_helper_spec.rb +0 -74
  181. data/spec/lib/pact/tasks/verification_task_spec.rb +0 -75
  182. data/spec/lib/pact/term_spec.rb +0 -89
  183. data/spec/pact_specification/compliance-1.0.0.rb +0 -47
  184. data/spec/spec_helper.rb +0 -22
  185. data/spec/standalone/consumer_fail_test.rb +0 -55
  186. data/spec/standalone/consumer_pass_test.rb +0 -51
  187. data/spec/support/a_consumer-a_producer.json +0 -32
  188. data/spec/support/a_consumer-a_provider.json +0 -32
  189. data/spec/support/active_support_if_configured.rb +0 -6
  190. data/spec/support/app_for_config_ru.rb +0 -4
  191. data/spec/support/consumer_contract_template.json +0 -24
  192. data/spec/support/dsl_spec_support.rb +0 -7
  193. data/spec/support/factories.rb +0 -82
  194. data/spec/support/generated_index.md +0 -4
  195. data/spec/support/generated_markdown.md +0 -55
  196. data/spec/support/interaction_view_model.json +0 -63
  197. data/spec/support/interaction_view_model_with_terms.json +0 -50
  198. data/spec/support/markdown_pact.json +0 -48
  199. data/spec/support/missing_provider_states_output.txt +0 -25
  200. data/spec/support/options.json +0 -21
  201. data/spec/support/options_app.rb +0 -15
  202. data/spec/support/pact_helper.rb +0 -57
  203. data/spec/support/shared_examples_for_request.rb +0 -94
  204. data/spec/support/spec_support.rb +0 -20
  205. data/spec/support/stubbing.json +0 -22
  206. data/spec/support/stubbing_using_allow.rb +0 -29
  207. data/spec/support/term.json +0 -48
  208. data/spec/support/test_app_fail.json +0 -61
  209. data/spec/support/test_app_pass.json +0 -38
  210. data/spec/support/test_app_with_right_content_type_differ.json +0 -23
  211. data/tasks/pact-test.rake +0 -109
  212. data/tasks/spec.rake +0 -8
@@ -1,94 +0,0 @@
1
- shared_examples "a request" do
2
-
3
- describe 'matching' do
4
- let(:expected) do
5
- Pact::Request::Expected.from_hash(
6
- {'method' => 'get', 'path' => 'path', 'query' => /b/}
7
- )
8
- end
9
-
10
- let(:actual) do
11
- Pact::Consumer::Request::Actual.from_hash({'method' => 'get', 'path' => 'path', 'query' => 'blah', 'headers' => {}, 'body' => ''})
12
- end
13
-
14
- it "should match" do
15
- expect(expected.difference(actual)).to eq({})
16
- end
17
- end
18
-
19
- describe 'full_path' do
20
- context "with empty path" do
21
- subject { described_class.from_hash({:path => '', :method => 'get', :query => '', :headers => {}}) }
22
- it "returns the full path"do
23
- expect(subject.full_path).to eq "/"
24
- end
25
- end
26
- context "with a path" do
27
- subject { described_class.from_hash({:path => '/path', :method => 'get', :query => '', :headers => {}}) }
28
- it "returns the full path"do
29
- expect(subject.full_path).to eq "/path"
30
- end
31
- end
32
- context "with a path and query" do
33
- subject { described_class.from_hash({:path => '/path', :method => 'get', :query => "something", :headers => {}}) }
34
- it "returns the full path"do
35
- expect(subject.full_path).to eq "/path?something"
36
- end
37
- end
38
- context "with a path and a query that is a Term" do
39
- subject { described_class.from_hash({:path => '/path', :method => 'get', :headers => {}, :query => Pact::Term.new(generate: 'a', matcher: /a/)}) }
40
- it "returns the full path with reified path" do
41
- expect(subject.full_path).to eq "/path?a"
42
- end
43
- end
44
- end
45
-
46
- describe "building from a hash" do
47
-
48
- let(:raw_request) do
49
- {
50
- 'method' => 'get',
51
- 'path' => '/mallory',
52
- 'query' => 'query',
53
- 'headers' => {
54
- 'Content-Type' => 'application/json'
55
- },
56
- 'body' => 'hello mallory'
57
- }
58
- end
59
-
60
- subject { described_class.from_hash(raw_request) }
61
-
62
- it "extracts the method" do
63
- expect(subject.method).to eq 'get'
64
- end
65
-
66
- it "extracts the path" do
67
- expect(subject.path).to eq '/mallory'
68
- end
69
-
70
- it "extracts the body" do
71
- expect(subject.body).to eq 'hello mallory'
72
- end
73
-
74
- it "extracts the query" do
75
- expect(subject.query).to eq 'query'
76
- end
77
-
78
- it "blows up if method is absent" do
79
- raw_request.delete 'method'
80
- expect { described_class.from_hash(raw_request) }.to raise_error
81
- end
82
-
83
- it "blows up if path is absent" do
84
- raw_request.delete 'path'
85
- expect { described_class.from_hash(raw_request) }.to raise_error
86
- end
87
-
88
- it "does not blow up if body is missing" do
89
- raw_request.delete 'body'
90
- expect { described_class.from_hash(raw_request) }.to_not raise_error
91
- end
92
-
93
- end
94
- end
@@ -1,20 +0,0 @@
1
- require 'pact/rspec'
2
-
3
- module Pact
4
- module SpecSupport
5
-
6
- extend self
7
-
8
- def remove_ansicolor string
9
- string.gsub(/\e\[(\d+)m/, '')
10
- end
11
-
12
- Pact::RSpec.with_rspec_2 do
13
-
14
- def instance_double *args
15
- double(*args)
16
- end
17
-
18
- end
19
- end
20
- end
@@ -1,22 +0,0 @@
1
- {
2
- "consumer": {
3
- "name": "Consumer"
4
- },
5
- "provider": {
6
- "name": "Provider"
7
- },
8
- "interactions": [
9
- {
10
- "description": "a test request",
11
- "request": {
12
- "method": "get",
13
- "path": "/"
14
- },
15
- "response": {
16
- "status": 200,
17
- "body": "stubbing works"
18
- },
19
- "provider_state": "something is stubbed"
20
- }
21
- ]
22
- }
@@ -1,29 +0,0 @@
1
- require 'pact/provider/rspec'
2
- require 'rspec/mocks'
3
- require './spec/support/active_support_if_configured'
4
-
5
- class StubbedThing
6
- def self.stub_me
7
- end
8
- end
9
-
10
- class App
11
- def self.call env
12
- [200, {}, [StubbedThing.stub_me]]
13
- end
14
- end
15
-
16
- Pact.provider_states_for 'Consumer' do
17
- provider_state 'something is stubbed' do
18
- set_up do
19
- allow(StubbedThing).to receive(:stub_me).and_return("stubbing works")
20
- end
21
- end
22
- end
23
-
24
- # Include the ExampleMethods module after the provider states are declared
25
- # to ensure the ordering doesn't matter
26
-
27
- Pact.service_provider 'Provider' do
28
- app { App }
29
- end
@@ -1,48 +0,0 @@
1
- {
2
- "consumer": {
3
- "name": "some-test-consumer"
4
- },
5
- "provider": {
6
- "name": "an unknown provider"
7
- },
8
- "interactions": [
9
- {
10
- "description": "a test request",
11
- "request": {
12
- "method": "get",
13
- "path": "/weather",
14
- "query": ""
15
- },
16
- "response": {
17
- "status": 200,
18
- "headers" : {
19
- "Content-type": {
20
- "json_class": "Pact::Term",
21
- "data": {
22
- "generate": "text/plain",
23
- "matcher": {
24
- "json_class": "Regexp",
25
- "o": 0,
26
- "s": "text"
27
- }
28
- }
29
- }
30
- },
31
- "body": {
32
- "message" : {
33
- "json_class": "Pact::Term",
34
- "data": {
35
- "generate": "rainy",
36
- "matcher": {
37
- "json_class": "Regexp",
38
- "o": 0,
39
- "s": "rain"
40
- }
41
- }
42
- }
43
- }
44
- },
45
- "provider_state": "the weather is sunny"
46
- }
47
- ]
48
- }
@@ -1,61 +0,0 @@
1
- {
2
- "consumer": {
3
- "name": "an unknown consumer"
4
- },
5
- "provider": {
6
- "name": "an unknown provider"
7
- },
8
- "interactions": [
9
- {
10
- "description": "a test request",
11
- "request": {
12
- "method": "get",
13
- "path": "/weather",
14
- "query": ""
15
- },
16
- "response": {
17
- "status": 200,
18
- "headers" : {"Content-type": "application/json"},
19
- "body": {"message" : "this is not the weather you are looking for", "array": [{"foo": "bar"}], "somethingElse" : {"blah" : {"nested" : "that is missing"} }}
20
-
21
- },
22
- "provider_state": "the weather is cloudy"
23
- },{
24
- "description": "another test request",
25
- "request": {
26
- "method": "get",
27
- "path": "/weather",
28
- "query": ""
29
- },
30
- "response": {
31
- "status": 200,
32
- "headers" : {
33
- "Content-type": {
34
- "json_class": "Pact::Term",
35
- "data": {
36
- "generate": "application/hal+json",
37
- "matcher": {"json_class":"Regexp","o":0,"s":"hal"}
38
- }
39
- },
40
- "X-Special-Header": "something"
41
- },
42
- "body": {"message" : "this is not the weather you are looking for"}
43
-
44
- }
45
- },{
46
- "description": "another test request",
47
- "provider_state": "a missing provider state",
48
- "request": {
49
- "method": "get",
50
- "path": "/weather",
51
- "query": ""
52
- },
53
- "response": {
54
- "status": 200,
55
- "headers" : {"Content-type": "application/json"},
56
- "body": {"message" : "this is not the weather you are looking for"}
57
-
58
- }
59
- }
60
- ]
61
- }
@@ -1,38 +0,0 @@
1
- {
2
- "consumer": {
3
- "name": "some-test-consumer"
4
- },
5
- "provider": {
6
- "name": "an unknown provider"
7
- },
8
- "interactions": [
9
- {
10
- "description": "a test request",
11
- "request": {
12
- "method": "get",
13
- "path": "/weather",
14
- "query": ""
15
- },
16
- "response": {
17
- "status": 200,
18
- "headers" : {"Content-type": "application/json"},
19
- "body": {"message" : "sunny"}
20
- },
21
- "provider_state": "the weather is sunny"
22
- },
23
- {
24
- "description": "a test request for text",
25
- "request": {
26
- "method": "get",
27
- "path": "/sometext",
28
- "query": "",
29
- "body" : "some request text"
30
- },
31
- "response": {
32
- "status": 200,
33
- "headers" : {"Content-type": "text/plain"},
34
- "body": "some text"
35
- }
36
- }
37
- ]
38
- }
@@ -1,23 +0,0 @@
1
- {
2
- "consumer": {
3
- "name": "some-test-consumer"
4
- },
5
- "provider": {
6
- "name": "the test app in the pact_helper file"
7
- },
8
- "interactions": [
9
- {
10
- "description": "a test request expecting an application/json response",
11
- "request": {
12
- "method": "get",
13
- "path": "/content_type_is_important",
14
- "query": ""
15
- },
16
- "response": {
17
- "status": 200,
18
- "headers" : {"Content-type": "application/json"},
19
- "body": {"message" : "A message"}
20
- }
21
- }
22
- ]
23
- }
data/tasks/pact-test.rake DELETED
@@ -1,109 +0,0 @@
1
- require 'pact/tasks/verification_task'
2
- require 'open3'
3
-
4
- Pact::VerificationTask.new(:stubbing) do | pact |
5
- pact.uri './spec/support/stubbing.json', :pact_helper => './spec/support/stubbing_using_allow.rb'
6
- end
7
-
8
- Pact::VerificationTask.new(:options) do | pact |
9
- pact.uri './spec/support/options.json', :pact_helper => './spec/support/options_app.rb'
10
- end
11
-
12
- Pact::VerificationTask.new(:pass) do | pact |
13
- pact.uri './spec/support/test_app_pass.json'
14
- end
15
-
16
- Pact::VerificationTask.new(:fail) do | pact |
17
- pact.uri './spec/support/test_app_pass.json'
18
- pact.uri './spec/support/test_app_fail.json'
19
- end
20
-
21
- Pact::VerificationTask.new(:term) do | pact |
22
- pact.uri './spec/support/term.json'
23
- end
24
-
25
- RSpec::Core::RakeTask.new('spec:standalone:fail') do | task |
26
- task.pattern = FileList["spec/standalone/**/*_fail_test.rb"]
27
- end
28
-
29
- RSpec::Core::RakeTask.new('spec:standalone:pass') do | task |
30
- task.pattern = FileList["spec/standalone/**/*_pass_test.rb"]
31
- end
32
-
33
- Pact::VerificationTask.new('test_app:pass') do | pact |
34
- pact.uri './spec/support/test_app_pass.json'
35
- end
36
-
37
- Pact::VerificationTask.new('test_app:content_type') do | pact |
38
- pact.uri './spec/support/test_app_with_right_content_type_differ.json'
39
- end
40
-
41
- Pact::VerificationTask.new('test_app:fail') do | pact |
42
- pact.uri './spec/support/test_app_fail.json', pact_helper: './spec/support/pact_helper.rb'
43
- end
44
-
45
- task :bethtest => ['pact:tests:all','pact:tests:all:with_active_support']
46
-
47
- namespace :pact do
48
-
49
- desc "All the verification tests"
50
- task "tests:all" do
51
- Rake::Task['pact:verify:stubbing'].execute
52
- Rake::Task['spec:standalone:pass'].execute
53
- Rake::Task['pact:verify'].execute
54
- Rake::Task['pact:verify:test_app:pass'].execute
55
- Rake::Task['pact:test:fail'].execute
56
- Rake::Task['pact:test:pactfile'].execute
57
- Rake::Task['pact:verify:test_app:content_type'].execute
58
- end
59
-
60
- desc "All the verification tests with active support loaded"
61
- task 'tests:all:with_active_support' => :set_active_support_on do
62
- Rake::Task['pact:tests:all'].execute
63
- end
64
-
65
- desc "Ensure pact file is written"
66
- task 'test:pactfile' do
67
- pact_path = './spec/pacts/standalone_consumer-standalone_provider.json'
68
- FileUtils.rm_rf pact_path
69
- Rake::Task['spec:standalone:pass'].execute
70
- fail "Did not find expected pact file at #{pact_path}" unless File.exist?(pact_path)
71
- end
72
-
73
- desc 'Runs pact tests against a sample application, testing failure and success.'
74
- task 'test:fail' do
75
-
76
- require 'open3'
77
-
78
- silent = true
79
- # Run these specs silently, otherwise expected failures will be written to stdout and look like unexpected failures.
80
- #Pact.configuration.output_stream = StringIO.new if silent
81
-
82
- expect_to_fail "bundle exec rake pact:verify:test_app:fail", with: [/Could not find one or more provider states/]
83
- expect_to_fail "bundle exec rake spec:standalone:fail", with: [/Actual interactions do not match expected interactions/]
84
- expect_to_fail "bundle exec rake pact:verify:term", with: [%r{"Content-type" with value /text/}]
85
- end
86
-
87
- def expect_to_fail command, options = {}
88
- success = execute_command command, options
89
- fail "Expected '#{command}' to fail" if success
90
- end
91
-
92
- def execute_command command, options
93
- result = nil
94
- Open3.popen3(command) {|stdin, stdout, stderr, wait_thr|
95
- result = wait_thr.value
96
- ensure_patterns_present(command, options, stdout, stderr) if options[:with]
97
- }
98
- result.success?
99
- end
100
-
101
- def ensure_patterns_present command, options, stdout, stderr
102
- require 'term/ansicolor'
103
- output = stdout.read + stderr.read
104
- options[:with].each do | pattern |
105
- raise (::Term::ANSIColor.red("Could not find #{pattern.inspect} in output of #{command}") + "\n\n#{output}") unless output =~ pattern
106
- end
107
- end
108
-
109
- end
data/tasks/spec.rake DELETED
@@ -1,8 +0,0 @@
1
- task :set_active_support_on do
2
- ENV["LOAD_ACTIVE_SUPPORT"] = 'true'
3
- end
4
-
5
- desc "This is to ensure that the gem still works even when active support JSON is loaded."
6
- task :spec_with_active_support => [:set_active_support_on] do
7
- Rake::Task['spec'].execute
8
- end