pact_broker 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +33 -0
- data/.csslintrc +2 -0
- data/.eslintignore +1 -0
- data/.eslintrc.yml +277 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +1156 -0
- data/.travis.yml +11 -3
- data/CHANGELOG.md +12 -0
- data/Gemfile +2 -0
- data/README.md +20 -5
- data/RELEASING.md +1 -1
- data/lib/pact_broker/api/decorators/pact_decorator.rb +28 -9
- data/lib/pact_broker/api/decorators/pact_version_decorator.rb +0 -10
- data/lib/pact_broker/api/decorators/pact_versions_decorator.rb +8 -4
- data/lib/pact_broker/api/decorators/version_decorator.rb +22 -6
- data/lib/pact_broker/api/pact_broker_urls.rb +4 -0
- data/lib/pact_broker/api/renderers/html_pact_renderer.rb +12 -1
- data/lib/pact_broker/domain/pact.rb +4 -0
- data/lib/pact_broker/version.rb +1 -1
- data/pact_broker.gemspec +6 -6
- data/spec/lib/pact_broker/api/decorators/embedded_tag_decorator_spec.rb +2 -1
- data/spec/lib/pact_broker/api/decorators/embedded_version_decorator_spec.rb +2 -2
- data/spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb +12 -3
- data/spec/lib/pact_broker/api/decorators/version_decorator_spec.rb +13 -2
- data/spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb +2 -1
- data/spec/service_consumers/pact_helper.rb +4 -1
- data/spec/spec_helper.rb +3 -0
- data/tasks/rspec.rake +4 -0
- metadata +38 -33
data/.travis.yml
CHANGED
@@ -9,12 +9,20 @@ services:
|
|
9
9
|
addons:
|
10
10
|
postgresql: "9.5"
|
11
11
|
env:
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
global:
|
13
|
+
- CC_TEST_REPORTER_ID=dc2c30b67c9e2a5309e1aef699c30fdab55ba4f0e4f1beac029ba93e293835db
|
14
|
+
- GIT_COMMITTED_AT=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then git log -1 --pretty=format:%ct; else git log -1 --skip 1 --pretty=format:%ct; fi)
|
15
|
+
matrix:
|
16
|
+
- DATABASE_ADAPTER=default RUBYOPT="-W0"
|
17
|
+
- DATABASE_ADAPTER=postgres RUBYOPT="-W0"
|
18
|
+
- DATABASE_ADAPTER=mysql RUBYOPT="-W0"
|
15
19
|
before_script:
|
16
20
|
- cp config/database.travis.yml config/database.yml
|
17
21
|
- psql -U postgres -c "CREATE DATABASE pact_broker;"
|
18
22
|
- mysql -e 'CREATE DATABASE pact_broker;'
|
23
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
24
|
+
- chmod +x ./cc-test-reporter
|
19
25
|
script:
|
20
26
|
- bundle exec rake
|
27
|
+
- if [ "$DATABASE_ADAPTER" == "postgres" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi
|
28
|
+
- bundle exec bundle-audit update && bundle exec bundle-audit
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,18 @@ Do this to generate your change history
|
|
2
2
|
|
3
3
|
$ git log --pretty=format:' * %h - %s (%an, %ad)'
|
4
4
|
|
5
|
+
#### 2.2.0 (2017-07-04)
|
6
|
+
* 788c5d0 - chore(gems): Lock rack and red-carpet gem versions for hakiri (Beth Skurrie, Tue Jul 4 10:28:15 2017 +1000)
|
7
|
+
* f1abebe - chore(gems): Upgrade pact gems (Beth Skurrie, Tue Jul 4 10:10:55 2017 +1000)
|
8
|
+
* 5bccca2 - chore(gems): Upgrade rack-protection and padrino-core gems (Beth Skurrie, Tue Jul 4 10:07:58 2017 +1000)
|
9
|
+
* 5c1392d - chore(build): Add code climate test coverage reporter (Beth Skurrie, Tue Jul 4 09:02:09 2017 +1000)
|
10
|
+
* 6e73420 - chore(build): Add bundle-audit to build (Beth Skurrie, Tue Jul 4 08:09:49 2017 +1000)
|
11
|
+
* de9f493 - fix(pact versions decorator): Corrected use of title and name (Beth Skurrie, Mon Jul 3 19:45:28 2017 +1000)
|
12
|
+
* 90d4410 - feat(HTML pact): Add home link to HTML pact (Beth Skurrie, Mon Jul 3 16:57:57 2017 +1000)
|
13
|
+
* 4eb2095 - feat(HTML pact): Add tag names next to consumer version number (Beth Skurrie, Mon Jul 3 16:56:56 2017 +1000)
|
14
|
+
* 1f66b6d - feat(version): Add HAL links to pacts from version resource (Beth Skurrie, Mon Jul 3 16:34:34 2017 +1000)
|
15
|
+
* 3f61fb3 - feat(retrieve latest pact): Add HAL links for latest-untagged and latest/{tag} (Beth Skurrie, Mon Jul 3 16:17:54 2017 +1000)
|
16
|
+
|
5
17
|
#### 2.1.1 (2017-07-03)
|
6
18
|
* f7af21a - fix(gemspec) (Beth Skurrie, Mon Jul 3 09:53:02 2017 +1000)
|
7
19
|
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Pact Broker
|
2
|
-
|
3
|
-
[![Build Status](https://travis-ci.org/pact-foundation/pact_broker.svg?branch=master)](https://travis-ci.org/pact-foundation/pact_broker) [![Join the chat at https://gitter.im/pact-foundation/pact_broker](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/pact-foundation/pact_broker?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/pact_broker.svg)](http://badge.fury.io/rb/pact_broker)
|
3
|
+
[![Build Status](https://travis-ci.org/pact-foundation/pact_broker.svg?branch=master)](https://travis-ci.org/pact-foundation/pact_broker) [![Join the chat at https://gitter.im/pact-foundation/pact_broker](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/pact-foundation/pact_broker?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/pact-foundation/pact_broker/badges/gpa.svg)](https://codeclimate.com/github/pact-foundation/pact_broker)
|
5
|
+
[![Test Coverage](https://codeclimate.com/github/pact-foundation/pact_broker/badges/coverage.svg)](https://codeclimate.com/github/pact-foundation/pact_broker/coverage)
|
6
|
+
[![Issue Count](https://codeclimate.com/github/pact-foundation/pact_broker/badges/issue_count.svg)](https://codeclimate.com/github/pact-foundation/pact_broker)
|
7
|
+
[![Dependency Status](https://gemnasium.com/badges/github.com/pact-foundation/pact_broker.svg)](https://gemnasium.com/github.com/pact-foundation/pact_broker)
|
4
8
|
|
5
9
|
The Pact Broker provides a repository for consumer driven contracts created using the pact gem.
|
6
10
|
|
@@ -44,9 +48,15 @@ If you don't have a [Pact Broker CI Nerf Gun][nerf], you'll probably want to rea
|
|
44
48
|
|
45
49
|
## Documentation
|
46
50
|
|
47
|
-
See the [
|
51
|
+
See the [wiki][wiki] for documentation on the Pact Broker.
|
52
|
+
|
53
|
+
## Support
|
48
54
|
|
49
|
-
|
55
|
+
* Check the [wiki][wiki] first.
|
56
|
+
* See if there is an existing or closed [issue][issues] and raise a new issue if not.
|
57
|
+
* See if there is an existing question on [stackoverflow][stackoverflow] tagged with `pact-broker`, and ask a new question if not.
|
58
|
+
* Have a chat to us on the Pact [gitter][gitter].
|
59
|
+
* Tweet us at [@pact_up][twitter] on the twitters.
|
50
60
|
|
51
61
|
### Screenshots
|
52
62
|
|
@@ -101,7 +111,7 @@ In a hurry? Hate having to run your own infrastructure? Check out the [Hosted Pa
|
|
101
111
|
|
102
112
|
#### Container solutions
|
103
113
|
|
104
|
-
You can use the [Pact Broker Docker container][docker] or [Terraform on AWS][terraform]
|
114
|
+
You can use the [Pact Broker Docker container][docker] or [Terraform on AWS][terraform]
|
105
115
|
|
106
116
|
#### Rolling your own
|
107
117
|
|
@@ -121,3 +131,8 @@ You can use the [Pact Broker Docker container][docker] or [Terraform on AWS][ter
|
|
121
131
|
[docker]: https://hub.docker.com/r/dius/pact-broker
|
122
132
|
[terraform]: https://github.com/nadnerb/terraform-pact-broker
|
123
133
|
[hosted]: https://pact.dius.com.au/?utm_source=github&utm_campaign=GITHUB_BROKER&utm_medium=github
|
134
|
+
[wiki]: https://github.com/pact-foundation/pact_broker/wiki
|
135
|
+
[stackoverflow]: http://stackoverflow.com/questions/tagged/pact-broker
|
136
|
+
[twitter]: https://twitter.com/pact_up
|
137
|
+
[gitter]: https://gitter.im/realestate-com-au/pact
|
138
|
+
[issues]: https://github.com/pact-foundation/pact_broker/issues
|
data/RELEASING.md
CHANGED
@@ -37,6 +37,14 @@ module PactBroker
|
|
37
37
|
}
|
38
38
|
end
|
39
39
|
|
40
|
+
link :'pb:consumer-version' do | options |
|
41
|
+
{
|
42
|
+
title: "Consumer version",
|
43
|
+
name: represented.consumer_version_number,
|
44
|
+
href: version_url(options.fetch(:base_url), represented.consumer_version)
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
40
48
|
link :'pb:provider' do | options |
|
41
49
|
{
|
42
50
|
title: "Provider",
|
@@ -45,6 +53,7 @@ module PactBroker
|
|
45
53
|
}
|
46
54
|
end
|
47
55
|
|
56
|
+
|
48
57
|
link :'pb:latest-pact-version' do | options |
|
49
58
|
{
|
50
59
|
title: "Pact",
|
@@ -54,6 +63,23 @@ module PactBroker
|
|
54
63
|
}
|
55
64
|
end
|
56
65
|
|
66
|
+
link :'pb:latest-untagged-pact-version' do | options |
|
67
|
+
{
|
68
|
+
title: "Pact",
|
69
|
+
name: "Latest untagged version of this pact",
|
70
|
+
href: latest_untagged_pact_url(represented, options.fetch(:base_url))
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
link :'pb:latest-tagged-pact-version' do | options |
|
75
|
+
{
|
76
|
+
title: "Pact",
|
77
|
+
name: "Latest tagged version of this pact",
|
78
|
+
href: "#{latest_pact_url(options.fetch(:base_url), represented)}/{tag}",
|
79
|
+
templated: true
|
80
|
+
}
|
81
|
+
end
|
82
|
+
|
57
83
|
link :'pb:previous-distinct' do | options |
|
58
84
|
{
|
59
85
|
title: "Pact",
|
@@ -71,13 +97,6 @@ module PactBroker
|
|
71
97
|
}
|
72
98
|
end
|
73
99
|
|
74
|
-
# link :'pb:pact-versions' do | options |
|
75
|
-
# {
|
76
|
-
# title: "All versions of the pact between #{represented.consumer.name} and #{represented.provider.name}",
|
77
|
-
# href: pact_versions_url(represented.consumer.name, represented.provider.name, options.fetch(:base_url))
|
78
|
-
# }
|
79
|
-
# end
|
80
|
-
|
81
100
|
link :'pb:pact-webhooks' do | options |
|
82
101
|
{
|
83
102
|
title: "Webhooks for the pact between #{represented.consumer.name} and #{represented.provider.name}",
|
@@ -87,14 +106,14 @@ module PactBroker
|
|
87
106
|
|
88
107
|
link :'pb:tag-prod-version' do | options |
|
89
108
|
{
|
90
|
-
title: "
|
109
|
+
title: "PUT to this resource to tag this consumer version as 'production'",
|
91
110
|
href: tags_url(options.fetch(:base_url), represented.consumer_version) + "/prod"
|
92
111
|
}
|
93
112
|
end
|
94
113
|
|
95
114
|
link :'pb:tag-version' do | options |
|
96
115
|
{
|
97
|
-
title: "
|
116
|
+
title: "PUT to this resource to tag this consumer version",
|
98
117
|
href: tags_url(options.fetch(:base_url), represented.consumer_version) + "/{tag}"
|
99
118
|
}
|
100
119
|
end
|
@@ -8,22 +8,12 @@ module PactBroker
|
|
8
8
|
|
9
9
|
module Decorators
|
10
10
|
|
11
|
-
class EmbeddedVersionDecorator < BaseDecorator
|
12
|
-
|
13
|
-
property :number
|
14
|
-
|
15
|
-
link :self do | options |
|
16
|
-
version_url(options[:base_url], represented)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
11
|
class PactVersionDecorator < BaseDecorator
|
21
12
|
|
22
13
|
include Timestamps
|
23
14
|
|
24
15
|
property :consumer_version, as: :consumerVersion, embedded: true, decorator: EmbeddedVersionDecorator
|
25
16
|
|
26
|
-
|
27
17
|
link :self do | options |
|
28
18
|
{
|
29
19
|
href: pact_url(options[:base_url], represented),
|
@@ -15,21 +15,24 @@ module PactBroker
|
|
15
15
|
link :self do | context |
|
16
16
|
{
|
17
17
|
href: context[:resource_url],
|
18
|
-
title: "
|
18
|
+
title: "Pact versions",
|
19
|
+
name: "All versions of the pact between #{context[:consumer_name]} and #{context[:provider_name]}"
|
19
20
|
}
|
20
21
|
end
|
21
22
|
|
22
23
|
link :consumer do | context |
|
23
24
|
{
|
24
25
|
href: pacticipant_url(context[:base_url], OpenStruct.new(name: context[:consumer_name])),
|
25
|
-
title:
|
26
|
+
title: "Consumer",
|
27
|
+
name: context[:consumer_name]
|
26
28
|
}
|
27
29
|
end
|
28
30
|
|
29
31
|
link :provider do | context |
|
30
32
|
{
|
31
33
|
href: pacticipant_url(context[:base_url], OpenStruct.new(name: context[:provider_name])),
|
32
|
-
title:
|
34
|
+
title: "Provider",
|
35
|
+
name: context[:provider_name]
|
33
36
|
}
|
34
37
|
end
|
35
38
|
|
@@ -37,7 +40,8 @@ module PactBroker
|
|
37
40
|
represented.collect do | pact |
|
38
41
|
{
|
39
42
|
:href => pact_url(context[:base_url], pact),
|
40
|
-
:title =>
|
43
|
+
:title => "Pact",
|
44
|
+
:name => pact.version_and_updated_date
|
41
45
|
}
|
42
46
|
end
|
43
47
|
end
|
@@ -18,6 +18,14 @@ module PactBroker
|
|
18
18
|
}
|
19
19
|
end
|
20
20
|
|
21
|
+
link :'pb:pacticipant' do | options |
|
22
|
+
{
|
23
|
+
title: 'Pacticipant',
|
24
|
+
name: represented.pacticipant.name,
|
25
|
+
href: pacticipant_url(options.fetch(:base_url), represented.pacticipant)
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
21
29
|
link :'pb:latest-verification-results-where-pacticipant-is-consumer' do | options |
|
22
30
|
{
|
23
31
|
title: "Latest verification results for consumer version",
|
@@ -25,12 +33,14 @@ module PactBroker
|
|
25
33
|
}
|
26
34
|
end
|
27
35
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
36
|
+
links :'pb:pact-versions' do | context |
|
37
|
+
sorted_pacts.collect do | pact |
|
38
|
+
{
|
39
|
+
title: "Pact",
|
40
|
+
name: pact.name,
|
41
|
+
href: pact_url(context[:base_url], pact),
|
42
|
+
}
|
43
|
+
end
|
34
44
|
end
|
35
45
|
|
36
46
|
curies do | options |
|
@@ -40,6 +50,12 @@ module PactBroker
|
|
40
50
|
templated: true
|
41
51
|
}]
|
42
52
|
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def sorted_pacts
|
57
|
+
represented.pact_publications.sort{ |a, b| a.provider_name.downcase <=> b.provider_name.downcase }
|
58
|
+
end
|
43
59
|
end
|
44
60
|
end
|
45
61
|
end
|
@@ -43,6 +43,10 @@ module PactBroker
|
|
43
43
|
"#{pactigration_base_url(base_url, pact)}/latest"
|
44
44
|
end
|
45
45
|
|
46
|
+
def latest_untagged_pact_url pact, base_url
|
47
|
+
"#{pactigration_base_url(base_url, pact)}/latest-untagged"
|
48
|
+
end
|
49
|
+
|
46
50
|
def latest_pacts_url base_url
|
47
51
|
"#{base_url}/pacts/latest"
|
48
52
|
end
|
@@ -48,7 +48,7 @@ module PactBroker
|
|
48
48
|
<ul>
|
49
49
|
<li>
|
50
50
|
<span class='name'>#{@pact.consumer.name} version:</span>
|
51
|
-
<span class='value'>#{@pact.consumer_version_number}</span>
|
51
|
+
<span class='value'>#{@pact.consumer_version_number}#{tags}</span>
|
52
52
|
</li>
|
53
53
|
<li>
|
54
54
|
<span class='name'>Date published:</span>
|
@@ -57,6 +57,9 @@ module PactBroker
|
|
57
57
|
<li>
|
58
58
|
<a href=\"#{json_url}\">View in HAL Browser</a>
|
59
59
|
</li>
|
60
|
+
<li>
|
61
|
+
<a href=\"/\">Home</a>
|
62
|
+
</li>
|
60
63
|
</ul>
|
61
64
|
</div>"
|
62
65
|
end
|
@@ -77,6 +80,14 @@ module PactBroker
|
|
77
80
|
PactBroker::Api::PactBrokerUrls.pact_url '', @pact
|
78
81
|
end
|
79
82
|
|
83
|
+
def tags
|
84
|
+
if @pact.consumer_version_tag_names.any?
|
85
|
+
" (#{@pact.consumer_version_tag_names.join(", ")})"
|
86
|
+
else
|
87
|
+
""
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
80
91
|
def markdown
|
81
92
|
Pact::Doc::Markdown::ConsumerContractRenderer.call consumer_contract
|
82
93
|
rescue NotAPactError
|
data/lib/pact_broker/version.rb
CHANGED
data/pact_broker.gemspec
CHANGED
@@ -29,16 +29,16 @@ Gem::Specification.new do |gem|
|
|
29
29
|
gem.add_runtime_dependency 'sequel', '~> 4.23'
|
30
30
|
gem.add_runtime_dependency 'webmachine', '1.4.0'
|
31
31
|
gem.add_runtime_dependency 'semver2', '~> 3.4.2'
|
32
|
-
gem.add_runtime_dependency 'rack', '
|
33
|
-
gem.add_runtime_dependency 'redcarpet', '~>3.
|
34
|
-
gem.add_runtime_dependency 'pact', '~>1.
|
35
|
-
gem.add_runtime_dependency '
|
36
|
-
gem.add_runtime_dependency 'padrino-core', '~>0.12.4'
|
32
|
+
gem.add_runtime_dependency 'rack', '~>2.0'
|
33
|
+
gem.add_runtime_dependency 'redcarpet', '>=3.3.2', '~>3.3'
|
34
|
+
gem.add_runtime_dependency 'pact', '~>1.14'
|
35
|
+
gem.add_runtime_dependency 'padrino-core', '~>0.14.1'
|
37
36
|
gem.add_runtime_dependency 'haml', '~>4.0'
|
38
37
|
gem.add_runtime_dependency 'sucker_punch', '~>2.0'
|
39
|
-
gem.add_runtime_dependency 'rack-protection', '~>
|
38
|
+
gem.add_runtime_dependency 'rack-protection', '~>2.0'
|
40
39
|
gem.add_runtime_dependency 'dry-types', '~> 0.10.3' # https://travis-ci.org/pact-foundation/pact_broker/jobs/249448621
|
41
40
|
|
41
|
+
gem.add_development_dependency 'bundler-audit', '~>0.4'
|
42
42
|
gem.add_development_dependency 'sqlite3'
|
43
43
|
gem.add_development_dependency 'pry-byebug'
|
44
44
|
gem.add_development_dependency 'rake', '~>10.0'
|
@@ -19,8 +19,9 @@ module PactBroker
|
|
19
19
|
end
|
20
20
|
|
21
21
|
let(:options) { { user_options: { base_url: 'http://example.org' } } }
|
22
|
+
let(:json) { EmbeddedTagDecorator.new(tag).to_json(options) }
|
22
23
|
|
23
|
-
subject { JSON.parse
|
24
|
+
subject { JSON.parse json, symbolize_names: true }
|
24
25
|
|
25
26
|
it "includes the tag name" do
|
26
27
|
expect(subject[:name]).to eq "prod"
|
@@ -21,11 +21,11 @@ module PactBroker
|
|
21
21
|
expect(subject[:_links][:self][:href]).to eq "http://example.org/pacticipants/Consumer/versions/1.2.3"
|
22
22
|
end
|
23
23
|
|
24
|
-
|
24
|
+
it "includes the version number in the link" do
|
25
25
|
expect(subject[:_links][:self][:name]).to eq "1.2.3"
|
26
26
|
end
|
27
27
|
|
28
|
-
|
28
|
+
it "includes its title in the link" do
|
29
29
|
expect(subject[:_links][:self][:title]).to eq "Version"
|
30
30
|
end
|
31
31
|
|
@@ -85,9 +85,18 @@ module PactBroker
|
|
85
85
|
expect(subject[:_links][:'pb:latest-pact-version'][:href]).to eq "http://example.org/pacts/provider/A%20Provider/consumer/A%20Consumer/latest"
|
86
86
|
end
|
87
87
|
|
88
|
-
|
89
|
-
expect(subject[:_links][:'pb:
|
90
|
-
expect(subject[:_links][:'pb:
|
88
|
+
it "includes a link to the pact version" do
|
89
|
+
expect(subject[:_links][:'pb:consumer-version'][:title]).to eq "Consumer version"
|
90
|
+
expect(subject[:_links][:'pb:consumer-version'][:name]).to eq "1234"
|
91
|
+
expect(subject[:_links][:'pb:consumer-version'][:href]).to eq "http://example.org/pacticipants/A%20Consumer/versions/1234"
|
92
|
+
end
|
93
|
+
|
94
|
+
it "includes a link to the latest untagged version" do
|
95
|
+
expect(subject[:_links][:'pb:latest-untagged-pact-version'][:href]).to eq "http://example.org/pacts/provider/A%20Provider/consumer/A%20Consumer/latest-untagged"
|
96
|
+
end
|
97
|
+
|
98
|
+
it "includes a link to the latest tagged version" do
|
99
|
+
expect(subject[:_links][:'pb:latest-tagged-pact-version'][:href]).to eq "http://example.org/pacts/provider/A%20Provider/consumer/A%20Consumer/latest/{tag}"
|
91
100
|
end
|
92
101
|
|
93
102
|
it "includes a link to publish a verification" do
|
@@ -9,9 +9,13 @@ module PactBroker
|
|
9
9
|
let(:version) do
|
10
10
|
TestDataBuilder.new
|
11
11
|
.create_consumer("Consumer")
|
12
|
+
.create_provider("providerA")
|
12
13
|
.create_consumer_version("1.2.3")
|
13
14
|
.create_consumer_version_tag("prod")
|
14
|
-
|
15
|
+
.create_pact
|
16
|
+
.create_provider("ProviderB")
|
17
|
+
.create_pact
|
18
|
+
.and_return(:consumer_version)
|
15
19
|
end
|
16
20
|
|
17
21
|
let(:options) { { user_options: { base_url: 'http://example.org' } } }
|
@@ -43,10 +47,17 @@ module PactBroker
|
|
43
47
|
expect(subject[:_embedded][:tags].first[:name]).to eq "prod"
|
44
48
|
end
|
45
49
|
|
50
|
+
it "includes a list of sorted pacts" do
|
51
|
+
expect(subject[:_links][:'pb:pact-versions']).to be_instance_of(Array)
|
52
|
+
expect(subject[:_links][:'pb:pact-versions'].first[:href]).to include ("1.2.3")
|
53
|
+
expect(subject[:_links][:'pb:pact-versions'].first[:name]).to include ("Pact between")
|
54
|
+
expect(subject[:_links][:'pb:pact-versions'].first[:name]).to include ("providerA")
|
55
|
+
expect(subject[:_links][:'pb:pact-versions'].last[:name]).to include ("ProviderB")
|
56
|
+
end
|
57
|
+
|
46
58
|
it "includes a link to the latest verification results for the pacts for this version" do
|
47
59
|
expect(subject[:_links][:'pb:latest-verification-results-where-pacticipant-is-consumer'][:href]).to match(%r{http://.*/verification-results/.*/latest})
|
48
60
|
end
|
49
|
-
|
50
61
|
end
|
51
62
|
end
|
52
63
|
end
|