pact-mock_service 0.2.2 → 0.2.3.pre.rc1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/pact/consumer/app_manager.rb +5 -1
- data/lib/pact/consumer/interactions_filter.rb +1 -17
- data/lib/pact/consumer/mock_service/actual_interactions.rb +34 -0
- data/lib/pact/consumer/mock_service/app.rb +21 -18
- data/lib/pact/consumer/mock_service/candidate_interactions.rb +13 -0
- data/lib/pact/consumer/mock_service/expected_interactions.rb +17 -0
- data/lib/pact/consumer/mock_service/interaction_delete.rb +11 -5
- data/lib/pact/consumer/mock_service/interaction_post.rb +69 -6
- data/lib/pact/consumer/mock_service/interaction_replay.rb +77 -57
- data/lib/pact/consumer/mock_service/log_get.rb +1 -1
- data/lib/pact/consumer/mock_service/missing_interactions_get.rb +7 -4
- data/lib/pact/consumer/mock_service/pact_post.rb +6 -4
- data/lib/pact/consumer/mock_service/rack_request_helper.rb +1 -1
- data/lib/pact/consumer/mock_service/verification.rb +46 -0
- data/lib/pact/consumer/mock_service/verification_get.rb +17 -12
- data/lib/pact/consumer/mock_service/verified_interactions.rb +18 -0
- data/lib/pact/consumer/mock_service_client.rb +4 -4
- data/lib/pact/consumer/server.rb +2 -0
- data/lib/pact/consumer_contract/consumer_contract_writer.rb +2 -0
- data/lib/pact/mock_service/cli.rb +21 -14
- data/lib/pact/mock_service/version.rb +1 -1
- metadata +10 -124
- data/.gitignore +0 -30
- data/.rspec +0 -3
- data/.travis.yml +0 -8
- data/Rakefile +0 -6
- data/lib/pact/consumer/mock_service/interaction_list.rb +0 -76
- data/pact-mock-service.gemspec +0 -39
- data/spec/features/mock_multiple_responses_spec.rb +0 -120
- data/spec/features/mock_response_spec.rb +0 -71
- data/spec/lib/pact/consumer/app_manager_spec.rb +0 -42
- data/spec/lib/pact/consumer/mock_service/app_spec.rb +0 -52
- data/spec/lib/pact/consumer/mock_service/interaction_list_spec.rb +0 -78
- data/spec/lib/pact/consumer/mock_service/interaction_mismatch_spec.rb +0 -70
- data/spec/lib/pact/consumer/mock_service/interaction_replay_spec.rb +0 -12
- data/spec/lib/pact/consumer/mock_service/rack_request_helper_spec.rb +0 -88
- data/spec/lib/pact/consumer/mock_service/verification_get_spec.rb +0 -142
- data/spec/lib/pact/consumer/mock_service_client_spec.rb +0 -88
- data/spec/lib/pact/consumer/service_consumer_spec.rb +0 -11
- data/spec/lib/pact/consumer_contract/consumer_contract_writer_spec.rb +0 -128
- data/spec/lib/pact/consumer_contract/request_decorator_body_spec.rb +0 -77
- data/spec/lib/pact/consumer_contract/request_decorator_headers_spec.rb +0 -69
- data/spec/lib/pact/consumer_contract/request_decorator_path_spec.rb +0 -42
- data/spec/lib/pact/consumer_contract/request_decorator_query_spec.rb +0 -74
- data/spec/lib/pact/consumer_contract/request_decorator_spec.rb +0 -41
- data/spec/lib/pact/consumer_contract/response_decorator_spec.rb +0 -10
- data/spec/lib/pact/mock_service/interaction_decorator_spec.rb +0 -74
- data/spec/lib/pact/mock_service/request_decorator_spec.rb +0 -76
- data/spec/lib/pact/mock_service/response_decorator_spec.rb +0 -12
- data/spec/spec_helper.rb +0 -16
- data/spec/support/a_consumer-a_producer.json +0 -32
- data/spec/support/a_consumer-a_provider.json +0 -32
- data/spec/support/active_support_if_configured.rb +0 -6
- data/spec/support/app_for_config_ru.rb +0 -4
- data/spec/support/case-insensitive-response-header-matching.json +0 -21
- data/spec/support/case-insensitive-response-header-matching.rb +0 -15
- data/spec/support/consumer_contract_template.json +0 -24
- data/spec/support/dsl_spec_support.rb +0 -7
- data/spec/support/factories.rb +0 -82
- data/spec/support/generated_index.md +0 -4
- data/spec/support/generated_markdown.md +0 -55
- data/spec/support/interaction_view_model.json +0 -63
- data/spec/support/interaction_view_model_with_terms.json +0 -50
- data/spec/support/markdown_pact.json +0 -48
- data/spec/support/missing_provider_states_output.txt +0 -25
- data/spec/support/options.json +0 -21
- data/spec/support/options_app.rb +0 -15
- data/spec/support/pact_helper.rb +0 -57
- data/spec/support/shared_examples_for_request.rb +0 -94
- data/spec/support/shared_examples_for_response_decorator.rb +0 -25
- data/spec/support/spec_support.rb +0 -20
- data/spec/support/stubbing.json +0 -22
- data/spec/support/stubbing_using_allow.rb +0 -29
- data/spec/support/term.json +0 -48
- data/spec/support/test_app_fail.json +0 -61
- data/spec/support/test_app_pass.json +0 -38
- data/spec/support/test_app_with_right_content_type_differ.json +0 -23
- data/tasks/spec.rake +0 -6
@@ -0,0 +1,46 @@
|
|
1
|
+
module Pact
|
2
|
+
module Consumer
|
3
|
+
class Verification
|
4
|
+
|
5
|
+
def initialize expected_interactions, actual_interactions
|
6
|
+
@expected_interactions = expected_interactions
|
7
|
+
@actual_interactions = actual_interactions
|
8
|
+
end
|
9
|
+
|
10
|
+
def all_matched?
|
11
|
+
interaction_diffs.empty?
|
12
|
+
end
|
13
|
+
|
14
|
+
def interaction_diffs
|
15
|
+
{
|
16
|
+
:missing_interactions => missing_interactions_summaries,
|
17
|
+
:interaction_mismatches => interaction_mismatches_summaries,
|
18
|
+
:unexpected_requests => unexpected_requests_summaries
|
19
|
+
}.each_with_object({}) do | (key, value), hash |
|
20
|
+
hash[key] = value if value.any?
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def missing_interactions_summaries
|
25
|
+
missing_interactions.collect(&:request).collect(&:method_and_path)
|
26
|
+
end
|
27
|
+
|
28
|
+
def interaction_mismatches_summaries
|
29
|
+
actual_interactions.interaction_mismatches.collect(&:short_summary)
|
30
|
+
end
|
31
|
+
|
32
|
+
def unexpected_requests_summaries
|
33
|
+
actual_interactions.unexpected_requests.collect(&:method_and_path)
|
34
|
+
end
|
35
|
+
|
36
|
+
def missing_interactions
|
37
|
+
expected_interactions - actual_interactions.matched_interactions - @actual_interactions.interaction_mismatches.collect(&:candidate_interactions).flatten
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
attr_reader :expected_interactions, :actual_interactions
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -5,11 +5,11 @@ module Pact
|
|
5
5
|
class VerificationGet < MockServiceAdministrationEndpoint
|
6
6
|
|
7
7
|
include RackRequestHelper
|
8
|
-
attr_accessor :interaction_list, :log_description
|
9
8
|
|
10
|
-
def initialize name, logger,
|
9
|
+
def initialize name, logger, expected_interactions, actual_interactions, log_description
|
11
10
|
super name, logger
|
12
|
-
@
|
11
|
+
@expected_interactions = expected_interactions
|
12
|
+
@actual_interactions = actual_interactions
|
13
13
|
@log_description = log_description
|
14
14
|
end
|
15
15
|
|
@@ -22,25 +22,30 @@ module Pact
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def respond env
|
25
|
-
|
25
|
+
verification = Verification.new(expected_interactions, actual_interactions)
|
26
|
+
if verification.all_matched?
|
26
27
|
logger.info "Verifying - interactions matched for example \"#{example_description(env)}\""
|
27
28
|
[200, {'Content-Type' => 'text/plain'}, ['Interactions matched']]
|
28
29
|
else
|
29
|
-
error_message = FailureMessage.new(
|
30
|
+
error_message = FailureMessage.new(verification).to_s
|
30
31
|
logger.warn "Verifying - actual interactions do not match expected interactions for example \"#{example_description(env)}\". \n#{error_message}"
|
31
32
|
logger.warn error_message
|
32
33
|
[500, {'Content-Type' => 'text/plain'}, ["Actual interactions do not match expected interactions for mock #{name}.\n\n#{error_message}See #{log_description} for details."]]
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
37
|
+
private
|
38
|
+
|
39
|
+
attr_accessor :expected_interactions, :actual_interactions, :log_description
|
40
|
+
|
36
41
|
def example_description env
|
37
|
-
params_hash(env)[
|
42
|
+
params_hash(env).fetch("example_description", [])[0]
|
38
43
|
end
|
39
44
|
|
40
45
|
class FailureMessage
|
41
46
|
|
42
|
-
def initialize
|
43
|
-
@
|
47
|
+
def initialize verification
|
48
|
+
@verification = verification
|
44
49
|
end
|
45
50
|
|
46
51
|
def to_s
|
@@ -52,13 +57,13 @@ module Pact
|
|
52
57
|
|
53
58
|
private
|
54
59
|
|
55
|
-
attr_reader :
|
60
|
+
attr_reader :verification
|
56
61
|
|
57
62
|
def titles_and_summaries
|
58
63
|
{
|
59
|
-
"Incorrect requests" =>
|
60
|
-
"Missing requests" =>
|
61
|
-
"Unexpected requests" =>
|
64
|
+
"Incorrect requests" => verification.interaction_mismatches_summaries,
|
65
|
+
"Missing requests" => verification.missing_interactions_summaries,
|
66
|
+
"Unexpected requests" => verification.unexpected_requests_summaries,
|
62
67
|
}
|
63
68
|
end
|
64
69
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Pact
|
2
|
+
module Consumer
|
3
|
+
class VerifiedInteractions < Array
|
4
|
+
|
5
|
+
def << interaction
|
6
|
+
unless find_matching_description_and_provider_state interaction
|
7
|
+
super
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def find_matching_description_and_provider_state interaction
|
12
|
+
find do |candidate_interaction|
|
13
|
+
candidate_interaction.matches_criteria?(description: interaction.description, provider_state: interaction.provider_state)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -12,12 +12,12 @@ module Pact
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def verify example_description
|
15
|
-
response = http.request_get("/interactions/verification?example_description=#{
|
15
|
+
response = http.request_get("/interactions/verification?example_description=#{CGI.escape(example_description)}", MOCK_SERVICE_ADMINISTRATON_HEADERS)
|
16
16
|
raise "\e[31m#{response.body}\e[m" unless response.is_a? Net::HTTPSuccess
|
17
17
|
end
|
18
18
|
|
19
19
|
def log msg
|
20
|
-
http.request_get("/log?msg=#{
|
20
|
+
http.request_get("/log?msg=#{CGI.escape(msg)}", MOCK_SERVICE_ADMINISTRATON_HEADERS)
|
21
21
|
end
|
22
22
|
|
23
23
|
def wait_for_interactions wait_max_seconds, poll_interval
|
@@ -28,7 +28,7 @@ module Pact
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def clear_interactions example_description
|
31
|
-
http.delete("/interactions?example_description=#{
|
31
|
+
http.delete("/interactions?example_description=#{CGI.escape(example_description)}", MOCK_SERVICE_ADMINISTRATON_HEADERS)
|
32
32
|
end
|
33
33
|
|
34
34
|
def add_expected_interaction interaction
|
@@ -41,7 +41,7 @@ module Pact
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def self.clear_interactions port, example_description
|
44
|
-
Net::HTTP.new("localhost", port).delete("/interactions?example_description=#{
|
44
|
+
Net::HTTP.new("localhost", port).delete("/interactions?example_description=#{CGI.escape(example_description)}", MOCK_SERVICE_ADMINISTRATON_HEADERS)
|
45
45
|
end
|
46
46
|
|
47
47
|
def write_pact pacticipant_details
|
data/lib/pact/consumer/server.rb
CHANGED
@@ -4,6 +4,7 @@ require 'pact/consumer_contract/file_name'
|
|
4
4
|
require 'pact/consumer_contract/pact_file'
|
5
5
|
require 'pact/consumer_contract/consumer_contract_decorator'
|
6
6
|
require 'pact/shared/active_support_support'
|
7
|
+
require 'fileutils'
|
7
8
|
|
8
9
|
module Pact
|
9
10
|
|
@@ -45,6 +46,7 @@ module Pact
|
|
45
46
|
|
46
47
|
def update_pactfile
|
47
48
|
logger.debug "Updating pact file for #{provider_name} at #{pactfile_path}"
|
49
|
+
FileUtils.mkdir_p File.dirname(pactfile_path)
|
48
50
|
File.open(pactfile_path, 'w') do |f|
|
49
51
|
f.write pact_json
|
50
52
|
end
|
@@ -1,47 +1,54 @@
|
|
1
1
|
require 'find_a_port'
|
2
2
|
require 'thor'
|
3
3
|
require 'thwait'
|
4
|
+
require 'webrick/https'
|
4
5
|
require 'rack/handler/webrick'
|
5
|
-
|
6
|
-
# TODO rename CLI so as not to clash
|
6
|
+
require 'fileutils'
|
7
7
|
|
8
8
|
module Pact
|
9
9
|
module MockService
|
10
10
|
class CLI < Thor
|
11
11
|
|
12
|
-
desc '
|
12
|
+
desc 'execute', "Start a mock service"
|
13
13
|
method_option :port, aliases: "-p", desc: "Port on which to run the service"
|
14
|
+
method_option :ssl, desc: "Use a self-signed SSL cert to run the service over HTTPS"
|
14
15
|
method_option :log, aliases: "-l", desc: "File to which to log output"
|
15
|
-
method_option :
|
16
|
+
method_option :pact_dir, aliases: "-d", desc: "Directory to which the pacts will be written"
|
16
17
|
|
17
|
-
def
|
18
|
+
def execute
|
18
19
|
RunStandaloneMockService.call(options)
|
19
20
|
end
|
20
21
|
|
21
|
-
default_task :
|
22
|
-
|
23
|
-
private
|
22
|
+
default_task :execute
|
24
23
|
|
25
|
-
def log message
|
26
|
-
puts message unless options[:quiet]
|
27
|
-
end
|
28
24
|
end
|
29
25
|
|
30
26
|
class RunStandaloneMockService
|
31
27
|
|
32
28
|
def self.call options
|
33
29
|
require 'pact/consumer/mock_service/app'
|
34
|
-
service_options = {}
|
30
|
+
service_options = {pact_dir: options[:pact_dir]}
|
35
31
|
if options[:log]
|
32
|
+
FileUtils.mkdir_p File.dirname(options[:log])
|
36
33
|
log = File.open(options[:log], 'w')
|
37
34
|
log.sync = true
|
38
35
|
service_options[:log_file] = log
|
39
36
|
end
|
40
37
|
|
41
|
-
port = options[:port] || FindAPort.available_port
|
42
38
|
mock_service = Pact::Consumer::MockService.new(service_options)
|
43
39
|
trap(:INT) { Rack::Handler::WEBrick.shutdown }
|
44
|
-
Rack::Handler::WEBrick.
|
40
|
+
trap(:TERM) { Rack::Handler::WEBrick.shutdown }
|
41
|
+
|
42
|
+
webbrick_opts = {
|
43
|
+
:Port => options[:port] || FindAPort.available_port,
|
44
|
+
:AccessLog => []
|
45
|
+
}
|
46
|
+
|
47
|
+
webbrick_opts.merge!({
|
48
|
+
:SSLEnable => true,
|
49
|
+
:SSLCertName => [ %w[CN localhost] ] }) if options[:ssl]
|
50
|
+
|
51
|
+
Rack::Handler::WEBrick.run(mock_service, webbrick_opts)
|
45
52
|
end
|
46
53
|
end
|
47
54
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pact-mock_service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3.pre.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Fraser
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2015-01-03 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rack
|
@@ -70,20 +70,6 @@ dependencies:
|
|
70
70
|
- - "~>"
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: 0.6.2
|
73
|
-
- !ruby/object:Gem::Dependency
|
74
|
-
name: awesome_print
|
75
|
-
requirement: !ruby/object:Gem::Requirement
|
76
|
-
requirements:
|
77
|
-
- - "~>"
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version: '1.1'
|
80
|
-
type: :runtime
|
81
|
-
prerelease: false
|
82
|
-
version_requirements: !ruby/object:Gem::Requirement
|
83
|
-
requirements:
|
84
|
-
- - "~>"
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: '1.1'
|
87
73
|
- !ruby/object:Gem::Dependency
|
88
74
|
name: thor
|
89
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -264,21 +250,19 @@ executables:
|
|
264
250
|
extensions: []
|
265
251
|
extra_rdoc_files: []
|
266
252
|
files:
|
267
|
-
- ".gitignore"
|
268
|
-
- ".rspec"
|
269
|
-
- ".travis.yml"
|
270
253
|
- CHANGELOG.md
|
271
254
|
- Gemfile
|
272
255
|
- LICENSE.txt
|
273
256
|
- README.md
|
274
|
-
- Rakefile
|
275
257
|
- bin/pact-mock-service
|
276
258
|
- lib/pact/consumer/app_manager.rb
|
277
259
|
- lib/pact/consumer/interactions_filter.rb
|
278
260
|
- lib/pact/consumer/mock_service.rb
|
261
|
+
- lib/pact/consumer/mock_service/actual_interactions.rb
|
279
262
|
- lib/pact/consumer/mock_service/app.rb
|
263
|
+
- lib/pact/consumer/mock_service/candidate_interactions.rb
|
264
|
+
- lib/pact/consumer/mock_service/expected_interactions.rb
|
280
265
|
- lib/pact/consumer/mock_service/interaction_delete.rb
|
281
|
-
- lib/pact/consumer/mock_service/interaction_list.rb
|
282
266
|
- lib/pact/consumer/mock_service/interaction_mismatch.rb
|
283
267
|
- lib/pact/consumer/mock_service/interaction_post.rb
|
284
268
|
- lib/pact/consumer/mock_service/interaction_replay.rb
|
@@ -287,7 +271,9 @@ files:
|
|
287
271
|
- lib/pact/consumer/mock_service/mock_service_administration_endpoint.rb
|
288
272
|
- lib/pact/consumer/mock_service/pact_post.rb
|
289
273
|
- lib/pact/consumer/mock_service/rack_request_helper.rb
|
274
|
+
- lib/pact/consumer/mock_service/verification.rb
|
290
275
|
- lib/pact/consumer/mock_service/verification_get.rb
|
276
|
+
- lib/pact/consumer/mock_service/verified_interactions.rb
|
291
277
|
- lib/pact/consumer/mock_service_client.rb
|
292
278
|
- lib/pact/consumer/server.rb
|
293
279
|
- lib/pact/consumer_contract/consumer_contract_decorator.rb
|
@@ -301,57 +287,6 @@ files:
|
|
301
287
|
- lib/pact/mock_service/request_decorator.rb
|
302
288
|
- lib/pact/mock_service/response_decorator.rb
|
303
289
|
- lib/pact/mock_service/version.rb
|
304
|
-
- pact-mock-service.gemspec
|
305
|
-
- spec/features/mock_multiple_responses_spec.rb
|
306
|
-
- spec/features/mock_response_spec.rb
|
307
|
-
- spec/lib/pact/consumer/app_manager_spec.rb
|
308
|
-
- spec/lib/pact/consumer/mock_service/app_spec.rb
|
309
|
-
- spec/lib/pact/consumer/mock_service/interaction_list_spec.rb
|
310
|
-
- spec/lib/pact/consumer/mock_service/interaction_mismatch_spec.rb
|
311
|
-
- spec/lib/pact/consumer/mock_service/interaction_replay_spec.rb
|
312
|
-
- spec/lib/pact/consumer/mock_service/rack_request_helper_spec.rb
|
313
|
-
- spec/lib/pact/consumer/mock_service/verification_get_spec.rb
|
314
|
-
- spec/lib/pact/consumer/mock_service_client_spec.rb
|
315
|
-
- spec/lib/pact/consumer/service_consumer_spec.rb
|
316
|
-
- spec/lib/pact/consumer_contract/consumer_contract_writer_spec.rb
|
317
|
-
- spec/lib/pact/consumer_contract/request_decorator_body_spec.rb
|
318
|
-
- spec/lib/pact/consumer_contract/request_decorator_headers_spec.rb
|
319
|
-
- spec/lib/pact/consumer_contract/request_decorator_path_spec.rb
|
320
|
-
- spec/lib/pact/consumer_contract/request_decorator_query_spec.rb
|
321
|
-
- spec/lib/pact/consumer_contract/request_decorator_spec.rb
|
322
|
-
- spec/lib/pact/consumer_contract/response_decorator_spec.rb
|
323
|
-
- spec/lib/pact/mock_service/interaction_decorator_spec.rb
|
324
|
-
- spec/lib/pact/mock_service/request_decorator_spec.rb
|
325
|
-
- spec/lib/pact/mock_service/response_decorator_spec.rb
|
326
|
-
- spec/spec_helper.rb
|
327
|
-
- spec/support/a_consumer-a_producer.json
|
328
|
-
- spec/support/a_consumer-a_provider.json
|
329
|
-
- spec/support/active_support_if_configured.rb
|
330
|
-
- spec/support/app_for_config_ru.rb
|
331
|
-
- spec/support/case-insensitive-response-header-matching.json
|
332
|
-
- spec/support/case-insensitive-response-header-matching.rb
|
333
|
-
- spec/support/consumer_contract_template.json
|
334
|
-
- spec/support/dsl_spec_support.rb
|
335
|
-
- spec/support/factories.rb
|
336
|
-
- spec/support/generated_index.md
|
337
|
-
- spec/support/generated_markdown.md
|
338
|
-
- spec/support/interaction_view_model.json
|
339
|
-
- spec/support/interaction_view_model_with_terms.json
|
340
|
-
- spec/support/markdown_pact.json
|
341
|
-
- spec/support/missing_provider_states_output.txt
|
342
|
-
- spec/support/options.json
|
343
|
-
- spec/support/options_app.rb
|
344
|
-
- spec/support/pact_helper.rb
|
345
|
-
- spec/support/shared_examples_for_request.rb
|
346
|
-
- spec/support/shared_examples_for_response_decorator.rb
|
347
|
-
- spec/support/spec_support.rb
|
348
|
-
- spec/support/stubbing.json
|
349
|
-
- spec/support/stubbing_using_allow.rb
|
350
|
-
- spec/support/term.json
|
351
|
-
- spec/support/test_app_fail.json
|
352
|
-
- spec/support/test_app_pass.json
|
353
|
-
- spec/support/test_app_with_right_content_type_differ.json
|
354
|
-
- tasks/spec.rake
|
355
290
|
homepage: https://github.com/bethesque/pact-mock_service
|
356
291
|
licenses:
|
357
292
|
- MIT
|
@@ -367,62 +302,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
367
302
|
version: '0'
|
368
303
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
369
304
|
requirements:
|
370
|
-
- - "
|
305
|
+
- - ">"
|
371
306
|
- !ruby/object:Gem::Version
|
372
|
-
version:
|
307
|
+
version: 1.3.1
|
373
308
|
requirements: []
|
374
309
|
rubyforge_project:
|
375
310
|
rubygems_version: 2.2.2
|
376
311
|
signing_key:
|
377
312
|
specification_version: 4
|
378
313
|
summary: Provides a mock service for use with Pact
|
379
|
-
test_files:
|
380
|
-
- spec/features/mock_multiple_responses_spec.rb
|
381
|
-
- spec/features/mock_response_spec.rb
|
382
|
-
- spec/lib/pact/consumer/app_manager_spec.rb
|
383
|
-
- spec/lib/pact/consumer/mock_service/app_spec.rb
|
384
|
-
- spec/lib/pact/consumer/mock_service/interaction_list_spec.rb
|
385
|
-
- spec/lib/pact/consumer/mock_service/interaction_mismatch_spec.rb
|
386
|
-
- spec/lib/pact/consumer/mock_service/interaction_replay_spec.rb
|
387
|
-
- spec/lib/pact/consumer/mock_service/rack_request_helper_spec.rb
|
388
|
-
- spec/lib/pact/consumer/mock_service/verification_get_spec.rb
|
389
|
-
- spec/lib/pact/consumer/mock_service_client_spec.rb
|
390
|
-
- spec/lib/pact/consumer/service_consumer_spec.rb
|
391
|
-
- spec/lib/pact/consumer_contract/consumer_contract_writer_spec.rb
|
392
|
-
- spec/lib/pact/consumer_contract/request_decorator_body_spec.rb
|
393
|
-
- spec/lib/pact/consumer_contract/request_decorator_headers_spec.rb
|
394
|
-
- spec/lib/pact/consumer_contract/request_decorator_path_spec.rb
|
395
|
-
- spec/lib/pact/consumer_contract/request_decorator_query_spec.rb
|
396
|
-
- spec/lib/pact/consumer_contract/request_decorator_spec.rb
|
397
|
-
- spec/lib/pact/consumer_contract/response_decorator_spec.rb
|
398
|
-
- spec/lib/pact/mock_service/interaction_decorator_spec.rb
|
399
|
-
- spec/lib/pact/mock_service/request_decorator_spec.rb
|
400
|
-
- spec/lib/pact/mock_service/response_decorator_spec.rb
|
401
|
-
- spec/spec_helper.rb
|
402
|
-
- spec/support/a_consumer-a_producer.json
|
403
|
-
- spec/support/a_consumer-a_provider.json
|
404
|
-
- spec/support/active_support_if_configured.rb
|
405
|
-
- spec/support/app_for_config_ru.rb
|
406
|
-
- spec/support/case-insensitive-response-header-matching.json
|
407
|
-
- spec/support/case-insensitive-response-header-matching.rb
|
408
|
-
- spec/support/consumer_contract_template.json
|
409
|
-
- spec/support/dsl_spec_support.rb
|
410
|
-
- spec/support/factories.rb
|
411
|
-
- spec/support/generated_index.md
|
412
|
-
- spec/support/generated_markdown.md
|
413
|
-
- spec/support/interaction_view_model.json
|
414
|
-
- spec/support/interaction_view_model_with_terms.json
|
415
|
-
- spec/support/markdown_pact.json
|
416
|
-
- spec/support/missing_provider_states_output.txt
|
417
|
-
- spec/support/options.json
|
418
|
-
- spec/support/options_app.rb
|
419
|
-
- spec/support/pact_helper.rb
|
420
|
-
- spec/support/shared_examples_for_request.rb
|
421
|
-
- spec/support/shared_examples_for_response_decorator.rb
|
422
|
-
- spec/support/spec_support.rb
|
423
|
-
- spec/support/stubbing.json
|
424
|
-
- spec/support/stubbing_using_allow.rb
|
425
|
-
- spec/support/term.json
|
426
|
-
- spec/support/test_app_fail.json
|
427
|
-
- spec/support/test_app_pass.json
|
428
|
-
- spec/support/test_app_with_right_content_type_differ.json
|
314
|
+
test_files: []
|
data/.gitignore
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
.yardoc
|
6
|
-
InstalledFiles
|
7
|
-
_yardoc
|
8
|
-
coverage
|
9
|
-
lib/bundler/man
|
10
|
-
pkg
|
11
|
-
rdoc
|
12
|
-
spec/reports
|
13
|
-
test/tmp
|
14
|
-
test/version_tmp
|
15
|
-
tmp
|
16
|
-
*.swp
|
17
|
-
.bin
|
18
|
-
tags
|
19
|
-
.rbenv-version
|
20
|
-
spec/pacts
|
21
|
-
.rvmrc
|
22
|
-
*.iml
|
23
|
-
.rakeTasks
|
24
|
-
*~
|
25
|
-
.ruby-gemset
|
26
|
-
.ruby-version
|
27
|
-
log
|
28
|
-
.idea
|
29
|
-
reports
|
30
|
-
Gemfile.lock
|
data/.rspec
DELETED
data/.travis.yml
DELETED
data/Rakefile
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
module Pact
|
2
|
-
module Consumer
|
3
|
-
class InteractionList
|
4
|
-
|
5
|
-
attr_reader :interactions
|
6
|
-
attr_reader :unexpected_requests
|
7
|
-
attr_reader :interaction_mismatches
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
clear
|
11
|
-
end
|
12
|
-
|
13
|
-
# For testing, sigh
|
14
|
-
def clear
|
15
|
-
@interactions = []
|
16
|
-
@matched_interactions = []
|
17
|
-
@interaction_mismatches = []
|
18
|
-
@unexpected_requests = []
|
19
|
-
end
|
20
|
-
|
21
|
-
def add interactions
|
22
|
-
@interactions << interactions
|
23
|
-
end
|
24
|
-
|
25
|
-
def register_matched interaction
|
26
|
-
@matched_interactions << interaction
|
27
|
-
end
|
28
|
-
|
29
|
-
def register_unexpected_request request
|
30
|
-
@unexpected_requests << request
|
31
|
-
end
|
32
|
-
|
33
|
-
def register_interaction_mismatch interaction_mismatch
|
34
|
-
@interaction_mismatches << interaction_mismatch
|
35
|
-
end
|
36
|
-
|
37
|
-
def all_matched?
|
38
|
-
interaction_diffs.empty?
|
39
|
-
end
|
40
|
-
|
41
|
-
def missing_interactions
|
42
|
-
@interactions - @matched_interactions - @interaction_mismatches.collect(&:candidate_interactions).flatten
|
43
|
-
end
|
44
|
-
|
45
|
-
def missing_interactions_summaries
|
46
|
-
missing_interactions.collect(&:request).collect(&:method_and_path)
|
47
|
-
end
|
48
|
-
|
49
|
-
def interaction_mismatches_summaries
|
50
|
-
interaction_mismatches.collect(&:short_summary)
|
51
|
-
end
|
52
|
-
|
53
|
-
def unexpected_requests_summaries
|
54
|
-
unexpected_requests.collect(&:method_and_path)
|
55
|
-
end
|
56
|
-
|
57
|
-
def interaction_diffs
|
58
|
-
{
|
59
|
-
:missing_interactions => missing_interactions_summaries,
|
60
|
-
:interaction_mismatches => interaction_mismatches_summaries,
|
61
|
-
:unexpected_requests => unexpected_requests_summaries
|
62
|
-
}.inject({}) do | hash, pair |
|
63
|
-
hash[pair.first] = pair.last if pair.last.any?
|
64
|
-
hash
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def find_candidate_interactions actual_request
|
69
|
-
interactions.select do | interaction |
|
70
|
-
interaction.request.matches_route? actual_request
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
data/pact-mock-service.gemspec
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'pact/mock_service/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |gem|
|
7
|
-
gem.name = "pact-mock_service"
|
8
|
-
gem.version = Pact::MockService::VERSION
|
9
|
-
gem.authors = ["James Fraser", "Sergei Matheson", "Brent Snook", "Ronald Holshausen", "Beth Skurrie"]
|
10
|
-
gem.email = ["james.fraser@alumni.swinburne.edu", "sergei.matheson@gmail.com", "brent@fuglylogic.com", "uglyog@gmail.com", "bskurrie@dius.com.au"]
|
11
|
-
gem.summary = %q{Provides a mock service for use with Pact}
|
12
|
-
gem.homepage = "https://github.com/bethesque/pact-mock_service"
|
13
|
-
|
14
|
-
gem.files = `git ls-files`.split($/)
|
15
|
-
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
16
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
17
|
-
gem.require_paths = ["lib"]
|
18
|
-
gem.license = 'MIT'
|
19
|
-
|
20
|
-
gem.add_runtime_dependency 'rack'
|
21
|
-
gem.add_runtime_dependency 'rspec', '>=2.14'
|
22
|
-
gem.add_runtime_dependency 'find_a_port', '~> 1.0.1'
|
23
|
-
gem.add_runtime_dependency 'rack-test', '~> 0.6.2'
|
24
|
-
gem.add_runtime_dependency 'awesome_print', '~> 1.1'
|
25
|
-
gem.add_runtime_dependency 'thor'
|
26
|
-
gem.add_runtime_dependency 'json' #Not locking down a version because buncher gem requires 1.6, while other projects use 1.7.
|
27
|
-
gem.add_runtime_dependency 'webrick'
|
28
|
-
gem.add_runtime_dependency 'term-ansicolor', '~> 1.0'
|
29
|
-
|
30
|
-
gem.add_runtime_dependency 'pact-support', '~> 0.1.1'
|
31
|
-
|
32
|
-
gem.add_development_dependency 'rake', '~> 10.0.3'
|
33
|
-
gem.add_development_dependency 'webmock', '~> 1.18.0'
|
34
|
-
gem.add_development_dependency 'pry'
|
35
|
-
gem.add_development_dependency 'fakefs', '~> 0.4'
|
36
|
-
gem.add_development_dependency 'hashie', '~> 2.0'
|
37
|
-
gem.add_development_dependency 'activesupport'
|
38
|
-
gem.add_development_dependency 'faraday'
|
39
|
-
end
|