pact_broker 2.4.0 → 2.4.1
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/.travis.yml +1 -1
- data/CHANGELOG.md +7 -2
- data/README.md +3 -1
- data/RELEASING.md +2 -2
- data/lib/pact_broker/api/decorators/verification_summary_decorator.rb +1 -0
- data/lib/pact_broker/api/resources.rb +10 -0
- data/lib/pact_broker/api.rb +1 -32
- data/lib/pact_broker/app.rb +1 -1
- data/lib/pact_broker/version.rb +1 -1
- data/pact_broker.gemspec +4 -2
- data/script/publish-new.sh +5 -6
- data/script/seed.rb +85 -0
- data/script/webhook-server.ru +6 -0
- data/spec/features/tag_version_spec.rb +13 -0
- data/spec/integration/app_spec.rb +10 -0
- data/tasks/release.rake +6 -0
- metadata +31 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a3d490394fcae01bbca8de110f64f32cd726bd0
|
4
|
+
data.tar.gz: 924597d9aee8cdcd23c2fc0cf3b04445f1923188
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef24406ac81f1990047cc42841dfd0ae2a0df5b2506386eaac087c946bb528208f632f9a8181eb47b5c056423eb7ecadf7e219911c13e007d14a1bfb4337cc2c
|
7
|
+
data.tar.gz: 9b6c513d799464f0a8de5b58a02c1bc6335f2c755b92a676468d31bdbc7302577c0e40500500ac05ce49e55717b316648c489e73224d0bd4ff2879b82d3c2061
|
data/.travis.yml
CHANGED
@@ -24,5 +24,5 @@ before_script:
|
|
24
24
|
- chmod +x ./cc-test-reporter
|
25
25
|
script:
|
26
26
|
- bundle exec rake
|
27
|
-
- if [ "$DATABASE_ADAPTER" == "postgres" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi
|
27
|
+
- if [ "$DATABASE_ADAPTER" == "postgres" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT || true; fi
|
28
28
|
- bundle exec bundle-audit update && bundle exec bundle-audit
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,12 @@
|
|
1
|
-
|
1
|
+
<a name="v2.4.1"></a>
|
2
|
+
### v2.4.1 (2017-09-07)
|
2
3
|
|
3
|
-
|
4
|
+
#### Bug Fixes
|
4
5
|
|
6
|
+
* allow resource identifiers to contain escaped forward slashes ([d875079](/../../commit/d875079))
|
7
|
+
|
8
|
+
<a name="v2.4.0"></a>
|
9
|
+
### v2.4.0 (2017-07-31)
|
5
10
|
* 3a03f41 - fix(publish verification result): Fix Location header for newly created resource (Beth Skurrie, Mon Jul 31 10:49:37 2017 +1000)
|
6
11
|
* 3b0f390 - feat(pacticipant labels): Add HAL link to pacticipants resource to find pacticipants by label. (Beth Skurrie, Mon Jul 24 08:17:36 2017 +1000)
|
7
12
|
* 588d2ad - fix(pacticipant and pacticipants resources): Add correctly capitalised and namespaced properties and relations. Added deprecation warnings to existing incorrect properties and relations. (Beth Skurrie, Mon Jul 24 08:14:52 2017 +1000)
|
data/README.md
CHANGED
@@ -93,8 +93,10 @@ Use the HAL browser to view documentation as you browse.
|
|
93
93
|
### To have a play around on your local machine
|
94
94
|
|
95
95
|
* Install ruby 2.2.0 or later and bundler >= 1.12.0
|
96
|
+
* Windows users: get a Rails/Ruby installer from [RailsInstaller](http://railsinstaller.org/) and run it
|
97
|
+
* unix users just use your package manager
|
96
98
|
* Run `git clone git@github.com:pact-foundation/pact_broker.git && cd pact_broker/example`
|
97
|
-
* Run `bundle`
|
99
|
+
* Run `bundle install`
|
98
100
|
* Run `bundle exec rackup -p 8080`
|
99
101
|
* Open [http://localhost:8080](http://localhost:8080) and you should see a list containing the pact between the Zoo App and the Animal Service.
|
100
102
|
* Click on the arrow to see the generated HTML documentation.
|
data/RELEASING.md
CHANGED
@@ -3,12 +3,12 @@
|
|
3
3
|
1. Increment the version in `./lib/pact_broker/version.rb`
|
4
4
|
2. Update the `CHANGELOG.md` using:
|
5
5
|
|
6
|
-
$
|
6
|
+
$ bundle exec rake generate_changelog
|
7
7
|
|
8
8
|
3. Add files to git
|
9
9
|
|
10
10
|
$ git add CHANGELOG.md lib/pact_broker/version.rb
|
11
|
-
$ git commit -m "
|
11
|
+
$ git commit -m "chore(release): version $(ruby -r ./lib/pact_broker/version.rb -e "puts PactBroker::VERSION")" && git push
|
12
12
|
|
13
13
|
3. Release:
|
14
14
|
|
data/lib/pact_broker/api.rb
CHANGED
@@ -1,36 +1,5 @@
|
|
1
|
-
require 'reform'
|
2
|
-
require 'reform/form/dry'
|
3
|
-
Reform::Form.class_eval do
|
4
|
-
feature Reform::Form::Dry
|
5
|
-
end
|
6
|
-
|
7
|
-
require 'pact_broker/api/resources/pact'
|
8
|
-
require 'pact_broker/api/resources/latest_pact'
|
9
|
-
require 'pact_broker/api/resources/latest_pacts'
|
10
|
-
require 'pact_broker/api/resources/pacticipant'
|
11
|
-
require 'pact_broker/api/resources/pacticipants'
|
12
|
-
require 'pact_broker/api/resources/pacticipants_for_label'
|
13
|
-
require 'pact_broker/api/resources/tag'
|
14
|
-
require 'pact_broker/api/resources/label'
|
15
|
-
require 'pact_broker/api/resources/index'
|
16
|
-
require 'pact_broker/api/resources/relationships'
|
17
|
-
require 'pact_broker/api/resources/group'
|
18
|
-
require 'pact_broker/api/resources/pact_webhooks'
|
19
|
-
require 'pact_broker/api/resources/pact_versions'
|
20
|
-
require 'pact_broker/api/resources/webhooks'
|
21
|
-
require 'pact_broker/api/resources/webhook'
|
22
|
-
require 'pact_broker/api/resources/webhook_execution'
|
23
|
-
require 'pact_broker/api/resources/version'
|
24
|
-
require 'pact_broker/api/resources/versions'
|
25
|
-
require 'pact_broker/api/resources/pact_content_diff'
|
26
|
-
require 'pact_broker/api/resources/previous_distinct_pact_version'
|
27
|
-
require 'pact_broker/api/resources/latest_provider_pacts'
|
28
|
-
require 'pact_broker/api/resources/verifications'
|
29
|
-
require 'pact_broker/api/resources/verification'
|
30
|
-
require 'pact_broker/api/resources/latest_verifications_for_consumer_version'
|
31
|
-
require 'pact_broker/api/resources/badge'
|
32
|
-
|
33
1
|
require 'webmachine/adapters/rack_mapped'
|
2
|
+
require 'pact_broker/api/resources'
|
34
3
|
|
35
4
|
module PactBroker
|
36
5
|
|
data/lib/pact_broker/app.rb
CHANGED
@@ -78,7 +78,7 @@ module PactBroker
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def configure_middleware
|
81
|
-
@app_builder.use Rack::Protection, except: [:remote_token, :session_hijacking, :http_origin]
|
81
|
+
@app_builder.use Rack::Protection, except: [:path_traversal, :remote_token, :session_hijacking, :http_origin]
|
82
82
|
@app_builder.use Rack::PactBroker::InvalidUriProtection
|
83
83
|
@app_builder.use Rack::PactBroker::AddPactBrokerVersionHeader
|
84
84
|
@app_builder.use Rack::Static, :urls => ["/stylesheets", "/css", "/fonts", "/js", "/javascripts", "/images"], :root => PactBroker.project_root.join("public")
|
data/lib/pact_broker/version.rb
CHANGED
data/pact_broker.gemspec
CHANGED
@@ -46,7 +46,9 @@ Gem::Specification.new do |gem|
|
|
46
46
|
gem.add_development_dependency 'mysql2', '~>0.3.15'
|
47
47
|
gem.add_development_dependency 'webmock', '~>2.3'
|
48
48
|
gem.add_development_dependency 'rspec', '~>3.0'
|
49
|
-
gem.add_development_dependency 'rspec-its'
|
50
|
-
gem.add_development_dependency 'database_cleaner'
|
49
|
+
gem.add_development_dependency 'rspec-its', '~>1.2'
|
50
|
+
gem.add_development_dependency 'database_cleaner', '~>1.6'
|
51
51
|
gem.add_development_dependency 'pg'
|
52
|
+
gem.add_development_dependency 'conventional-changelog', '~>1.3'
|
53
|
+
|
52
54
|
end
|
data/script/publish-new.sh
CHANGED
@@ -1,10 +1,9 @@
|
|
1
|
-
|
1
|
+
set -e
|
2
2
|
BODY=$(ruby -e "require 'json'; j = JSON.parse(File.read('script/foo-bar.json')); j['interactions'][0]['providerState'] = 'it is ' + Time.now.to_s; puts j.to_json")
|
3
3
|
latest_url=$(curl http://localhost:9292/pacts/provider/Bar/consumer/Foo/latest | jq -r ._links.self.href)
|
4
|
-
next_version=$(echo ${latest_url} | ruby -e "require 'semver'; puts SemVer.parse(
|
5
|
-
echo ${BODY}
|
6
|
-
curl -v -XPUT \-H "Content-Type: application/json" \
|
7
|
-
|
8
|
-
http://127.0.0.1:9292/pacts/provider/Bar/consumer/Foo/version/${next_version}
|
4
|
+
next_version=$(echo ${latest_url} | ruby -e "version = ARGF.read[/\d+\.\d+\.\d+/]; require 'semver'; puts SemVer.parse(version).tap{ | v| v.minor = v.minor + 1}.format('%M.%m.%p')")
|
5
|
+
echo ${BODY} > tmp.json
|
6
|
+
curl -v -XPUT \-H "Content-Type: application/json" -d@tmp.json \
|
7
|
+
http://localhost:9292/pacts/provider/Bar/consumer/Foo/version/${next_version}
|
9
8
|
rm tmp.json
|
10
9
|
echo ""
|
data/script/seed.rb
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
raise "Please supply database path" unless ARGV[0]
|
4
|
+
|
5
|
+
$LOAD_PATH.unshift './lib'
|
6
|
+
$LOAD_PATH.unshift './spec'
|
7
|
+
ENV['RACK_ENV'] = 'development'
|
8
|
+
require 'sequel'
|
9
|
+
require 'logger'
|
10
|
+
DATABASE_CREDENTIALS = {logger: Logger.new($stdout), adapter: "sqlite", database: ARGV[0], :encoding => 'utf8'}
|
11
|
+
connection = Sequel.connect(DATABASE_CREDENTIALS)
|
12
|
+
connection.timezone = :utc
|
13
|
+
require 'pact_broker'
|
14
|
+
require 'support/test_data_builder'
|
15
|
+
|
16
|
+
def random_build
|
17
|
+
rand * 100
|
18
|
+
end
|
19
|
+
|
20
|
+
tables_to_clean = [:labels, :webhook_executions, :verifications, :pact_publications, :pact_versions, :pacts, :pact_version_contents, :tags, :versions, :webhook_headers, :webhooks, :pacticipants]
|
21
|
+
|
22
|
+
tables_to_clean.each do | table_name |
|
23
|
+
connection[table_name].delete if connection.table_exists?(table_name)
|
24
|
+
end
|
25
|
+
|
26
|
+
class TestDataBuilder
|
27
|
+
def method_missing *args
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
def publish_pact params = {}
|
32
|
+
create_pact params
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# latest verifications
|
37
|
+
# TestDataBuilder.new
|
38
|
+
# .create_consumer("Foo")
|
39
|
+
# .create_provider("Bar")
|
40
|
+
# .create_consumer_version("1.2.3")
|
41
|
+
# .create_pact
|
42
|
+
# .create_verification(provider_version: "4.5.6", success: true)
|
43
|
+
# .create_provider("Wiffle")
|
44
|
+
# .create_pact
|
45
|
+
# .create_verification(provider_version: "5.6.7", success: false)
|
46
|
+
# .create_provider("Meep")
|
47
|
+
# .create_pact
|
48
|
+
|
49
|
+
|
50
|
+
TestDataBuilder.new
|
51
|
+
.create_consumer("Foo")
|
52
|
+
.create_label("microservice")
|
53
|
+
.create_provider("Bar")
|
54
|
+
.create_label("microservice")
|
55
|
+
.create_webhook(method: 'GET', url: 'http://127.0.0.1:1234/')
|
56
|
+
.create_consumer_version("1.2.100")
|
57
|
+
.publish_pact
|
58
|
+
.create_verification(provider_version: "1.4.234", success: true, execution_date: DateTime.now - 15)
|
59
|
+
.revise_pact
|
60
|
+
.create_consumer_version("1.2.101")
|
61
|
+
.publish_pact
|
62
|
+
.create_consumer_version("1.2.102")
|
63
|
+
.publish_pact(created_at: (Date.today - 7).to_datetime)
|
64
|
+
.create_provider("Animals")
|
65
|
+
.create_webhook(method: 'GET', url: 'http://127.0.0.1:1234/')
|
66
|
+
.publish_pact(created_at: (Time.now - 140).to_datetime)
|
67
|
+
.create_verification(provider_version: "2.0.366", execution_date: Date.today - 2) #changed
|
68
|
+
.create_provider("Wiffles")
|
69
|
+
.publish_pact
|
70
|
+
.create_verification(provider_version: "3.6.100", success: false, execution_date: Date.today - 7)
|
71
|
+
.create_provider("Hello World App")
|
72
|
+
.create_consumer_version("1.2.107")
|
73
|
+
.publish_pact(created_at: (Date.today - 1).to_datetime)
|
74
|
+
.create_consumer("The Android App")
|
75
|
+
.create_provider("The back end")
|
76
|
+
.create_webhook(method: 'GET', url: 'http://127.0.0.1:1234/')
|
77
|
+
.create_consumer_version("1.2.106")
|
78
|
+
.publish_pact
|
79
|
+
.create_consumer("Some other app")
|
80
|
+
.create_provider("A service")
|
81
|
+
.create_webhook(method: 'GET', url: 'http://127.0.0.1:1234/')
|
82
|
+
.create_webhook_execution
|
83
|
+
.create_consumer_version("1.2.106")
|
84
|
+
.publish_pact(created_at: (Date.today - 26).to_datetime)
|
85
|
+
.create_verification(provider_version: "4.8.152", execution_date: DateTime.now)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
describe "tagging a pacticipant version" do
|
2
|
+
let(:path) { "/pacticipants/Foo/versions/1.2.3/tags/feat%2Fbar" }
|
3
|
+
|
4
|
+
subject { put path, nil, {'CONTENT_TYPE' => 'application/json'}; last_response }
|
5
|
+
|
6
|
+
context "when the pacticipant/version/tag do not exist" do
|
7
|
+
it "creates a tag" do
|
8
|
+
expect{ subject }.to change {
|
9
|
+
PactBroker::Domain::Tag.where(name: 'feat/bar').count
|
10
|
+
}.by(1)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -187,5 +187,15 @@ module PactBroker
|
|
187
187
|
expect(last_response.status).to eq 404
|
188
188
|
end
|
189
189
|
end
|
190
|
+
|
191
|
+
describe "when a resource identifier contains a slash" do
|
192
|
+
let(:path) { "/pacticipants/Foo/versions/1.2.3/tags/feat%2Fbar" }
|
193
|
+
|
194
|
+
subject { put path, nil, {'CONTENT_TYPE' => 'application/json'}; last_response }
|
195
|
+
|
196
|
+
it "returns a success status" do
|
197
|
+
expect(subject.status).to eq 201
|
198
|
+
end
|
199
|
+
end
|
190
200
|
end
|
191
201
|
end
|
data/tasks/release.rake
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pact_broker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bethany Skurrie
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-07
|
13
|
+
date: 2017-09-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: httparty
|
@@ -364,30 +364,30 @@ dependencies:
|
|
364
364
|
name: rspec-its
|
365
365
|
requirement: !ruby/object:Gem::Requirement
|
366
366
|
requirements:
|
367
|
-
- - "
|
367
|
+
- - "~>"
|
368
368
|
- !ruby/object:Gem::Version
|
369
|
-
version: '
|
369
|
+
version: '1.2'
|
370
370
|
type: :development
|
371
371
|
prerelease: false
|
372
372
|
version_requirements: !ruby/object:Gem::Requirement
|
373
373
|
requirements:
|
374
|
-
- - "
|
374
|
+
- - "~>"
|
375
375
|
- !ruby/object:Gem::Version
|
376
|
-
version: '
|
376
|
+
version: '1.2'
|
377
377
|
- !ruby/object:Gem::Dependency
|
378
378
|
name: database_cleaner
|
379
379
|
requirement: !ruby/object:Gem::Requirement
|
380
380
|
requirements:
|
381
|
-
- - "
|
381
|
+
- - "~>"
|
382
382
|
- !ruby/object:Gem::Version
|
383
|
-
version: '
|
383
|
+
version: '1.6'
|
384
384
|
type: :development
|
385
385
|
prerelease: false
|
386
386
|
version_requirements: !ruby/object:Gem::Requirement
|
387
387
|
requirements:
|
388
|
-
- - "
|
388
|
+
- - "~>"
|
389
389
|
- !ruby/object:Gem::Version
|
390
|
-
version: '
|
390
|
+
version: '1.6'
|
391
391
|
- !ruby/object:Gem::Dependency
|
392
392
|
name: pg
|
393
393
|
requirement: !ruby/object:Gem::Requirement
|
@@ -402,6 +402,20 @@ dependencies:
|
|
402
402
|
- - ">="
|
403
403
|
- !ruby/object:Gem::Version
|
404
404
|
version: '0'
|
405
|
+
- !ruby/object:Gem::Dependency
|
406
|
+
name: conventional-changelog
|
407
|
+
requirement: !ruby/object:Gem::Requirement
|
408
|
+
requirements:
|
409
|
+
- - "~>"
|
410
|
+
- !ruby/object:Gem::Version
|
411
|
+
version: '1.3'
|
412
|
+
type: :development
|
413
|
+
prerelease: false
|
414
|
+
version_requirements: !ruby/object:Gem::Requirement
|
415
|
+
requirements:
|
416
|
+
- - "~>"
|
417
|
+
- !ruby/object:Gem::Version
|
418
|
+
version: '1.3'
|
405
419
|
description: A server that stores and returns pact files generated by the pact gem.
|
406
420
|
It enables head/prod cross testing of the consumer and provider projects.
|
407
421
|
email:
|
@@ -521,6 +535,7 @@ files:
|
|
521
535
|
- lib/pact_broker/api/decorators/webhooks_decorator.rb
|
522
536
|
- lib/pact_broker/api/pact_broker_urls.rb
|
523
537
|
- lib/pact_broker/api/renderers/html_pact_renderer.rb
|
538
|
+
- lib/pact_broker/api/resources.rb
|
524
539
|
- lib/pact_broker/api/resources/authentication.rb
|
525
540
|
- lib/pact_broker/api/resources/badge.rb
|
526
541
|
- lib/pact_broker/api/resources/base_resource.rb
|
@@ -706,7 +721,9 @@ files:
|
|
706
721
|
- script/publish.sh
|
707
722
|
- script/record_verification.sh
|
708
723
|
- script/recreate-pg-db.sh
|
724
|
+
- script/seed.rb
|
709
725
|
- script/update-hal-browser
|
726
|
+
- script/webhook-server.ru
|
710
727
|
- spec/features/create_webhook_spec.rb
|
711
728
|
- spec/features/delete_label_spec.rb
|
712
729
|
- spec/features/delete_pact_spec.rb
|
@@ -732,6 +749,7 @@ files:
|
|
732
749
|
- spec/features/publish_not_a_pact_spec.rb
|
733
750
|
- spec/features/publish_pact_spec.rb
|
734
751
|
- spec/features/publish_verification_spec.rb
|
752
|
+
- spec/features/tag_version_spec.rb
|
735
753
|
- spec/features/update_pacticipant_spec.rb
|
736
754
|
- spec/fixtures/a_consumer-a_provider-2.json
|
737
755
|
- spec/fixtures/a_consumer-a_provider-3.json
|
@@ -852,6 +870,7 @@ files:
|
|
852
870
|
- tasks/database.rb
|
853
871
|
- tasks/db.rake
|
854
872
|
- tasks/pact.rake
|
873
|
+
- tasks/release.rake
|
855
874
|
- tasks/rspec.rake
|
856
875
|
- tasks/test_db.rake
|
857
876
|
- vendor/hal-browser/.gitignore
|
@@ -912,7 +931,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
912
931
|
version: '0'
|
913
932
|
requirements: []
|
914
933
|
rubyforge_project:
|
915
|
-
rubygems_version: 2.6.
|
934
|
+
rubygems_version: 2.6.11
|
916
935
|
signing_key:
|
917
936
|
specification_version: 4
|
918
937
|
summary: See description
|
@@ -942,6 +961,7 @@ test_files:
|
|
942
961
|
- spec/features/publish_not_a_pact_spec.rb
|
943
962
|
- spec/features/publish_pact_spec.rb
|
944
963
|
- spec/features/publish_verification_spec.rb
|
964
|
+
- spec/features/tag_version_spec.rb
|
945
965
|
- spec/features/update_pacticipant_spec.rb
|
946
966
|
- spec/fixtures/a_consumer-a_provider-2.json
|
947
967
|
- spec/fixtures/a_consumer-a_provider-3.json
|