pact_broker 2.0.5 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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