pact_broker 2.0.5 → 2.1.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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/RELEASING.md +1 -1
  4. data/db/migrations/33_create_config_table.rb +1 -1
  5. data/db/migrations/34_create_index_on_consumer_version_order.rb +1 -1
  6. data/db/migrations/35_create_index_on_names.rb +1 -1
  7. data/db/pact_broker_database.sqlite3 +0 -0
  8. data/lib/pact_broker/api.rb +1 -0
  9. data/lib/pact_broker/api/resources/authentication.rb +30 -0
  10. data/lib/pact_broker/api/resources/base_resource.rb +14 -0
  11. data/lib/pact_broker/app.rb +2 -0
  12. data/lib/pact_broker/configuration.rb +34 -0
  13. data/lib/pact_broker/db/migrate.rb +15 -0
  14. data/lib/pact_broker/db/version.rb +17 -0
  15. data/lib/pact_broker/diagnostic/resources/base_resource.rb +13 -0
  16. data/lib/pact_broker/pacts/all_pact_publications.rb +5 -0
  17. data/lib/pact_broker/pacts/repository.rb +6 -1
  18. data/lib/pact_broker/repositories/helpers.rb +4 -0
  19. data/lib/pact_broker/tasks.rb +1 -0
  20. data/lib/pact_broker/tasks/migration_task.rb +7 -6
  21. data/lib/pact_broker/tasks/version_task.rb +38 -0
  22. data/lib/pact_broker/version.rb +1 -1
  23. data/lib/rack/pact_broker/ui_authentication.rb +26 -0
  24. data/pact_broker.gemspec +1 -0
  25. data/script/recreate-pg-db.sh +6 -5
  26. data/spec/features/create_webhook_spec.rb +2 -2
  27. data/spec/features/delete_pact_spec.rb +1 -1
  28. data/spec/features/delete_version_spec.rb +2 -2
  29. data/spec/features/delete_webhook_spec.rb +2 -2
  30. data/spec/features/get_diff_spec.rb +2 -2
  31. data/spec/features/get_latest_tagged_pact_spec.rb +22 -0
  32. data/spec/features/get_latest_untagged_pact_spec.rb +22 -0
  33. data/spec/features/get_pact_spec.rb +2 -2
  34. data/spec/features/get_pact_versions_spec.rb +2 -2
  35. data/spec/features/get_previous_distinct_version.rb +2 -2
  36. data/spec/features/get_provider_pacts_spec.rb +2 -2
  37. data/spec/features/get_verifications_for_consumer_version_spec.rb +2 -2
  38. data/spec/features/get_version_spec.rb +3 -3
  39. data/spec/features/get_versions_spec.rb +2 -2
  40. data/spec/features/merge_pact_spec.rb +2 -2
  41. data/spec/features/publish_pact_spec.rb +1 -1
  42. data/spec/features/publish_verification_spec.rb +1 -1
  43. data/spec/integration/app_spec.rb +1 -1
  44. data/spec/integration/endpoints/group.rb +1 -1
  45. data/spec/lib/pact_broker/api/decorators/embedded_tag_decorator_spec.rb +2 -2
  46. data/spec/lib/pact_broker/api/decorators/embedded_version_decorator_spec.rb +1 -1
  47. data/spec/lib/pact_broker/api/decorators/latest_pact_decorator_spec.rb +1 -1
  48. data/spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb +1 -1
  49. data/spec/lib/pact_broker/api/decorators/representable_pact_spec.rb +2 -2
  50. data/spec/lib/pact_broker/api/decorators/tag_decorator_spec.rb +2 -2
  51. data/spec/lib/pact_broker/api/decorators/version_decorator_spec.rb +1 -1
  52. data/spec/lib/pact_broker/api/decorators/versions_decorator_spec.rb +1 -1
  53. data/spec/lib/pact_broker/app_spec.rb +128 -0
  54. data/spec/lib/pact_broker/domain/order_versions_spec.rb +4 -4
  55. data/spec/lib/pact_broker/domain/verification_spec.rb +2 -2
  56. data/spec/lib/pact_broker/domain/version_spec.rb +2 -2
  57. data/spec/lib/pact_broker/pacticipants/repository_spec.rb +4 -4
  58. data/spec/lib/pact_broker/pacticipants/service_spec.rb +1 -1
  59. data/spec/lib/pact_broker/pacts/diff_spec.rb +1 -1
  60. data/spec/lib/pact_broker/pacts/merger_spec.rb +1 -1
  61. data/spec/lib/pact_broker/pacts/pact_version_spec.rb +3 -3
  62. data/spec/lib/pact_broker/pacts/repository_spec.rb +61 -14
  63. data/spec/lib/pact_broker/tags/repository_spec.rb +4 -4
  64. data/spec/lib/pact_broker/tags/service_spec.rb +1 -1
  65. data/spec/lib/pact_broker/ui/controllers/relationships_spec.rb +1 -1
  66. data/spec/lib/pact_broker/verifications/repository_spec.rb +7 -7
  67. data/spec/lib/pact_broker/verifications/service_spec.rb +1 -1
  68. data/spec/lib/pact_broker/versions/repository_spec.rb +3 -3
  69. data/spec/lib/pact_broker/versions/service_spec.rb +1 -1
  70. data/spec/lib/pact_broker/webhooks/repository_spec.rb +2 -2
  71. data/spec/lib/pact_broker/webhooks/service_spec.rb +1 -1
  72. data/spec/service_consumers/provider_states_for_pact_broker_client.rb +10 -10
  73. data/spec/support/rspec_matchers.rb +2 -2
  74. data/spec/support/{provider_state_builder.rb → test_data_builder.rb} +2 -2
  75. data/tasks/database.rb +8 -9
  76. data/tasks/db.rake +0 -5
  77. data/tasks/test_db.rake +11 -0
  78. metadata +29 -5
