pact_broker 2.19.1 → 2.19.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/README.md +0 -1
  4. data/db/migrations/000002_create_versions_table.rb +1 -1
  5. data/db/migrations/20180311_optimise_head_matrix.rb +1 -0
  6. data/db/migrations/20180523_create_latest_verifications_for_consumer_version_tags.rb +50 -0
  7. data/db/migrations/20180524_create_latest_verifications_for_consumer_and_provider.rb +46 -0
  8. data/lib/pact_broker/api/decorators/webhook_execution_result_decorator.rb +7 -3
  9. data/lib/pact_broker/configuration.rb +6 -1
  10. data/lib/pact_broker/domain/webhook_request.rb +12 -11
  11. data/lib/pact_broker/index/service.rb +14 -84
  12. data/lib/pact_broker/matrix/aggregated_row.rb +71 -0
  13. data/lib/pact_broker/matrix/head_row.rb +23 -0
  14. data/lib/pact_broker/matrix/repository.rb +0 -1
  15. data/lib/pact_broker/matrix/row.rb +15 -20
  16. data/lib/pact_broker/pacts/content.rb +66 -0
  17. data/lib/pact_broker/pacts/create_formatted_diff.rb +0 -1
  18. data/lib/pact_broker/pacts/diff.rb +3 -2
  19. data/lib/pact_broker/pacts/generate_sha.rb +24 -0
  20. data/lib/pact_broker/pacts/parse.rb +11 -0
  21. data/lib/pact_broker/pacts/repository.rb +4 -4
  22. data/lib/pact_broker/pacts/service.rb +4 -2
  23. data/lib/pact_broker/pacts/sort_content.rb +54 -0
  24. data/lib/pact_broker/verifications/latest_verification_for_consumer_and_provider.rb +26 -0
  25. data/lib/pact_broker/verifications/latest_verification_for_consumer_version_tag.rb +23 -0
  26. data/lib/pact_broker/version.rb +1 -1
  27. data/lib/pact_broker/versions/repository.rb +12 -3
  28. data/script/run-with-ssl.rb +44 -0
  29. data/spec/features/base_equality_only_on_content_that_affects_verification_results_spec.rb +34 -0
  30. data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +6 -2
  31. data/spec/lib/pact_broker/domain/{index_items_spec.rb → index_item_spec.rb} +0 -0
  32. data/spec/lib/pact_broker/domain/webhook_request_spec.rb +16 -5
  33. data/spec/lib/pact_broker/matrix/aggregated_row_spec.rb +79 -0
  34. data/spec/lib/pact_broker/matrix/head_row_spec.rb +55 -0
  35. data/spec/lib/pact_broker/matrix/row_spec.rb +22 -2
  36. data/spec/lib/pact_broker/pacts/content_spec.rb +166 -0
  37. data/spec/lib/pact_broker/pacts/create_formatted_diff_spec.rb +0 -3
  38. data/spec/lib/pact_broker/pacts/generate_sha_spec.rb +92 -0
  39. data/spec/lib/pact_broker/pacts/repository_spec.rb +47 -4
  40. data/spec/lib/pact_broker/pacts/sort_content_spec.rb +44 -0
  41. data/spec/lib/pact_broker/versions/repository_spec.rb +13 -5
  42. data/spec/spec_helper.rb +1 -0
  43. data/spec/support/foo-bar.json +34 -0
  44. data/spec/support/rspec_match_hash.rb +14 -17
  45. data/spec/support/test_data_builder.rb +5 -4
  46. metadata +26 -8
  47. data/lib/pact_broker/matrix/latest_row.rb +0 -10
  48. data/lib/pact_broker/pacts/sort_verifiable_content.rb +0 -41
  49. data/spec/lib/pact_broker/pacts/sort_verifiable_content_spec.rb +0 -25
@@ -1,10 +0,0 @@
1
- require 'pact_broker/matrix/row'
2
-
3
- module PactBroker
4
- module Matrix
5
- # Latest pact revision for each consumer version => latest verification for each provider version
6
- class LatestRow < Row
7
- set_dataset(:latest_matrix_for_consumer_version_and_provider_version)
8
- end
9
- end
10
- end
@@ -1,41 +0,0 @@
1
- require 'pact_broker/json'
2
-
3
- module PactBroker
4
- module Pacts
5
- class SortVerifiableContent
6
-
7
- def self.call json
8
- hash = JSON.parse(json, PACT_PARSING_OPTIONS)
9
- verifiable_content = if hash['interactions']
10
- hash['interactions']
11
- elsif hash['messages']
12
- hash['messages']
13
- end
14
- order_verifiable_content(verifiable_content).to_json
15
- end
16
-
17
- def self.order_verifiable_content array
18
- array_with_ordered_hashes = order_hashes(array)
19
- array_with_ordered_hashes.sort{|a, b| a.to_json <=> b.to_json }
20
- end
21
-
22
- def self.order_hashes thing
23
- case thing
24
- when Hash then order_hash(thing)
25
- when Array then order_child_array(thing)
26
- else thing
27
- end
28
- end
29
-
30
- def self.order_child_array array
31
- array.collect{|thing| order_hashes(thing) }
32
- end
33
-
34
- def self.order_hash hash
35
- hash.keys.sort.each_with_object({}) do | key, new_hash |
36
- new_hash[key] = order_hashes(hash[key])
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,25 +0,0 @@
1
- require 'pact_broker/pacts/sort_verifiable_content'
2
-
3
- module PactBroker
4
- module Pacts
5
- describe SortVerifiableContent do
6
- let(:pact_content_1) do
7
- {
8
- a: 1,
9
- interactions: [{ a: 1, b: 2 }, { a: 2, b: 3 }]
10
- }.to_json
11
- end
12
-
13
- let(:pact_content_2) do
14
- {
15
- interactions: [{ b: 3, a: 2}, { b: 2, a: 1 }],
16
- a: 1
17
- }.to_json
18
- end
19
-
20
- it "sorts the interactions/messages and keys in a deterministic way" do
21
- expect(SortVerifiableContent.call(pact_content_1).to_json).to eq(SortVerifiableContent.call(pact_content_2).to_json)
22
- end
23
- end
24
- end
25
- end