pacto 0.3.0.pre → 0.3.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.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/.rubocop-todo.yml +0 -27
- data/.rubocop.yml +9 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -5
- data/CONTRIBUTING.md +112 -0
- data/Gemfile +5 -0
- data/Guardfile +18 -13
- data/README.md +157 -101
- data/Rakefile +3 -3
- data/features/configuration/strict_matchers.feature +97 -0
- data/features/evolve/README.md +11 -0
- data/features/evolve/existing_services.feature +82 -0
- data/features/generate/README.md +5 -0
- data/features/generate/generation.feature +28 -0
- data/features/steps/pacto_steps.rb +75 -0
- data/features/stub/README.md +2 -0
- data/features/stub/templates.feature +46 -0
- data/features/support/env.rb +11 -5
- data/features/validate/README.md +1 -0
- data/features/validate/body_only.feature +85 -0
- data/features/{journeys/validation.feature → validate/meta_validation.feature} +41 -24
- data/features/validate/validation.feature +36 -0
- data/lib/pacto.rb +61 -33
- data/lib/pacto/contract.rb +18 -15
- data/lib/pacto/contract_factory.rb +14 -11
- data/lib/pacto/contract_files.rb +17 -0
- data/lib/pacto/contract_list.rb +17 -0
- data/lib/pacto/contract_validator.rb +29 -0
- data/lib/pacto/core/configuration.rb +19 -17
- data/lib/pacto/core/contract_registry.rb +43 -0
- data/lib/pacto/core/{callback.rb → hook.rb} +3 -3
- data/lib/pacto/core/modes.rb +33 -0
- data/lib/pacto/core/validation_registry.rb +45 -0
- data/lib/pacto/erb_processor.rb +0 -1
- data/lib/pacto/extensions.rb +18 -4
- data/lib/pacto/generator.rb +34 -49
- data/lib/pacto/generator/filters.rb +41 -0
- data/lib/pacto/hooks/erb_hook.rb +4 -3
- data/lib/pacto/logger.rb +4 -2
- data/lib/pacto/meta_schema.rb +4 -2
- data/lib/pacto/rake_task.rb +28 -25
- data/lib/pacto/request_clause.rb +43 -0
- data/lib/pacto/request_pattern.rb +8 -0
- data/lib/pacto/response_clause.rb +15 -0
- data/lib/pacto/rspec.rb +102 -0
- data/lib/pacto/stubs/uri_pattern.rb +23 -0
- data/lib/pacto/stubs/webmock_adapter.rb +69 -0
- data/lib/pacto/stubs/webmock_helper.rb +71 -0
- data/lib/pacto/ui.rb +7 -0
- data/lib/pacto/uri.rb +9 -0
- data/lib/pacto/validation.rb +57 -0
- data/lib/pacto/validators/body_validator.rb +41 -0
- data/lib/pacto/validators/request_body_validator.rb +23 -0
- data/lib/pacto/validators/response_body_validator.rb +23 -0
- data/lib/pacto/validators/response_header_validator.rb +49 -0
- data/lib/pacto/validators/response_status_validator.rb +24 -0
- data/lib/pacto/version.rb +1 -1
- data/pacto.gemspec +33 -29
- data/resources/contract_schema.json +8 -176
- data/resources/draft-03.json +174 -0
- data/spec/integration/data/strict_contract.json +2 -2
- data/spec/integration/e2e_spec.rb +22 -31
- data/spec/integration/rspec_spec.rb +94 -0
- data/spec/integration/templating_spec.rb +9 -12
- data/{lib → spec}/pacto/server.rb +0 -0
- data/{lib → spec}/pacto/server/dummy.rb +11 -8
- data/{lib → spec}/pacto/server/playback_servlet.rb +1 -1
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/hooks/erb_hook_spec.rb +15 -15
- data/spec/unit/pacto/configuration_spec.rb +2 -10
- data/spec/unit/pacto/contract_factory_spec.rb +16 -13
- data/spec/unit/pacto/contract_files_spec.rb +42 -0
- data/spec/unit/pacto/contract_list_spec.rb +35 -0
- data/spec/unit/pacto/contract_spec.rb +43 -44
- data/spec/unit/pacto/contract_validator_spec.rb +85 -0
- data/spec/unit/pacto/core/configuration_spec.rb +4 -11
- data/spec/unit/pacto/core/contract_registry_spec.rb +119 -0
- data/spec/unit/pacto/core/modes_spec.rb +18 -0
- data/spec/unit/pacto/core/validation_registry_spec.rb +76 -0
- data/spec/unit/pacto/core/validation_spec.rb +60 -0
- data/spec/unit/pacto/extensions_spec.rb +14 -23
- data/spec/unit/pacto/generator/filters_spec.rb +99 -0
- data/spec/unit/pacto/generator_spec.rb +34 -73
- data/spec/unit/pacto/meta_schema_spec.rb +46 -6
- data/spec/unit/pacto/pacto_spec.rb +17 -15
- data/spec/unit/pacto/{request_spec.rb → request_clause_spec.rb} +32 -44
- data/spec/unit/pacto/request_pattern_spec.rb +22 -0
- data/spec/unit/pacto/response_clause_spec.rb +54 -0
- data/spec/unit/pacto/stubs/uri_pattern_spec.rb +28 -0
- data/spec/unit/pacto/stubs/webmock_adapter_spec.rb +205 -0
- data/spec/unit/pacto/stubs/webmock_helper_spec.rb +20 -0
- data/spec/unit/pacto/uri_spec.rb +20 -0
- data/spec/unit/pacto/validators/body_validator_spec.rb +105 -0
- data/spec/unit/pacto/validators/response_header_validator_spec.rb +94 -0
- data/spec/unit/pacto/validators/response_status_validator_spec.rb +20 -0
- metadata +230 -146
- data/features/generation/generation.feature +0 -25
- data/lib/pacto/core/contract_repository.rb +0 -44
- data/lib/pacto/hash_merge_processor.rb +0 -14
- data/lib/pacto/request.rb +0 -57
- data/lib/pacto/response.rb +0 -63
- data/lib/pacto/response_adapter.rb +0 -24
- data/lib/pacto/stubs/built_in.rb +0 -57
- data/spec/unit/pacto/core/contract_repository_spec.rb +0 -133
- data/spec/unit/pacto/hash_merge_processor_spec.rb +0 -20
- data/spec/unit/pacto/response_adapter_spec.rb +0 -25
- data/spec/unit/pacto/response_spec.rb +0 -201
- data/spec/unit/pacto/stubs/built_in_spec.rb +0 -168
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Pacto
|
|
4
|
+
describe URI do
|
|
5
|
+
it 'returns the path appended to the host' do
|
|
6
|
+
uri = URI.for('https://localtest.me', '/bla')
|
|
7
|
+
expect(uri.to_s).to eq 'https://localtest.me/bla'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'uses http as the default scheme for hosts' do
|
|
11
|
+
uri = URI.for('localtest.me', '/bla')
|
|
12
|
+
expect(uri.to_s).to eq 'http://localtest.me/bla'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it 'shows query parameters if initialized with params' do
|
|
16
|
+
uri = URI.for('localtest.me', '/bla', 'param1' => 'ble')
|
|
17
|
+
expect(uri.to_s).to eq 'http://localtest.me/bla?param1=ble'
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
module Pacto
|
|
2
|
+
module Validators
|
|
3
|
+
describe BodyValidator do
|
|
4
|
+
class MyBodyValidator < BodyValidator
|
|
5
|
+
def self.section_name
|
|
6
|
+
'my_section'
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
subject(:validator) { MyBodyValidator }
|
|
11
|
+
let(:string_required) { true }
|
|
12
|
+
let(:body) { 'a simple string' }
|
|
13
|
+
let(:fake_interaction) { double(:fake_interaction, body: body) }
|
|
14
|
+
|
|
15
|
+
describe '#validate' do
|
|
16
|
+
context 'when schema is not specified' do
|
|
17
|
+
let(:schema) { nil }
|
|
18
|
+
|
|
19
|
+
it 'gives no errors without validating body' do
|
|
20
|
+
JSON::Validator.should_not_receive(:fully_validate)
|
|
21
|
+
expect(validator.validate(schema, fake_interaction)).to be_empty
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context 'when the body is a string' do
|
|
26
|
+
# TODO: Apparently a schema has string as keys. Probably we could
|
|
27
|
+
# make convert it into a symbol based key.
|
|
28
|
+
let(:schema) { { 'type' => 'string', 'required' => string_required } }
|
|
29
|
+
|
|
30
|
+
it 'does not validate using JSON Schema' do
|
|
31
|
+
# FIXME: This seems like a design flaw. We're partially reproducing json-schema behavior
|
|
32
|
+
# instead of finding a way to use it.
|
|
33
|
+
JSON::Validator.should_not_receive(:fully_validate)
|
|
34
|
+
validator.validate(schema, fake_interaction)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'if required' do
|
|
38
|
+
it 'does not return an error when body is a string' do
|
|
39
|
+
expect(validator.validate(schema, fake_interaction)).to be_empty
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it 'returns an error when body is nil' do
|
|
43
|
+
expect(fake_interaction).to receive(:body).and_return nil
|
|
44
|
+
expect(validator.validate(schema, fake_interaction).size).to eq 1
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
context 'if not required' do
|
|
49
|
+
let(:string_required) { false }
|
|
50
|
+
|
|
51
|
+
it 'does not return an error when body is a string' do
|
|
52
|
+
expect(validator.validate(schema, fake_interaction)).to be_empty
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it 'does not return an error when body is nil' do
|
|
56
|
+
expect(fake_interaction).to receive(:body).and_return nil
|
|
57
|
+
expect(validator.validate(schema, fake_interaction)).to be_empty
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
context 'if contains pattern' do
|
|
62
|
+
let(:schema) do
|
|
63
|
+
{ type: 'string', required: string_required, pattern: 'a.c' }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
context 'body matches pattern' do
|
|
67
|
+
let(:body) { 'abc' } # This matches the pattern /a.c/
|
|
68
|
+
|
|
69
|
+
it 'does not return an error' do
|
|
70
|
+
expect(validator.validate(schema, fake_interaction)).to be_empty
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
context 'body does not match pattern' do
|
|
75
|
+
let(:body) { 'acb' } # This does not matches the pattern /a.c/
|
|
76
|
+
|
|
77
|
+
it 'returns an error' do
|
|
78
|
+
expect(validator.validate(schema, fake_interaction).size).to eq 1
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
context 'when the body is json' do
|
|
85
|
+
let(:schema) { { type: 'object' } }
|
|
86
|
+
|
|
87
|
+
context 'when body matches' do
|
|
88
|
+
it 'does not return any errors' do
|
|
89
|
+
expect(JSON::Validator).to receive(:fully_validate).and_return([])
|
|
90
|
+
expect(validator.validate(schema, fake_interaction)).to be_empty
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
context 'when body does not match' do
|
|
95
|
+
it 'returns a list of errors' do
|
|
96
|
+
errors = double 'some errors'
|
|
97
|
+
expect(JSON::Validator).to receive(:fully_validate).and_return(errors)
|
|
98
|
+
expect(validator.validate(schema, fake_interaction)).to eq(errors)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
module Pacto
|
|
2
|
+
module Validators
|
|
3
|
+
describe ResponseHeaderValidator do
|
|
4
|
+
subject(:validator) { described_class }
|
|
5
|
+
let(:expected_headers) do
|
|
6
|
+
{
|
|
7
|
+
'Content-Type' => 'application/json'
|
|
8
|
+
}
|
|
9
|
+
end
|
|
10
|
+
describe '#validate' do
|
|
11
|
+
context 'when headers do not match' do
|
|
12
|
+
let(:actual_headers) { {'Content-Type' => 'text/html'} }
|
|
13
|
+
|
|
14
|
+
it 'indicates the exact mismatches' do
|
|
15
|
+
expect(validator.validate(expected_headers, actual_headers)).
|
|
16
|
+
to eq ['Invalid response header Content-Type: expected "application/json" but received "text/html"']
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context 'when headers are missing' do
|
|
21
|
+
let(:actual_headers) { {} }
|
|
22
|
+
let(:expected_headers) do
|
|
23
|
+
{
|
|
24
|
+
'Content-Type' => 'application/json',
|
|
25
|
+
'My-Cool-Header' => 'Whiskey Pie'
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
it 'lists the missing headers' do
|
|
29
|
+
expect(validator.validate(expected_headers, actual_headers)).
|
|
30
|
+
to eq [
|
|
31
|
+
'Missing expected response header: Content-Type',
|
|
32
|
+
'Missing expected response header: My-Cool-Header'
|
|
33
|
+
]
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'when Location Header is expected' do
|
|
38
|
+
before(:each) do
|
|
39
|
+
expected_headers.merge!('Location' => 'http://www.example.com/{foo}/bar')
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context 'and no Location header is sent' do
|
|
43
|
+
let(:actual_headers) { {'Content-Type' => 'application/json'} }
|
|
44
|
+
it 'returns a header error when no Location header is sent' do
|
|
45
|
+
expect(validator.validate(expected_headers, actual_headers)).to eq ['Missing expected response header: Location']
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
context 'but the Location header does not matches the pattern' do
|
|
50
|
+
let(:actual_headers) do
|
|
51
|
+
{
|
|
52
|
+
'Content-Type' => 'application/json',
|
|
53
|
+
'Location' => 'http://www.example.com/foo/bar/baz'
|
|
54
|
+
}
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'returns a validation error' do
|
|
58
|
+
expect(validator.validate(expected_headers, actual_headers)).to eq ["Invalid response header Location: expected URI #{actual_headers['Location']} to match URI Template #{expected_headers['Location']}"]
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
context 'and the Location header matches pattern' do
|
|
63
|
+
let(:actual_headers) do
|
|
64
|
+
{
|
|
65
|
+
'Content-Type' => 'application/json',
|
|
66
|
+
'Location' => 'http://www.example.com/foo/bar'
|
|
67
|
+
}
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it 'validates successfully' do
|
|
71
|
+
expect(validator.validate(expected_headers, actual_headers)).to be_empty
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
context 'when headers are a subset of expected headers' do
|
|
77
|
+
let(:actual_headers) { {'Content-Type' => 'application/json'} }
|
|
78
|
+
|
|
79
|
+
it 'does not return any errors' do
|
|
80
|
+
expect(validator.validate(expected_headers, actual_headers)).to be_empty
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
context 'when headers values match but keys have different case' do
|
|
85
|
+
let(:actual_headers) { {'content-type' => 'application/json'} }
|
|
86
|
+
|
|
87
|
+
it 'does not return any errors' do
|
|
88
|
+
expect(validator.validate(expected_headers, actual_headers)).to be_empty
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Pacto
|
|
2
|
+
module Validators
|
|
3
|
+
describe ResponseStatusValidator do
|
|
4
|
+
subject(:validator) { described_class }
|
|
5
|
+
describe '#validate' do
|
|
6
|
+
context 'when status does not match' do
|
|
7
|
+
it 'returns a status error' do
|
|
8
|
+
expect(validator.validate(200, 500)).to eq ['Invalid status: expected 200 but got 500']
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
context 'when the status matches' do
|
|
13
|
+
it 'returns nil' do
|
|
14
|
+
expect(validator.validate(200, 200)).to be_empty
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
metadata
CHANGED
|
@@ -1,450 +1,534 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pacto
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.0
|
|
5
|
-
prerelease: 6
|
|
4
|
+
version: 0.3.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- ThoughtWorks & Abril
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2014-02-12 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: webmock
|
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
16
|
requirements:
|
|
19
|
-
- -
|
|
17
|
+
- - "~>"
|
|
20
18
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: '
|
|
19
|
+
version: '1.17'
|
|
22
20
|
type: :runtime
|
|
23
21
|
prerelease: false
|
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
23
|
requirements:
|
|
27
|
-
- -
|
|
24
|
+
- - "~>"
|
|
28
25
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '
|
|
26
|
+
version: '1.17'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: middleware
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0.1'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0.1'
|
|
30
41
|
- !ruby/object:Gem::Dependency
|
|
31
42
|
name: multi_json
|
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
44
|
requirements:
|
|
35
|
-
- -
|
|
45
|
+
- - "~>"
|
|
36
46
|
- !ruby/object:Gem::Version
|
|
37
|
-
version: '
|
|
47
|
+
version: '1.8'
|
|
38
48
|
type: :runtime
|
|
39
49
|
prerelease: false
|
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
-
none: false
|
|
42
51
|
requirements:
|
|
43
|
-
- -
|
|
52
|
+
- - "~>"
|
|
44
53
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: '
|
|
54
|
+
version: '1.8'
|
|
46
55
|
- !ruby/object:Gem::Dependency
|
|
47
56
|
name: json-schema
|
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
|
49
|
-
none: false
|
|
50
58
|
requirements:
|
|
51
|
-
- - ~>
|
|
59
|
+
- - "~>"
|
|
52
60
|
- !ruby/object:Gem::Version
|
|
53
61
|
version: '2.0'
|
|
54
62
|
type: :runtime
|
|
55
63
|
prerelease: false
|
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
none: false
|
|
58
65
|
requirements:
|
|
59
|
-
- - ~>
|
|
66
|
+
- - "~>"
|
|
60
67
|
- !ruby/object:Gem::Version
|
|
61
68
|
version: '2.0'
|
|
62
69
|
- !ruby/object:Gem::Dependency
|
|
63
70
|
name: json-generator
|
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
|
65
|
-
none: false
|
|
66
72
|
requirements:
|
|
67
|
-
- -
|
|
73
|
+
- - ">="
|
|
68
74
|
- !ruby/object:Gem::Version
|
|
69
|
-
version:
|
|
75
|
+
version: 0.0.5
|
|
70
76
|
type: :runtime
|
|
71
77
|
prerelease: false
|
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
-
none: false
|
|
74
79
|
requirements:
|
|
75
|
-
- -
|
|
80
|
+
- - ">="
|
|
76
81
|
- !ruby/object:Gem::Version
|
|
77
|
-
version:
|
|
82
|
+
version: 0.0.5
|
|
78
83
|
- !ruby/object:Gem::Dependency
|
|
79
84
|
name: hash-deep-merge
|
|
80
85
|
requirement: !ruby/object:Gem::Requirement
|
|
81
|
-
none: false
|
|
82
86
|
requirements:
|
|
83
|
-
- -
|
|
87
|
+
- - "~>"
|
|
84
88
|
- !ruby/object:Gem::Version
|
|
85
|
-
version: '0'
|
|
89
|
+
version: '0.1'
|
|
86
90
|
type: :runtime
|
|
87
91
|
prerelease: false
|
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
89
|
-
none: false
|
|
90
93
|
requirements:
|
|
91
|
-
- -
|
|
94
|
+
- - "~>"
|
|
92
95
|
- !ruby/object:Gem::Version
|
|
93
|
-
version: '0'
|
|
96
|
+
version: '0.1'
|
|
94
97
|
- !ruby/object:Gem::Dependency
|
|
95
|
-
name:
|
|
98
|
+
name: faraday
|
|
96
99
|
requirement: !ruby/object:Gem::Requirement
|
|
97
|
-
none: false
|
|
98
100
|
requirements:
|
|
99
|
-
- -
|
|
101
|
+
- - "~>"
|
|
100
102
|
- !ruby/object:Gem::Version
|
|
101
|
-
version: '0'
|
|
103
|
+
version: '0.9'
|
|
102
104
|
type: :runtime
|
|
103
105
|
prerelease: false
|
|
104
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
-
none: false
|
|
106
107
|
requirements:
|
|
107
|
-
- -
|
|
108
|
+
- - "~>"
|
|
108
109
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: '0'
|
|
110
|
+
version: '0.9'
|
|
110
111
|
- !ruby/object:Gem::Dependency
|
|
111
112
|
name: addressable
|
|
112
113
|
requirement: !ruby/object:Gem::Requirement
|
|
113
|
-
none: false
|
|
114
114
|
requirements:
|
|
115
|
-
- -
|
|
115
|
+
- - "~>"
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
117
|
+
version: '2.3'
|
|
118
118
|
type: :runtime
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
none: false
|
|
122
121
|
requirements:
|
|
123
|
-
- -
|
|
122
|
+
- - "~>"
|
|
124
123
|
- !ruby/object:Gem::Version
|
|
125
|
-
version: '
|
|
124
|
+
version: '2.3'
|
|
126
125
|
- !ruby/object:Gem::Dependency
|
|
127
|
-
name:
|
|
126
|
+
name: json-schema-generator
|
|
128
127
|
requirement: !ruby/object:Gem::Requirement
|
|
129
|
-
none: false
|
|
130
128
|
requirements:
|
|
131
|
-
- -
|
|
129
|
+
- - ">="
|
|
132
130
|
- !ruby/object:Gem::Version
|
|
133
|
-
version:
|
|
131
|
+
version: 0.0.7
|
|
134
132
|
type: :runtime
|
|
135
133
|
prerelease: false
|
|
136
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
137
|
-
none: false
|
|
138
135
|
requirements:
|
|
139
|
-
- -
|
|
136
|
+
- - ">="
|
|
140
137
|
- !ruby/object:Gem::Version
|
|
141
|
-
version:
|
|
138
|
+
version: 0.0.7
|
|
142
139
|
- !ruby/object:Gem::Dependency
|
|
143
|
-
name:
|
|
140
|
+
name: term-ansicolor
|
|
144
141
|
requirement: !ruby/object:Gem::Requirement
|
|
145
|
-
none: false
|
|
146
142
|
requirements:
|
|
147
|
-
- -
|
|
143
|
+
- - "~>"
|
|
148
144
|
- !ruby/object:Gem::Version
|
|
149
|
-
version: '
|
|
145
|
+
version: '1.3'
|
|
150
146
|
type: :runtime
|
|
151
147
|
prerelease: false
|
|
152
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
153
|
-
none: false
|
|
154
149
|
requirements:
|
|
155
|
-
- -
|
|
150
|
+
- - "~>"
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '1.3'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: coveralls
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - ">="
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '0'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ">="
|
|
156
165
|
- !ruby/object:Gem::Version
|
|
157
166
|
version: '0'
|
|
158
167
|
- !ruby/object:Gem::Dependency
|
|
159
168
|
name: rake
|
|
160
169
|
requirement: !ruby/object:Gem::Requirement
|
|
161
|
-
none: false
|
|
162
170
|
requirements:
|
|
163
|
-
- -
|
|
171
|
+
- - ">="
|
|
164
172
|
- !ruby/object:Gem::Version
|
|
165
173
|
version: '0'
|
|
166
174
|
type: :development
|
|
167
175
|
prerelease: false
|
|
168
176
|
version_requirements: !ruby/object:Gem::Requirement
|
|
169
|
-
none: false
|
|
170
177
|
requirements:
|
|
171
|
-
- -
|
|
178
|
+
- - ">="
|
|
172
179
|
- !ruby/object:Gem::Version
|
|
173
180
|
version: '0'
|
|
174
181
|
- !ruby/object:Gem::Dependency
|
|
175
|
-
name:
|
|
182
|
+
name: rake-notes
|
|
176
183
|
requirement: !ruby/object:Gem::Requirement
|
|
177
|
-
none: false
|
|
178
184
|
requirements:
|
|
179
|
-
- -
|
|
185
|
+
- - ">="
|
|
180
186
|
- !ruby/object:Gem::Version
|
|
181
187
|
version: '0'
|
|
182
188
|
type: :development
|
|
183
189
|
prerelease: false
|
|
184
190
|
version_requirements: !ruby/object:Gem::Requirement
|
|
185
|
-
none: false
|
|
186
191
|
requirements:
|
|
187
|
-
- -
|
|
192
|
+
- - ">="
|
|
188
193
|
- !ruby/object:Gem::Version
|
|
189
194
|
version: '0'
|
|
195
|
+
- !ruby/object:Gem::Dependency
|
|
196
|
+
name: rspec
|
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
|
198
|
+
requirements:
|
|
199
|
+
- - "~>"
|
|
200
|
+
- !ruby/object:Gem::Version
|
|
201
|
+
version: '2.14'
|
|
202
|
+
type: :development
|
|
203
|
+
prerelease: false
|
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
205
|
+
requirements:
|
|
206
|
+
- - "~>"
|
|
207
|
+
- !ruby/object:Gem::Version
|
|
208
|
+
version: '2.14'
|
|
190
209
|
- !ruby/object:Gem::Dependency
|
|
191
210
|
name: should_not
|
|
192
211
|
requirement: !ruby/object:Gem::Requirement
|
|
193
|
-
none: false
|
|
194
212
|
requirements:
|
|
195
|
-
- -
|
|
213
|
+
- - ">="
|
|
196
214
|
- !ruby/object:Gem::Version
|
|
197
215
|
version: '0'
|
|
198
216
|
type: :development
|
|
199
217
|
prerelease: false
|
|
200
218
|
version_requirements: !ruby/object:Gem::Requirement
|
|
201
|
-
none: false
|
|
202
219
|
requirements:
|
|
203
|
-
- -
|
|
220
|
+
- - ">="
|
|
204
221
|
- !ruby/object:Gem::Version
|
|
205
222
|
version: '0'
|
|
206
223
|
- !ruby/object:Gem::Dependency
|
|
207
224
|
name: aruba
|
|
208
225
|
requirement: !ruby/object:Gem::Requirement
|
|
209
|
-
none: false
|
|
210
226
|
requirements:
|
|
211
|
-
- -
|
|
227
|
+
- - ">="
|
|
212
228
|
- !ruby/object:Gem::Version
|
|
213
229
|
version: '0'
|
|
214
230
|
type: :development
|
|
215
231
|
prerelease: false
|
|
216
232
|
version_requirements: !ruby/object:Gem::Requirement
|
|
217
|
-
none: false
|
|
218
233
|
requirements:
|
|
219
|
-
- -
|
|
234
|
+
- - ">="
|
|
220
235
|
- !ruby/object:Gem::Version
|
|
221
236
|
version: '0'
|
|
222
237
|
- !ruby/object:Gem::Dependency
|
|
223
|
-
name:
|
|
238
|
+
name: relish
|
|
224
239
|
requirement: !ruby/object:Gem::Requirement
|
|
225
|
-
none: false
|
|
226
240
|
requirements:
|
|
227
|
-
- -
|
|
241
|
+
- - ">="
|
|
228
242
|
- !ruby/object:Gem::Version
|
|
229
243
|
version: '0'
|
|
230
244
|
type: :development
|
|
231
245
|
prerelease: false
|
|
232
246
|
version_requirements: !ruby/object:Gem::Requirement
|
|
233
|
-
none: false
|
|
234
247
|
requirements:
|
|
235
|
-
- -
|
|
248
|
+
- - ">="
|
|
236
249
|
- !ruby/object:Gem::Version
|
|
237
250
|
version: '0'
|
|
238
251
|
- !ruby/object:Gem::Dependency
|
|
239
|
-
name:
|
|
252
|
+
name: guard-rspec
|
|
240
253
|
requirement: !ruby/object:Gem::Requirement
|
|
241
|
-
none: false
|
|
242
254
|
requirements:
|
|
243
|
-
- -
|
|
255
|
+
- - ">="
|
|
244
256
|
- !ruby/object:Gem::Version
|
|
245
257
|
version: '0'
|
|
246
258
|
type: :development
|
|
247
259
|
prerelease: false
|
|
248
260
|
version_requirements: !ruby/object:Gem::Requirement
|
|
249
|
-
none: false
|
|
250
261
|
requirements:
|
|
251
|
-
- -
|
|
262
|
+
- - ">="
|
|
252
263
|
- !ruby/object:Gem::Version
|
|
253
264
|
version: '0'
|
|
265
|
+
- !ruby/object:Gem::Dependency
|
|
266
|
+
name: rubocop
|
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
|
268
|
+
requirements:
|
|
269
|
+
- - "~>"
|
|
270
|
+
- !ruby/object:Gem::Version
|
|
271
|
+
version: 0.16.0
|
|
272
|
+
type: :development
|
|
273
|
+
prerelease: false
|
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
275
|
+
requirements:
|
|
276
|
+
- - "~>"
|
|
277
|
+
- !ruby/object:Gem::Version
|
|
278
|
+
version: 0.16.0
|
|
254
279
|
- !ruby/object:Gem::Dependency
|
|
255
280
|
name: guard-rubocop
|
|
256
281
|
requirement: !ruby/object:Gem::Requirement
|
|
257
|
-
none: false
|
|
258
282
|
requirements:
|
|
259
|
-
- -
|
|
283
|
+
- - ">="
|
|
260
284
|
- !ruby/object:Gem::Version
|
|
261
285
|
version: '0'
|
|
262
286
|
type: :development
|
|
263
287
|
prerelease: false
|
|
264
288
|
version_requirements: !ruby/object:Gem::Requirement
|
|
265
|
-
none: false
|
|
266
289
|
requirements:
|
|
267
|
-
- -
|
|
290
|
+
- - ">="
|
|
268
291
|
- !ruby/object:Gem::Version
|
|
269
292
|
version: '0'
|
|
270
293
|
- !ruby/object:Gem::Dependency
|
|
271
294
|
name: guard-cucumber
|
|
272
295
|
requirement: !ruby/object:Gem::Requirement
|
|
273
|
-
none: false
|
|
274
296
|
requirements:
|
|
275
|
-
- -
|
|
297
|
+
- - ">="
|
|
276
298
|
- !ruby/object:Gem::Version
|
|
277
299
|
version: '0'
|
|
278
300
|
type: :development
|
|
279
301
|
prerelease: false
|
|
280
302
|
version_requirements: !ruby/object:Gem::Requirement
|
|
281
|
-
none: false
|
|
282
303
|
requirements:
|
|
283
|
-
- -
|
|
304
|
+
- - ">="
|
|
284
305
|
- !ruby/object:Gem::Version
|
|
285
306
|
version: '0'
|
|
286
307
|
- !ruby/object:Gem::Dependency
|
|
287
308
|
name: rb-fsevent
|
|
288
309
|
requirement: !ruby/object:Gem::Requirement
|
|
289
|
-
none: false
|
|
290
310
|
requirements:
|
|
291
|
-
- -
|
|
311
|
+
- - ">="
|
|
292
312
|
- !ruby/object:Gem::Version
|
|
293
313
|
version: '0'
|
|
294
314
|
type: :development
|
|
295
315
|
prerelease: false
|
|
296
316
|
version_requirements: !ruby/object:Gem::Requirement
|
|
297
|
-
none: false
|
|
298
317
|
requirements:
|
|
299
|
-
- -
|
|
318
|
+
- - ">="
|
|
300
319
|
- !ruby/object:Gem::Version
|
|
301
320
|
version: '0'
|
|
302
321
|
- !ruby/object:Gem::Dependency
|
|
303
322
|
name: terminal-notifier-guard
|
|
304
323
|
requirement: !ruby/object:Gem::Requirement
|
|
305
|
-
none: false
|
|
306
324
|
requirements:
|
|
307
|
-
- -
|
|
325
|
+
- - ">="
|
|
308
326
|
- !ruby/object:Gem::Version
|
|
309
327
|
version: '0'
|
|
310
328
|
type: :development
|
|
311
329
|
prerelease: false
|
|
312
330
|
version_requirements: !ruby/object:Gem::Requirement
|
|
313
|
-
none: false
|
|
314
331
|
requirements:
|
|
315
|
-
- -
|
|
332
|
+
- - ">="
|
|
316
333
|
- !ruby/object:Gem::Version
|
|
317
334
|
version: '0'
|
|
318
|
-
description: Pacto is a
|
|
319
|
-
|
|
335
|
+
description: Pacto is a judge that arbitrates contract disputes between a service
|
|
336
|
+
provider and one or more consumers. In other words, it is a framework for Integration
|
|
337
|
+
Contract Testing, and helps guide service evolution patterns like Consumer-Driven
|
|
338
|
+
Contracts or Documentation-Driven Contracts.
|
|
320
339
|
email:
|
|
321
|
-
-
|
|
340
|
+
- pacto-gem@googlegroups.com
|
|
322
341
|
executables: []
|
|
323
342
|
extensions: []
|
|
324
343
|
extra_rdoc_files: []
|
|
325
344
|
files:
|
|
326
|
-
- .gitignore
|
|
327
|
-
- .rspec
|
|
328
|
-
- .rubocop-todo.yml
|
|
329
|
-
- .rubocop.yml
|
|
330
|
-
- .
|
|
345
|
+
- ".gitignore"
|
|
346
|
+
- ".rspec"
|
|
347
|
+
- ".rubocop-todo.yml"
|
|
348
|
+
- ".rubocop.yml"
|
|
349
|
+
- ".ruby-gemset"
|
|
350
|
+
- ".ruby-version"
|
|
351
|
+
- ".travis.yml"
|
|
352
|
+
- CONTRIBUTING.md
|
|
331
353
|
- Gemfile
|
|
332
354
|
- Guardfile
|
|
333
355
|
- LICENSE.txt
|
|
334
356
|
- README.md
|
|
335
357
|
- Rakefile
|
|
336
358
|
- TODO.md
|
|
337
|
-
- features/
|
|
338
|
-
- features/
|
|
359
|
+
- features/configuration/strict_matchers.feature
|
|
360
|
+
- features/evolve/README.md
|
|
361
|
+
- features/evolve/existing_services.feature
|
|
362
|
+
- features/generate/README.md
|
|
363
|
+
- features/generate/generation.feature
|
|
364
|
+
- features/steps/pacto_steps.rb
|
|
365
|
+
- features/stub/README.md
|
|
366
|
+
- features/stub/templates.feature
|
|
339
367
|
- features/support/env.rb
|
|
368
|
+
- features/validate/README.md
|
|
369
|
+
- features/validate/body_only.feature
|
|
370
|
+
- features/validate/meta_validation.feature
|
|
371
|
+
- features/validate/validation.feature
|
|
340
372
|
- lib/pacto.rb
|
|
341
373
|
- lib/pacto/contract.rb
|
|
342
374
|
- lib/pacto/contract_factory.rb
|
|
343
|
-
- lib/pacto/
|
|
375
|
+
- lib/pacto/contract_files.rb
|
|
376
|
+
- lib/pacto/contract_list.rb
|
|
377
|
+
- lib/pacto/contract_validator.rb
|
|
344
378
|
- lib/pacto/core/configuration.rb
|
|
345
|
-
- lib/pacto/core/
|
|
379
|
+
- lib/pacto/core/contract_registry.rb
|
|
380
|
+
- lib/pacto/core/hook.rb
|
|
381
|
+
- lib/pacto/core/modes.rb
|
|
382
|
+
- lib/pacto/core/validation_registry.rb
|
|
346
383
|
- lib/pacto/erb_processor.rb
|
|
347
384
|
- lib/pacto/exceptions/invalid_contract.rb
|
|
348
385
|
- lib/pacto/extensions.rb
|
|
349
386
|
- lib/pacto/generator.rb
|
|
350
|
-
- lib/pacto/
|
|
387
|
+
- lib/pacto/generator/filters.rb
|
|
351
388
|
- lib/pacto/hooks/erb_hook.rb
|
|
352
389
|
- lib/pacto/logger.rb
|
|
353
390
|
- lib/pacto/meta_schema.rb
|
|
354
391
|
- lib/pacto/rake_task.rb
|
|
355
|
-
- lib/pacto/
|
|
356
|
-
- lib/pacto/
|
|
357
|
-
- lib/pacto/
|
|
358
|
-
- lib/pacto/
|
|
359
|
-
- lib/pacto/
|
|
360
|
-
- lib/pacto/
|
|
361
|
-
- lib/pacto/stubs/
|
|
392
|
+
- lib/pacto/request_clause.rb
|
|
393
|
+
- lib/pacto/request_pattern.rb
|
|
394
|
+
- lib/pacto/response_clause.rb
|
|
395
|
+
- lib/pacto/rspec.rb
|
|
396
|
+
- lib/pacto/stubs/uri_pattern.rb
|
|
397
|
+
- lib/pacto/stubs/webmock_adapter.rb
|
|
398
|
+
- lib/pacto/stubs/webmock_helper.rb
|
|
399
|
+
- lib/pacto/ui.rb
|
|
400
|
+
- lib/pacto/uri.rb
|
|
401
|
+
- lib/pacto/validation.rb
|
|
402
|
+
- lib/pacto/validators/body_validator.rb
|
|
403
|
+
- lib/pacto/validators/request_body_validator.rb
|
|
404
|
+
- lib/pacto/validators/response_body_validator.rb
|
|
405
|
+
- lib/pacto/validators/response_header_validator.rb
|
|
406
|
+
- lib/pacto/validators/response_status_validator.rb
|
|
362
407
|
- lib/pacto/version.rb
|
|
363
408
|
- pacto.gemspec
|
|
364
409
|
- resources/contract_schema.json
|
|
410
|
+
- resources/draft-03.json
|
|
365
411
|
- spec/coveralls_helper.rb
|
|
366
412
|
- spec/integration/data/simple_contract.json
|
|
367
413
|
- spec/integration/data/strict_contract.json
|
|
368
414
|
- spec/integration/data/templating_contract.json
|
|
369
415
|
- spec/integration/e2e_spec.rb
|
|
416
|
+
- spec/integration/rspec_spec.rb
|
|
370
417
|
- spec/integration/templating_spec.rb
|
|
418
|
+
- spec/pacto/server.rb
|
|
419
|
+
- spec/pacto/server/dummy.rb
|
|
420
|
+
- spec/pacto/server/playback_servlet.rb
|
|
371
421
|
- spec/spec_helper.rb
|
|
372
422
|
- spec/unit/data/contract.json
|
|
373
423
|
- spec/unit/data/simple_contract.json
|
|
374
424
|
- spec/unit/hooks/erb_hook_spec.rb
|
|
375
425
|
- spec/unit/pacto/configuration_spec.rb
|
|
376
426
|
- spec/unit/pacto/contract_factory_spec.rb
|
|
427
|
+
- spec/unit/pacto/contract_files_spec.rb
|
|
428
|
+
- spec/unit/pacto/contract_list_spec.rb
|
|
377
429
|
- spec/unit/pacto/contract_spec.rb
|
|
430
|
+
- spec/unit/pacto/contract_validator_spec.rb
|
|
378
431
|
- spec/unit/pacto/core/configuration_spec.rb
|
|
379
|
-
- spec/unit/pacto/core/
|
|
432
|
+
- spec/unit/pacto/core/contract_registry_spec.rb
|
|
433
|
+
- spec/unit/pacto/core/modes_spec.rb
|
|
434
|
+
- spec/unit/pacto/core/validation_registry_spec.rb
|
|
435
|
+
- spec/unit/pacto/core/validation_spec.rb
|
|
380
436
|
- spec/unit/pacto/erb_processor_spec.rb
|
|
381
437
|
- spec/unit/pacto/extensions_spec.rb
|
|
438
|
+
- spec/unit/pacto/generator/filters_spec.rb
|
|
382
439
|
- spec/unit/pacto/generator_spec.rb
|
|
383
|
-
- spec/unit/pacto/hash_merge_processor_spec.rb
|
|
384
440
|
- spec/unit/pacto/logger_spec.rb
|
|
385
441
|
- spec/unit/pacto/meta_schema_spec.rb
|
|
386
442
|
- spec/unit/pacto/pacto_spec.rb
|
|
387
|
-
- spec/unit/pacto/
|
|
388
|
-
- spec/unit/pacto/
|
|
389
|
-
- spec/unit/pacto/
|
|
443
|
+
- spec/unit/pacto/request_clause_spec.rb
|
|
444
|
+
- spec/unit/pacto/request_pattern_spec.rb
|
|
445
|
+
- spec/unit/pacto/response_clause_spec.rb
|
|
390
446
|
- spec/unit/pacto/server/playback_servlet_spec.rb
|
|
391
|
-
- spec/unit/pacto/stubs/
|
|
392
|
-
|
|
447
|
+
- spec/unit/pacto/stubs/uri_pattern_spec.rb
|
|
448
|
+
- spec/unit/pacto/stubs/webmock_adapter_spec.rb
|
|
449
|
+
- spec/unit/pacto/stubs/webmock_helper_spec.rb
|
|
450
|
+
- spec/unit/pacto/uri_spec.rb
|
|
451
|
+
- spec/unit/pacto/validators/body_validator_spec.rb
|
|
452
|
+
- spec/unit/pacto/validators/response_header_validator_spec.rb
|
|
453
|
+
- spec/unit/pacto/validators/response_status_validator_spec.rb
|
|
454
|
+
homepage: http://thoughtworks.github.io/pacto/
|
|
393
455
|
licenses:
|
|
394
456
|
- MIT
|
|
457
|
+
metadata: {}
|
|
395
458
|
post_install_message:
|
|
396
459
|
rdoc_options: []
|
|
397
460
|
require_paths:
|
|
398
461
|
- lib
|
|
399
462
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
400
|
-
none: false
|
|
401
463
|
requirements:
|
|
402
|
-
- -
|
|
464
|
+
- - ">="
|
|
403
465
|
- !ruby/object:Gem::Version
|
|
404
466
|
version: '0'
|
|
405
|
-
segments:
|
|
406
|
-
- 0
|
|
407
|
-
hash: -1773890357225402507
|
|
408
467
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
409
|
-
none: false
|
|
410
468
|
requirements:
|
|
411
|
-
- -
|
|
469
|
+
- - ">="
|
|
412
470
|
- !ruby/object:Gem::Version
|
|
413
|
-
version:
|
|
471
|
+
version: '0'
|
|
414
472
|
requirements: []
|
|
415
473
|
rubyforge_project:
|
|
416
|
-
rubygems_version:
|
|
474
|
+
rubygems_version: 2.2.0
|
|
417
475
|
signing_key:
|
|
418
|
-
specification_version:
|
|
419
|
-
summary:
|
|
476
|
+
specification_version: 4
|
|
477
|
+
summary: Integration Contract Testing framework
|
|
420
478
|
test_files:
|
|
421
|
-
- features/
|
|
422
|
-
- features/
|
|
479
|
+
- features/configuration/strict_matchers.feature
|
|
480
|
+
- features/evolve/README.md
|
|
481
|
+
- features/evolve/existing_services.feature
|
|
482
|
+
- features/generate/README.md
|
|
483
|
+
- features/generate/generation.feature
|
|
484
|
+
- features/steps/pacto_steps.rb
|
|
485
|
+
- features/stub/README.md
|
|
486
|
+
- features/stub/templates.feature
|
|
423
487
|
- features/support/env.rb
|
|
488
|
+
- features/validate/README.md
|
|
489
|
+
- features/validate/body_only.feature
|
|
490
|
+
- features/validate/meta_validation.feature
|
|
491
|
+
- features/validate/validation.feature
|
|
424
492
|
- spec/coveralls_helper.rb
|
|
425
493
|
- spec/integration/data/simple_contract.json
|
|
426
494
|
- spec/integration/data/strict_contract.json
|
|
427
495
|
- spec/integration/data/templating_contract.json
|
|
428
496
|
- spec/integration/e2e_spec.rb
|
|
497
|
+
- spec/integration/rspec_spec.rb
|
|
429
498
|
- spec/integration/templating_spec.rb
|
|
499
|
+
- spec/pacto/server.rb
|
|
500
|
+
- spec/pacto/server/dummy.rb
|
|
501
|
+
- spec/pacto/server/playback_servlet.rb
|
|
430
502
|
- spec/spec_helper.rb
|
|
431
503
|
- spec/unit/data/contract.json
|
|
432
504
|
- spec/unit/data/simple_contract.json
|
|
433
505
|
- spec/unit/hooks/erb_hook_spec.rb
|
|
434
506
|
- spec/unit/pacto/configuration_spec.rb
|
|
435
507
|
- spec/unit/pacto/contract_factory_spec.rb
|
|
508
|
+
- spec/unit/pacto/contract_files_spec.rb
|
|
509
|
+
- spec/unit/pacto/contract_list_spec.rb
|
|
436
510
|
- spec/unit/pacto/contract_spec.rb
|
|
511
|
+
- spec/unit/pacto/contract_validator_spec.rb
|
|
437
512
|
- spec/unit/pacto/core/configuration_spec.rb
|
|
438
|
-
- spec/unit/pacto/core/
|
|
513
|
+
- spec/unit/pacto/core/contract_registry_spec.rb
|
|
514
|
+
- spec/unit/pacto/core/modes_spec.rb
|
|
515
|
+
- spec/unit/pacto/core/validation_registry_spec.rb
|
|
516
|
+
- spec/unit/pacto/core/validation_spec.rb
|
|
439
517
|
- spec/unit/pacto/erb_processor_spec.rb
|
|
440
518
|
- spec/unit/pacto/extensions_spec.rb
|
|
519
|
+
- spec/unit/pacto/generator/filters_spec.rb
|
|
441
520
|
- spec/unit/pacto/generator_spec.rb
|
|
442
|
-
- spec/unit/pacto/hash_merge_processor_spec.rb
|
|
443
521
|
- spec/unit/pacto/logger_spec.rb
|
|
444
522
|
- spec/unit/pacto/meta_schema_spec.rb
|
|
445
523
|
- spec/unit/pacto/pacto_spec.rb
|
|
446
|
-
- spec/unit/pacto/
|
|
447
|
-
- spec/unit/pacto/
|
|
448
|
-
- spec/unit/pacto/
|
|
524
|
+
- spec/unit/pacto/request_clause_spec.rb
|
|
525
|
+
- spec/unit/pacto/request_pattern_spec.rb
|
|
526
|
+
- spec/unit/pacto/response_clause_spec.rb
|
|
449
527
|
- spec/unit/pacto/server/playback_servlet_spec.rb
|
|
450
|
-
- spec/unit/pacto/stubs/
|
|
528
|
+
- spec/unit/pacto/stubs/uri_pattern_spec.rb
|
|
529
|
+
- spec/unit/pacto/stubs/webmock_adapter_spec.rb
|
|
530
|
+
- spec/unit/pacto/stubs/webmock_helper_spec.rb
|
|
531
|
+
- spec/unit/pacto/uri_spec.rb
|
|
532
|
+
- spec/unit/pacto/validators/body_validator_spec.rb
|
|
533
|
+
- spec/unit/pacto/validators/response_header_validator_spec.rb
|
|
534
|
+
- spec/unit/pacto/validators/response_status_validator_spec.rb
|