@@ -7,7 +7,7 @@ module PactBroker
7
7
 
8
8
  describe ".delete" do
9
9
  let!(:version) do
10
- ProviderStateBuilder.new
10
+ TestDataBuilder.new
11
11
  .create_consumer
12
12
  .create_provider
13
13
  .create_consumer_version("1.2.3")
@@ -18,7 +18,7 @@ module PactBroker
18
18
  body: body)
19
19
  end
20
20
  let(:webhook) { Domain::Webhook.new(request: request)}
21
- let(:test_data_builder) { ProviderStateBuilder.new }
21
+ let(:test_data_builder) { TestDataBuilder.new }
22
22
  let(:consumer) { test_data_builder.create_pacticipant 'Consumer'; test_data_builder.pacticipant}
23
23
  let(:provider) { test_data_builder.create_pacticipant 'Provider'; test_data_builder.pacticipant}
24
24
  let(:uuid) { 'the-uuid' }
@@ -202,7 +202,7 @@ module PactBroker
202
202
  end
203
203
 
204
204
  describe "find_by_consumer_and_provider" do
205
- let(:test_data_builder) { ProviderStateBuilder.new }
205
+ let(:test_data_builder) { TestDataBuilder.new }
206
206
  subject { Repository.new.find_by_consumer_and_provider test_data_builder.consumer, test_data_builder.provider}
207
207
 
208
208
  context "when a webhook exists with a matching consumer and provider" do
@@ -68,7 +68,7 @@ module PactBroker
68
68
  end
69
69
 
70
70
  let(:pact) do
71
- ProviderStateBuilder.new
71
+ TestDataBuilder.new
72
72
  .create_consumer
73
73
  .create_provider
74
74
  .create_consumer_version
@@ -1,4 +1,4 @@
1
- require 'spec/support/provider_state_builder'
1
+ require 'spec/support/test_data_builder'
2
2
 
3
3
  Pact.provider_states_for "Pact Broker Client" do
4
4
 
@@ -8,7 +8,7 @@ Pact.provider_states_for "Pact Broker Client" do
8
8
 
9
9
  provider_state "the 'Pricing Service' already exists in the pact-broker" do
10
10
  set_up do
11
- ProviderStateBuilder.new.create_pricing_service.create_pricing_service_version("1.3.0")
11
+ TestDataBuilder.new.create_pricing_service.create_pricing_service_version("1.3.0")
12
12
  end
13
13
  end
14
14
 
@@ -21,7 +21,7 @@ Pact.provider_states_for "Pact Broker Client" do
21
21
 
