pact-mock_service 0.2.3.pre.rc2 → 0.2.3
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 +6 -0
- data/lib/pact/consumer/mock_service/app.rb +80 -64
- data/lib/pact/consumer/mock_service/cors_origin_header_middleware.rb +30 -0
- data/lib/pact/consumer/mock_service/interaction_replay.rb +0 -4
- data/lib/pact/consumer/mock_service/options.rb +7 -14
- data/lib/pact/consumer/mock_service/web_request_administration.rb +1 -5
- data/lib/pact/consumer_contract/request_decorator.rb +5 -5
- data/lib/pact/consumer_contract/response_decorator.rb +0 -4
- data/lib/pact/mock_service/cli.rb +3 -3
- data/lib/pact/mock_service/version.rb +1 -1
- metadata +47 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22b2ac0e4b25a237d1b534c112e0dae09fbf268f
|
4
|
+
data.tar.gz: 2d3d54b21a35501ea75660f2007a17a8be8c12f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 535ec260ca77b6b4e02f7f35959695a0991c5ec62b16c7a9b16411b77665fcbda76873daf20146ff809dc10e2d1ffeb0741570b75a17fd9bcae783f3d521cd56
|
7
|
+
data.tar.gz: 42f362f541e289fe68358cedcb39573c144131615f7b0f78470276fc32c7d39d541c15a534af93289dcd51489a3093bd0e7d97ff6303ea3537a45289a71781bb
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,12 @@ Do this to generate your change history
|
|
2
2
|
|
3
3
|
git log --pretty=format:' * %h - %s (%an, %ad)'
|
4
4
|
|
5
|
+
### 0.2.3 (21 Jan 2015)
|
6
|
+
|
7
|
+
* 560671e - Add support for using Pact::Terms in the path (Beth, Wed Jan 21 07:42:10 2015 +1100)
|
8
|
+
* 4324a97 - Renamed --cors-enabled to --cors (Beth, Wed Jan 21 07:28:34 2015 +1100)
|
9
|
+
* 5f5ee7e - Set Access-Control-Allow-Origin header to the the request Origin when populated. (Beth, Tue Jan 13 16:03:37 2015 +1100)
|
10
|
+
|
5
11
|
### 0.2.3.rc2 (13 Jan 2015)
|
6
12
|
|
7
13
|
* daf0696 - Added --consumer and --provider options to CLI. Automatically write pact if both options are given at startup. (Beth, Mon Jan 5 20:48:47 2015 +1100)
|
@@ -14,6 +14,7 @@ require 'pact/consumer/mock_service/verification_get'
|
|
14
14
|
require 'pact/consumer/mock_service/log_get'
|
15
15
|
require 'pact/consumer/mock_service/pact_post'
|
16
16
|
require 'pact/consumer/mock_service/options'
|
17
|
+
require 'pact/consumer/mock_service/cors_origin_header_middleware'
|
17
18
|
require 'pact/support'
|
18
19
|
|
19
20
|
module Pact
|
@@ -22,85 +23,100 @@ module Pact
|
|
22
23
|
class MockService
|
23
24
|
|
24
25
|
def initialize options = {}
|
25
|
-
|
26
|
-
|
27
|
-
@name = options.fetch(:name, "MockService")
|
28
|
-
pact_dir = options[:pact_dir]
|
29
|
-
expected_interactions = ExpectedInteractions.new
|
30
|
-
actual_interactions = ActualInteractions.new
|
31
|
-
verified_interactions = VerifiedInteractions.new
|
32
|
-
@consumer_contact_details = {
|
33
|
-
pact_dir: options[:pact_dir],
|
34
|
-
consumer: {name: options[:consumer]},
|
35
|
-
provider: {name: options[:provider]},
|
36
|
-
interactions: verified_interactions
|
37
|
-
}
|
38
|
-
|
39
|
-
@handlers = [
|
40
|
-
Options.new(@name, @logger, options[:cors_enabled]),
|
41
|
-
MissingInteractionsGet.new(@name, @logger, expected_interactions, actual_interactions),
|
42
|
-
VerificationGet.new(@name, @logger, expected_interactions, actual_interactions, log_description),
|
43
|
-
InteractionPost.new(@name, @logger, expected_interactions, verified_interactions),
|
44
|
-
InteractionDelete.new(@name, @logger, expected_interactions, actual_interactions),
|
45
|
-
LogGet.new(@name, @logger),
|
46
|
-
PactPost.new(@name, @logger, verified_interactions, pact_dir, options[:consumer_contract_details]),
|
47
|
-
InteractionReplay.new(@name, @logger, expected_interactions, actual_interactions, verified_interactions, options[:cors_enabled])
|
48
|
-
]
|
26
|
+
inner_app = InnerApp.new(options)
|
27
|
+
@app = CorsOriginHeaderMiddleware.new(inner_app, options[:cors_enabled])
|
49
28
|
end
|
50
29
|
|
51
30
|
def call env
|
52
|
-
|
53
|
-
begin
|
54
|
-
relevant_handler = @handlers.detect { |handler| handler.match? env }
|
55
|
-
res = relevant_handler.respond(env)
|
56
|
-
response = relevant_handler.enable_cors? ? add_cors_header(res) : res
|
57
|
-
rescue StandardError => e
|
58
|
-
@logger.error "Error ocurred in mock service: #{e.class} - #{e.message}"
|
59
|
-
@logger.error e.backtrace.join("\n")
|
60
|
-
response = [500, {'Content-Type' => 'application/json'}, [{message: e.message, backtrace: e.backtrace}.to_json]]
|
61
|
-
rescue Exception => e
|
62
|
-
@logger.error "Exception ocurred in mock service: #{e.class} - #{e.message}"
|
63
|
-
@logger.error e.backtrace.join("\n")
|
64
|
-
raise e
|
65
|
-
end
|
66
|
-
response
|
31
|
+
@app.call env
|
67
32
|
end
|
68
33
|
|
69
|
-
def
|
70
|
-
|
71
|
-
consumer_contract_writer.write if consumer_contract_writer.can_write?
|
34
|
+
def shutdown
|
35
|
+
@app.shutdown
|
72
36
|
end
|
73
37
|
|
74
|
-
|
38
|
+
class InnerApp
|
39
|
+
|
40
|
+
def initialize options = {}
|
41
|
+
log_description = configure_logger options
|
75
42
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
43
|
+
@name = options.fetch(:name, "MockService")
|
44
|
+
pact_dir = options[:pact_dir]
|
45
|
+
expected_interactions = ExpectedInteractions.new
|
46
|
+
actual_interactions = ActualInteractions.new
|
47
|
+
verified_interactions = VerifiedInteractions.new
|
48
|
+
@consumer_contact_details = {
|
49
|
+
pact_dir: options[:pact_dir],
|
50
|
+
consumer: {name: options[:consumer]},
|
51
|
+
provider: {name: options[:provider]},
|
52
|
+
interactions: verified_interactions
|
53
|
+
}
|
82
54
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
55
|
+
@handlers = [
|
56
|
+
Options.new(@name, @logger, options[:cors_enabled]),
|
57
|
+
MissingInteractionsGet.new(@name, @logger, expected_interactions, actual_interactions),
|
58
|
+
VerificationGet.new(@name, @logger, expected_interactions, actual_interactions, log_description),
|
59
|
+
InteractionPost.new(@name, @logger, expected_interactions, verified_interactions),
|
60
|
+
InteractionDelete.new(@name, @logger, expected_interactions, actual_interactions),
|
61
|
+
LogGet.new(@name, @logger),
|
62
|
+
PactPost.new(@name, @logger, verified_interactions, pact_dir, options[:consumer_contract_details]),
|
63
|
+
InteractionReplay.new(@name, @logger, expected_interactions, actual_interactions, verified_interactions, options[:cors_enabled])
|
64
|
+
]
|
87
65
|
end
|
88
|
-
end
|
89
66
|
|
90
|
-
|
91
|
-
|
92
|
-
|
67
|
+
def call env
|
68
|
+
response = []
|
69
|
+
begin
|
70
|
+
relevant_handler = @handlers.detect { |handler| handler.match? env }
|
71
|
+
response = relevant_handler.respond(env)
|
72
|
+
rescue StandardError => e
|
73
|
+
@logger.error "Error ocurred in mock service: #{e.class} - #{e.message}"
|
74
|
+
@logger.error e.backtrace.join("\n")
|
75
|
+
response = [500, {'Content-Type' => 'application/json'}, [{message: e.message, backtrace: e.backtrace}.to_json]]
|
76
|
+
rescue Exception => e
|
77
|
+
@logger.error "Exception ocurred in mock service: #{e.class} - #{e.message}"
|
78
|
+
@logger.error e.backtrace.join("\n")
|
79
|
+
raise e
|
80
|
+
end
|
81
|
+
response
|
82
|
+
end
|
93
83
|
|
94
|
-
|
95
|
-
|
96
|
-
$stdout.puts "\n#{message}"
|
84
|
+
def shutdown
|
85
|
+
write_pact_if_configured
|
97
86
|
end
|
98
|
-
end
|
99
87
|
|
100
|
-
|
101
|
-
|
102
|
-
|
88
|
+
private
|
89
|
+
|
90
|
+
def write_pact_if_configured
|
91
|
+
consumer_contract_writer = ConsumerContractWriter.new(@consumer_contact_details, StdoutLogger.new)
|
92
|
+
consumer_contract_writer.write if consumer_contract_writer.can_write?
|
93
|
+
end
|
103
94
|
|
95
|
+
def configure_logger options
|
96
|
+
options = {log_file: $stdout}.merge options
|
97
|
+
log_stream = options[:log_file]
|
98
|
+
@logger = Logger.new log_stream
|
99
|
+
@logger.formatter = options[:log_formatter] if options[:log_formatter]
|
100
|
+
@logger.level = Pact.configuration.logger.level
|
101
|
+
|
102
|
+
if log_stream.is_a? File
|
103
|
+
File.absolute_path(log_stream).gsub(Dir.pwd + "/", '')
|
104
|
+
else
|
105
|
+
"standard out/err"
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def to_s
|
110
|
+
"#{@name} #{super.to_s}"
|
111
|
+
end
|
112
|
+
|
113
|
+
class StdoutLogger
|
114
|
+
def info message
|
115
|
+
$stdout.puts "\n#{message}"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
104
120
|
end
|
105
121
|
end
|
106
122
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Pact
|
2
|
+
module Consumer
|
3
|
+
class CorsOriginHeaderMiddleware
|
4
|
+
|
5
|
+
def initialize app, cors_enabled
|
6
|
+
@app = app
|
7
|
+
@cors_enabled = cors_enabled
|
8
|
+
end
|
9
|
+
|
10
|
+
def call env
|
11
|
+
response = @app.call env
|
12
|
+
if env['HTTP_X_PACT_MOCK_SERVICE'] || @cors_enabled
|
13
|
+
add_cors_header env, response
|
14
|
+
else
|
15
|
+
response
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def shutdown
|
20
|
+
@app.shutdown
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def add_cors_header env, response
|
26
|
+
[response[0], response[1].merge('Access-Control-Allow-Origin' => env.fetch('HTTP_ORIGIN','*')), response[2]]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -21,20 +21,13 @@ module Pact
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def respond env
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
[]
|
32
|
-
]
|
33
|
-
end
|
34
|
-
|
35
|
-
# Access-Control-Domain does not work on OPTIONs requests.
|
36
|
-
def enable_cors?
|
37
|
-
false
|
24
|
+
cors_headers = {
|
25
|
+
'Access-Control-Allow-Origin' => env.fetch('HTTP_ORIGIN','*'),
|
26
|
+
'Access-Control-Allow-Headers' => headers_from(env)["Access-Control-Request-Headers"],
|
27
|
+
'Access-Control-Allow-Methods' => 'DELETE, POST, GET, HEAD, PUT, TRACE, CONNECT'
|
28
|
+
}
|
29
|
+
logger.info "Received OPTIONS request for mock service administration endpoint #{env['HTTP_ACCESS_CONTROL_REQUEST_METHOD']} #{env['PATH_INFO']}. Returning CORS headers: #{cors_headers.to_json}."
|
30
|
+
[200, cors_headers, []]
|
38
31
|
end
|
39
32
|
|
40
33
|
def is_options_request? env
|
@@ -12,13 +12,9 @@ module Pact
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def as_json options = {}
|
15
|
-
to_hash
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_hash
|
19
15
|
hash = {
|
20
16
|
method: request.method,
|
21
|
-
path:
|
17
|
+
path: path
|
22
18
|
}
|
23
19
|
hash[:query] = query if request.specified?(:query)
|
24
20
|
hash[:headers] = headers if request.specified?(:headers)
|
@@ -30,6 +26,10 @@ module Pact
|
|
30
26
|
|
31
27
|
attr_reader :request
|
32
28
|
|
29
|
+
def path
|
30
|
+
Pact::Reification.from_term(request.path)
|
31
|
+
end
|
32
|
+
|
33
33
|
def headers
|
34
34
|
Pact::Reification.from_term(request.headers)
|
35
35
|
end
|
@@ -13,7 +13,7 @@ module Pact
|
|
13
13
|
method_option :port, aliases: "-p", desc: "Port on which to run the service"
|
14
14
|
method_option :ssl, desc: "Use a self-signed SSL cert to run the service over HTTPS"
|
15
15
|
method_option :log, aliases: "-l", desc: "File to which to log output"
|
16
|
-
method_option :
|
16
|
+
method_option :cors, aliases: "-o", desc: "Support browser security in tests by responding to OPTIONS requests and adding CORS headers to mocked responses"
|
17
17
|
method_option :pact_dir, aliases: "-d", desc: "Directory to which the pacts will be written"
|
18
18
|
method_option :consumer, desc: "Consumer name"
|
19
19
|
method_option :provider, desc: "Provider name"
|
@@ -55,7 +55,7 @@ module Pact
|
|
55
55
|
|
56
56
|
def call_shutdown_hooks
|
57
57
|
begin
|
58
|
-
mock_service.
|
58
|
+
mock_service.shutdown
|
59
59
|
rescue StandardError => e
|
60
60
|
$stderr.puts "Error writing pact on shutdown. #{e.class} - #{e.message}"
|
61
61
|
$stderr.puts e.backtrace.join("\n")
|
@@ -68,7 +68,7 @@ module Pact
|
|
68
68
|
pact_dir: options[:pact_dir],
|
69
69
|
consumer: options[:consumer],
|
70
70
|
provider: options[:provider],
|
71
|
-
cors_enabled: options[:
|
71
|
+
cors_enabled: options[:cors]
|
72
72
|
}
|
73
73
|
service_options[:log_file] = open_log_file if options[:log]
|
74
74
|
service_options
|
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.3
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Fraser
|
@@ -12,230 +12,230 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2015-01-
|
15
|
+
date: 2015-01-20 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rack
|
19
19
|
requirement: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- -
|
21
|
+
- - '>='
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: '0'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
|
-
- -
|
28
|
+
- - '>='
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '0'
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
32
|
name: rspec
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
37
|
version: '2.14'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
requirements:
|
42
|
-
- -
|
42
|
+
- - '>='
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: '2.14'
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: find_a_port
|
47
47
|
requirement: !ruby/object:Gem::Requirement
|
48
48
|
requirements:
|
49
|
-
- -
|
49
|
+
- - ~>
|
50
50
|
- !ruby/object:Gem::Version
|
51
51
|
version: 1.0.1
|
52
52
|
type: :runtime
|
53
53
|
prerelease: false
|
54
54
|
version_requirements: !ruby/object:Gem::Requirement
|
55
55
|
requirements:
|
56
|
-
- -
|
56
|
+
- - ~>
|
57
57
|
- !ruby/object:Gem::Version
|
58
58
|
version: 1.0.1
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: rack-test
|
61
61
|
requirement: !ruby/object:Gem::Requirement
|
62
62
|
requirements:
|
63
|
-
- -
|
63
|
+
- - ~>
|
64
64
|
- !ruby/object:Gem::Version
|
65
65
|
version: 0.6.2
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
68
|
version_requirements: !ruby/object:Gem::Requirement
|
69
69
|
requirements:
|
70
|
-
- -
|
70
|
+
- - ~>
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: 0.6.2
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: thor
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
76
76
|
requirements:
|
77
|
-
- -
|
77
|
+
- - '>='
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '0'
|
80
80
|
type: :runtime
|
81
81
|
prerelease: false
|
82
82
|
version_requirements: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
|
-
- -
|
84
|
+
- - '>='
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: '0'
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
88
|
name: json
|
89
89
|
requirement: !ruby/object:Gem::Requirement
|
90
90
|
requirements:
|
91
|
-
- -
|
91
|
+
- - '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
94
|
type: :runtime
|
95
95
|
prerelease: false
|
96
96
|
version_requirements: !ruby/object:Gem::Requirement
|
97
97
|
requirements:
|
98
|
-
- -
|
98
|
+
- - '>='
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: '0'
|
101
101
|
- !ruby/object:Gem::Dependency
|
102
102
|
name: webrick
|
103
103
|
requirement: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- -
|
105
|
+
- - '>='
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '0'
|
108
108
|
type: :runtime
|
109
109
|
prerelease: false
|
110
110
|
version_requirements: !ruby/object:Gem::Requirement
|
111
111
|
requirements:
|
112
|
-
- -
|
112
|
+
- - '>='
|
113
113
|
- !ruby/object:Gem::Version
|
114
114
|
version: '0'
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: term-ansicolor
|
117
117
|
requirement: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- -
|
119
|
+
- - ~>
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: '1.0'
|
122
122
|
type: :runtime
|
123
123
|
prerelease: false
|
124
124
|
version_requirements: !ruby/object:Gem::Requirement
|
125
125
|
requirements:
|
126
|
-
- -
|
126
|
+
- - ~>
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: '1.0'
|
129
129
|
- !ruby/object:Gem::Dependency
|
130
130
|
name: pact-support
|
131
131
|
requirement: !ruby/object:Gem::Requirement
|
132
132
|
requirements:
|
133
|
-
- -
|
133
|
+
- - ~>
|
134
134
|
- !ruby/object:Gem::Version
|
135
|
-
version: 0.
|
135
|
+
version: 0.2.1
|
136
136
|
type: :runtime
|
137
137
|
prerelease: false
|
138
138
|
version_requirements: !ruby/object:Gem::Requirement
|
139
139
|
requirements:
|
140
|
-
- -
|
140
|
+
- - ~>
|
141
141
|
- !ruby/object:Gem::Version
|
142
|
-
version: 0.
|
142
|
+
version: 0.2.1
|
143
143
|
- !ruby/object:Gem::Dependency
|
144
144
|
name: rake
|
145
145
|
requirement: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
|
-
- -
|
147
|
+
- - ~>
|
148
148
|
- !ruby/object:Gem::Version
|
149
149
|
version: 10.0.3
|
150
150
|
type: :development
|
151
151
|
prerelease: false
|
152
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
153
|
requirements:
|
154
|
-
- -
|
154
|
+
- - ~>
|
155
155
|
- !ruby/object:Gem::Version
|
156
156
|
version: 10.0.3
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: webmock
|
159
159
|
requirement: !ruby/object:Gem::Requirement
|
160
160
|
requirements:
|
161
|
-
- -
|
161
|
+
- - ~>
|
162
162
|
- !ruby/object:Gem::Version
|
163
163
|
version: 1.18.0
|
164
164
|
type: :development
|
165
165
|
prerelease: false
|
166
166
|
version_requirements: !ruby/object:Gem::Requirement
|
167
167
|
requirements:
|
168
|
-
- -
|
168
|
+
- - ~>
|
169
169
|
- !ruby/object:Gem::Version
|
170
170
|
version: 1.18.0
|
171
171
|
- !ruby/object:Gem::Dependency
|
172
172
|
name: pry
|
173
173
|
requirement: !ruby/object:Gem::Requirement
|
174
174
|
requirements:
|
175
|
-
- -
|
175
|
+
- - '>='
|
176
176
|
- !ruby/object:Gem::Version
|
177
177
|
version: '0'
|
178
178
|
type: :development
|
179
179
|
prerelease: false
|
180
180
|
version_requirements: !ruby/object:Gem::Requirement
|
181
181
|
requirements:
|
182
|
-
- -
|
182
|
+
- - '>='
|
183
183
|
- !ruby/object:Gem::Version
|
184
184
|
version: '0'
|
185
185
|
- !ruby/object:Gem::Dependency
|
186
186
|
name: fakefs
|
187
187
|
requirement: !ruby/object:Gem::Requirement
|
188
188
|
requirements:
|
189
|
-
- -
|
189
|
+
- - ~>
|
190
190
|
- !ruby/object:Gem::Version
|
191
191
|
version: '0.4'
|
192
192
|
type: :development
|
193
193
|
prerelease: false
|
194
194
|
version_requirements: !ruby/object:Gem::Requirement
|
195
195
|
requirements:
|
196
|
-
- -
|
196
|
+
- - ~>
|
197
197
|
- !ruby/object:Gem::Version
|
198
198
|
version: '0.4'
|
199
199
|
- !ruby/object:Gem::Dependency
|
200
200
|
name: hashie
|
201
201
|
requirement: !ruby/object:Gem::Requirement
|
202
202
|
requirements:
|
203
|
-
- -
|
203
|
+
- - ~>
|
204
204
|
- !ruby/object:Gem::Version
|
205
205
|
version: '2.0'
|
206
206
|
type: :development
|
207
207
|
prerelease: false
|
208
208
|
version_requirements: !ruby/object:Gem::Requirement
|
209
209
|
requirements:
|
210
|
-
- -
|
210
|
+
- - ~>
|
211
211
|
- !ruby/object:Gem::Version
|
212
212
|
version: '2.0'
|
213
213
|
- !ruby/object:Gem::Dependency
|
214
214
|
name: activesupport
|
215
215
|
requirement: !ruby/object:Gem::Requirement
|
216
216
|
requirements:
|
217
|
-
- -
|
217
|
+
- - '>='
|
218
218
|
- !ruby/object:Gem::Version
|
219
219
|
version: '0'
|
220
220
|
type: :development
|
221
221
|
prerelease: false
|
222
222
|
version_requirements: !ruby/object:Gem::Requirement
|
223
223
|
requirements:
|
224
|
-
- -
|
224
|
+
- - '>='
|
225
225
|
- !ruby/object:Gem::Version
|
226
226
|
version: '0'
|
227
227
|
- !ruby/object:Gem::Dependency
|
228
228
|
name: faraday
|
229
229
|
requirement: !ruby/object:Gem::Requirement
|
230
230
|
requirements:
|
231
|
-
- -
|
231
|
+
- - '>='
|
232
232
|
- !ruby/object:Gem::Version
|
233
233
|
version: '0'
|
234
234
|
type: :development
|
235
235
|
prerelease: false
|
236
236
|
version_requirements: !ruby/object:Gem::Requirement
|
237
237
|
requirements:
|
238
|
-
- -
|
238
|
+
- - '>='
|
239
239
|
- !ruby/object:Gem::Version
|
240
240
|
version: '0'
|
241
241
|
description:
|
@@ -250,17 +250,13 @@ executables:
|
|
250
250
|
extensions: []
|
251
251
|
extra_rdoc_files: []
|
252
252
|
files:
|
253
|
-
- CHANGELOG.md
|
254
|
-
- Gemfile
|
255
|
-
- LICENSE.txt
|
256
|
-
- README.md
|
257
253
|
- bin/pact-mock-service
|
258
254
|
- lib/pact/consumer/app_manager.rb
|
259
255
|
- lib/pact/consumer/interactions_filter.rb
|
260
|
-
- lib/pact/consumer/mock_service.rb
|
261
256
|
- lib/pact/consumer/mock_service/actual_interactions.rb
|
262
257
|
- lib/pact/consumer/mock_service/app.rb
|
263
258
|
- lib/pact/consumer/mock_service/candidate_interactions.rb
|
259
|
+
- lib/pact/consumer/mock_service/cors_origin_header_middleware.rb
|
264
260
|
- lib/pact/consumer/mock_service/expected_interactions.rb
|
265
261
|
- lib/pact/consumer/mock_service/interaction_delete.rb
|
266
262
|
- lib/pact/consumer/mock_service/interaction_mismatch.rb
|
@@ -276,6 +272,7 @@ files:
|
|
276
272
|
- lib/pact/consumer/mock_service/verification_get.rb
|
277
273
|
- lib/pact/consumer/mock_service/verified_interactions.rb
|
278
274
|
- lib/pact/consumer/mock_service/web_request_administration.rb
|
275
|
+
- lib/pact/consumer/mock_service.rb
|
279
276
|
- lib/pact/consumer/mock_service_client.rb
|
280
277
|
- lib/pact/consumer/server.rb
|
281
278
|
- lib/pact/consumer_contract/consumer_contract_decorator.rb
|
@@ -283,12 +280,16 @@ files:
|
|
283
280
|
- lib/pact/consumer_contract/interaction_decorator.rb
|
284
281
|
- lib/pact/consumer_contract/request_decorator.rb
|
285
282
|
- lib/pact/consumer_contract/response_decorator.rb
|
286
|
-
- lib/pact/mock_service.rb
|
287
283
|
- lib/pact/mock_service/cli.rb
|
288
284
|
- lib/pact/mock_service/interaction_decorator.rb
|
289
285
|
- lib/pact/mock_service/request_decorator.rb
|
290
286
|
- lib/pact/mock_service/response_decorator.rb
|
291
287
|
- lib/pact/mock_service/version.rb
|
288
|
+
- lib/pact/mock_service.rb
|
289
|
+
- Gemfile
|
290
|
+
- LICENSE.txt
|
291
|
+
- README.md
|
292
|
+
- CHANGELOG.md
|
292
293
|
homepage: https://github.com/bethesque/pact-mock_service
|
293
294
|
licenses:
|
294
295
|
- MIT
|
@@ -299,17 +300,17 @@ require_paths:
|
|
299
300
|
- lib
|
300
301
|
required_ruby_version: !ruby/object:Gem::Requirement
|
301
302
|
requirements:
|
302
|
-
- -
|
303
|
+
- - '>='
|
303
304
|
- !ruby/object:Gem::Version
|
304
305
|
version: '0'
|
305
306
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
306
307
|
requirements:
|
307
|
-
- -
|
308
|
+
- - '>='
|
308
309
|
- !ruby/object:Gem::Version
|
309
|
-
version:
|
310
|
+
version: '0'
|
310
311
|
requirements: []
|
311
312
|
rubyforge_project:
|
312
|
-
rubygems_version: 2.
|
313
|
+
rubygems_version: 2.0.14
|
313
314
|
signing_key:
|
314
315
|
specification_version: 4
|
315
316
|
summary: Provides a mock service for use with Pact
|