pact_broker 2.4.0 → 2.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ccb2b3e09704513328cc45bb520d07bec978a711
4
- data.tar.gz: a98ed177a3db187c531c6f7a606a38c0382278b5
3
+ metadata.gz: 6a3d490394fcae01bbca8de110f64f32cd726bd0
4
+ data.tar.gz: 924597d9aee8cdcd23c2fc0cf3b04445f1923188
5
5
  SHA512:
6
- metadata.gz: 029ca439a15afebbcca133103d59a67ce4a359df4f57dfb4d9da5e0cf02b820d6eccbb93304d64f400216d455f7c3beac9b27fcd04318a5beb4960e66cf569a7
7
- data.tar.gz: 462f2d6f9a04dbe36916b94e0f2a52965c8f23234d901ea80280859e2f71c8695a2c1f7b484f763a633b1de873c9d9cec6b9ac93b08dab900f07d93f809c52db
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
- Do this to generate your change history
1
+ <a name="v2.4.1"></a>
2
+ ### v2.4.1 (2017-09-07)
2
3
 
3
- $ git log --pretty=format:' * %h - %s (%an, %ad)'
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
- $ git log --pretty=format:' * %h - %s (%an, %ad)'
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 "Releasing version $(ruby -r ./lib/pact_broker/version.rb -e "puts PactBroker::VERSION")"
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
 
@@ -1,5 +1,6 @@
1
1
  require_relative 'base_decorator'
2
2
  require_relative 'version_decorator'
3
+ require_relative 'verification_decorator'
3
4
  require 'ostruct'
4
5
 
5
6
  module PactBroker
@@ -0,0 +1,10 @@
1
+ require 'reform'
2
+ require 'reform/form/dry'
3
+
4
+ Reform::Form.class_eval do
5
+ feature Reform::Form::Dry
6
+ end
7
+
8
+ Dir.glob(File.expand_path(File.join(__FILE__, "..", "resources", "*.rb"))) do |file|
9
+ require file
10
+ end
@@ -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
 
@@ -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")
@@ -1,3 +1,3 @@
1
1
  module PactBroker
2
- VERSION = '2.4.0'
2
+ VERSION = '2.4.1'
3
3
  end
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
@@ -1,10 +1,9 @@
1
- # set -x
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(ARGF.read[/\d+\.\d\.\d+/]).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" \
7
- -d@tmp.json \
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,6 @@
1
+ count = 0
2
+ run -> (env) {
3
+ count += 1
4
+ status = (count % 3 == 0) ? 200 : 500
5
+ puts "Received request"; [status, {}, ["Hello. This might be an error.\n"]]
6
+ }
@@ -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
@@ -0,0 +1,6 @@
1
+ require 'conventional_changelog'
2
+
3
+ task :generate_changelog do
4
+ require 'pact_broker/version'
5
+ ConventionalChangelog::Generator.new.generate! version: "v#{PactBroker::VERSION}"
6
+ end
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.0
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-31 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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.12
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