22
22
  provider_state "a pact between Condor and the Pricing Service exists" do
23
23
  set_up do
24
- ProviderStateBuilder.new
24
+ TestDataBuilder.new
25
25
  .create_condor
26
26
  .create_condor_version('1.3.0')
27
27
  .create_pricing_service
@@ -35,7 +35,7 @@ Pact.provider_states_for "Pact Broker Client" do
35
35
 
36
36
  provider_state "the 'Pricing Service' and 'Condor' already exist in the pact-broker, and Condor already has a pact published for version 1.3.0" do
37
37
  set_up do
38
- ProviderStateBuilder.new
38
+ TestDataBuilder.new
39
39
  .create_condor
40
40
  .create_condor_version('1.3.0')
41
41
  .create_pricing_service
@@ -45,19 +45,19 @@ Pact.provider_states_for "Pact Broker Client" do
45
45
 
46
46
  provider_state "'Condor' already exist in the pact-broker, but the 'Pricing Service' does not" do
47
47
  set_up do
48
- ProviderStateBuilder.new.create_condor
48
+ TestDataBuilder.new.create_condor
49
49
  end
50
50
  end
51
51
 
52
52
  provider_state "'Condor' exists in the pact-broker" do
53
53
  set_up do
54
- ProviderStateBuilder.new.create_condor.create_condor_version('1.3.0')
54
+ TestDataBuilder.new.create_condor.create_condor_version('1.3.0')
55
55
  end
56
56
  end
57
57
 
58
58
  provider_state "'Condor' exists in the pact-broker with version 1.3.0, tagged with 'prod'" do
59
59
  set_up do
60
- ProviderStateBuilder.new
60
+ TestDataBuilder.new
61
61
  .create_pacticipant("Condor")
62
62
  .create_version('1.3.0')
63
63
  .create_tag('prod')
@@ -70,7 +70,7 @@ Pact.provider_states_for "Pact Broker Client" do
70
70
 
71
71
  provider_state "a pact between Condor and the Pricing Service exists for the production version of Condor" do
72
72
  set_up do
73
- ProviderStateBuilder.new
73
+ TestDataBuilder.new
74
74
  .create_consumer("Condor")
75
75
  .create_consumer_version('1.3.0')
76
76
  .create_consumer_version_tag('prod')
@@ -91,7 +91,7 @@ Pact.provider_states_for "Pact Broker Client" do
91
91
 
92
92
  provider_state "a latest pact between Condor and the Pricing Service exists" do
93
93
  set_up do
94
- ProviderStateBuilder.new
94
+ TestDataBuilder.new
95
95
  .create_consumer("Condor")
96
96
  .create_consumer_version('1.3.0')
97
97
  .create_provider("Pricing Service")
@@ -101,7 +101,7 @@ Pact.provider_states_for "Pact Broker Client" do
101
101
 
102
102
  provider_state "tagged as prod pact between Condor and the Pricing Service exists" do
103
103
  set_up do
104
- ProviderStateBuilder.new
104
+ TestDataBuilder.new
105
105
  .create_consumer("Condor")
106
106
  .create_consumer_version('1.3.0')
107
107
  .create_consumer_version_tag('prod')
@@ -4,6 +4,6 @@ RSpec::Matchers.define :be_datey do |expected|
4
4
  end
5
5
 
6
6
  failure_message do |actual|
7
- "expected #{actual} to be an instance of DateTime or Time"
7
+ "expected #{actual.inspect} to be an instance of DateTime or Time"
8
8
  end
9
- end
9
+ end
@@ -21,7 +21,7 @@ require 'pact_broker/tags/repository'
21
21
  require 'pact_broker/webhooks/repository'
22
22
  require 'ostruct'
23
23
 
24
- class ProviderStateBuilder
24
+ class TestDataBuilder
25
25
 
26
26
  include PactBroker::Repositories
27
27
 
@@ -183,7 +183,7 @@ class ProviderStateBuilder
183
183
 
184
184
  def set_created_at_if_set created_at, table_name, selector
185
185
  if created_at
186
- Sequel::Model.db.run("update #{table_name} set created_at = \"#{created_at.xmlschema}\" where #{selector.keys.first} = \"#{selector.values.first}\"")
186
+ Sequel::Model.db[table_name].where(selector.keys.first => selector.values.first).update(created_at: created_at.xmlschema)
187
187
  end
188
188
  end
189
189
 
@@ -1,7 +1,8 @@
1
1
  require 'pact_broker/project_root'
2
+ require 'pact_broker/db/migrate'
3
+ require 'pact_broker/db/version'
2
4
  require 'sequel'
3
5
  require 'yaml'
4
- require 'db'
5
6
 
6
7
  Sequel.extension :migration
7
8
 
@@ -14,15 +15,11 @@ module PactBroker
14
15
 
15
16
  def migrate target = nil
16
17
  opts = target ? {target: target} : {}
17
- Sequel::Migrator.run(database, migrations_dir, opts)
18
+ PactBroker::DB::Migrate.call(database, opts)
18
19
  end
19
20
 
20
21
  def version
21
- if database.tables.include?(:schema_info)
22
- database[:schema_info].first[:version]
23
- else
24
- 0
25
- end
22
+ PactBroker::DB::Version.call(database)
26
23
  end
27
24
 
28
25
  def delete_database_file
@@ -61,7 +58,6 @@ module PactBroker
61
58
  end
62
59
 
63
60
  def create
64
- puts adapter
65
61
  if psql?
66
62
  system('psql postgres -c "create database pact_broker"')
67
63
  system('psql postgres -c "CREATE USER pact_broker WITH PASSWORD \'pact_broker\'"')
@@ -91,7 +87,10 @@ module PactBroker
91
87
  end
92
88
 
93
89
  def database
94
- @@database ||= ::DB.connection_for_env env
90
+ @@database ||= begin
91
+ require 'db'
92
+ ::DB.connection_for_env env
93
+ end
95
94
  end
96
95
 
97
96
  private
@@ -1,10 +1,5 @@
1
1
  require 'pact_broker/tasks'
2
2
 
3
- PactBroker::DB::MigrationTask.new do | task |
4
- require 'db'
5
- task.database_connection = DB::PACT_BROKER_DB
6
- end
7
-
8
3
  namespace :bundler do
9
4
  task :setup do
10
5
  require 'rubygems'
@@ -0,0 +1,11 @@
1
+ require 'pact_broker/tasks'
2
+
3
+ PactBroker::DB::MigrationTask.new do | task |
4
+ require 'db'
5
+ task.database_connection = DB::PACT_BROKER_DB
6
+ end
7
+
8
+ PactBroker::DB::VersionTask.new do | task |
9
+ require 'db'
10
+ task.database_connection = DB::PACT_BROKER_DB
11
+ 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.0.5
4
+ version: 2.1.0
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-06-15 00:00:00.000000000 Z
13
+ date: 2017-07-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -388,6 +388,20 @@ dependencies:
388
388
  - - ">="
389
389
  - !ruby/object:Gem::Version
390
390
  version: '0'
391
+ - !ruby/object:Gem::Dependency
392
+ name: dry-types
393
+ requirement: !ruby/object:Gem::Requirement
394
+ requirements:
395
+ - - "~>"
396
+ - !ruby/object:Gem::Version
397
+ version: 0.10.3
398
+ type: :development
399
+ prerelease: false
400
+ version_requirements: !ruby/object:Gem::Requirement
401
+ requirements:
402
+ - - "~>"
403
+ - !ruby/object:Gem::Version
404
+ version: 0.10.3
391
405
  description: A server that stores and returns pact files generated by the pact gem.
392
406
  It enables head/prod cross testing of the consumer and provider projects.
393
407
  email:
@@ -499,6 +513,7 @@ files:
499
513
  - lib/pact_broker/api/decorators/webhooks_decorator.rb
500
514
  - lib/pact_broker/api/pact_broker_urls.rb
501
515
  - lib/pact_broker/api/renderers/html_pact_renderer.rb
516
+ - lib/pact_broker/api/resources/authentication.rb
502
517
  - lib/pact_broker/api/resources/base_resource.rb
503
518
  - lib/pact_broker/api/resources/group.rb
504
519
  - lib/pact_broker/api/resources/index.rb
@@ -532,7 +547,9 @@ files:
532
547
  - lib/pact_broker/constants.rb
533
548
  - lib/pact_broker/date_helper.rb
534
549
  - lib/pact_broker/db.rb
550
+ - lib/pact_broker/db/migrate.rb
535
551
  - lib/pact_broker/db/validate_encoding.rb
552
+ - lib/pact_broker/db/version.rb
536
553
  - lib/pact_broker/diagnostic/app.rb
537
554
  - lib/pact_broker/diagnostic/resources/base_resource.rb
538
555
  - lib/pact_broker/diagnostic/resources/dependencies.rb
@@ -598,6 +615,7 @@ files:
598
615
  - lib/pact_broker/tags/service.rb
599
616
  - lib/pact_broker/tasks.rb
600
617
  - lib/pact_broker/tasks/migration_task.rb
618
+ - lib/pact_broker/tasks/version_task.rb
601
619
  - lib/pact_broker/ui.rb
602
620
  - lib/pact_broker/ui/app.rb
603
621
  - lib/pact_broker/ui/controllers/base_controller.rb
@@ -632,6 +650,7 @@ files:
632
650
  - lib/rack/pact_broker/convert_file_extension_to_accept_header.rb
633
651
  - lib/rack/pact_broker/database_transaction.rb
634
652
  - lib/rack/pact_broker/invalid_uri_protection.rb
653
+ - lib/rack/pact_broker/ui_authentication.rb
635
654
  - pact_broker.gemspec
636
655
  - pact_broker_client-pact_broker.json
637
656
  - public/Network Graph_files/d3.v3.js
@@ -672,6 +691,8 @@ files:
672
691
  - spec/features/delete_version_spec.rb
673
692
  - spec/features/delete_webhook_spec.rb
674
693
  - spec/features/get_diff_spec.rb
694
+ - spec/features/get_latest_tagged_pact_spec.rb
695
+ - spec/features/get_latest_untagged_pact_spec.rb
675
696
  - spec/features/get_pact_spec.rb
676
697
  - spec/features/get_pact_versions_spec.rb
677
698
  - spec/features/get_previous_distinct_version.rb
@@ -789,14 +810,15 @@ files:
789
810
  - spec/spec_helper.rb
790
811
  - spec/support/database_cleaner.rb
791
812
  - spec/support/fixture_helpers.rb
792
- - spec/support/provider_state_builder.rb
793
813
  - spec/support/rspec_match_hash.rb
794
814
  - spec/support/rspec_matchers.rb
795
815
  - spec/support/shared_examples_for_responses.rb
816
+ - spec/support/test_data_builder.rb
796
817
  - tasks/database.rb
797
818
  - tasks/db.rake
798
819
  - tasks/pact.rake
799
820
  - tasks/rspec.rake
821
+ - tasks/test_db.rake
800
822
  - vendor/hal-browser/.gitignore
801
823
  - vendor/hal-browser/MIT-LICENSE.txt
802
824
  - vendor/hal-browser/README.md
@@ -855,7 +877,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
855
877
  version: '0'
856
878
  requirements: []
857
879
  rubyforge_project:
858
- rubygems_version: 2.4.5
880
+ rubygems_version: 2.6.12
859
881
  signing_key:
860
882
  specification_version: 4
861
883
  summary: See description
@@ -865,6 +887,8 @@ test_files:
865
887
  - spec/features/delete_version_spec.rb
866
888
  - spec/features/delete_webhook_spec.rb
867
889
  - spec/features/get_diff_spec.rb
890
+ - spec/features/get_latest_tagged_pact_spec.rb
891
+ - spec/features/get_latest_untagged_pact_spec.rb
868
892
  - spec/features/get_pact_spec.rb
869
893
  - spec/features/get_pact_versions_spec.rb
870
894
  - spec/features/get_previous_distinct_version.rb
@@ -982,7 +1006,7 @@ test_files:
982
1006
  - spec/spec_helper.rb
983
1007
  - spec/support/database_cleaner.rb
984
1008
  - spec/support/fixture_helpers.rb
985
- - spec/support/provider_state_builder.rb
986
1009
  - spec/support/rspec_match_hash.rb
987
1010
  - spec/support/rspec_matchers.rb
988
1011
  - spec/support/shared_examples_for_responses.rb
1012
+ - spec/support/test_data_builder.rb