pact_broker 2.105.0 → 2.107.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (178) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -1
  3. data/Gemfile +3 -0
  4. data/README.md +1 -1
  5. data/db/migrations/20221130_add_provider_version_id_index_to_verifications.rb +28 -0
  6. data/db/migrations/20221208_add_index_to_pact_version_provider_tag_successful_verifications.rb +21 -0
  7. data/db/migrations/20221215_add_prov_ver_id_ndx_to_latest_verifi_id_for_pact_ver_and_prov_ver.rb +21 -0
  8. data/db/migrations/20230131_add_cons_ver_id_ndx_to_latest_pp_id_for_cons_ver.rb +21 -0
  9. data/db/migrations/20230216_add_branch_heads_branch_version_id_index.rb +21 -0
  10. data/db/migrations/20230428_add_index_for_webhook_executions_pact_publication_id.rb +17 -0
  11. data/docs/CONFIGURATION.md +1 -1
  12. data/docs/api/PAGINATION.md +43 -0
  13. data/lib/pact_broker/api/contracts/base_contract.rb +22 -7
  14. data/lib/pact_broker/api/contracts/can_i_deploy_query_schema.rb +34 -0
  15. data/lib/pact_broker/api/contracts/configuration.rb +2 -0
  16. data/lib/pact_broker/api/contracts/consumer_version_selector_contract.rb +140 -0
  17. data/lib/pact_broker/api/contracts/dry_validation_errors_formatter.rb +50 -0
  18. data/lib/pact_broker/api/contracts/dry_validation_macros.rb +79 -0
  19. data/lib/pact_broker/api/contracts/dry_validation_methods.rb +71 -0
  20. data/lib/pact_broker/api/contracts/environment_schema.rb +19 -33
  21. data/lib/pact_broker/api/contracts/pacticipant_create_schema.rb +4 -17
  22. data/lib/pact_broker/api/contracts/pacticipant_schema.rb +15 -24
  23. data/lib/pact_broker/api/contracts/pacts_for_verification_json_query_schema.rb +37 -146
  24. data/lib/pact_broker/api/contracts/pacts_for_verification_query_string_schema.rb +7 -20
  25. data/lib/pact_broker/api/contracts/publish_contracts_contract_contract.rb +62 -0
  26. data/lib/pact_broker/api/contracts/publish_contracts_schema.rb +25 -112
  27. data/lib/pact_broker/api/contracts/put_pact_params_contract.rb +21 -26
  28. data/lib/pact_broker/api/contracts/utf_8_validation.rb +19 -0
  29. data/lib/pact_broker/api/contracts/validation_helpers.rb +71 -0
  30. data/lib/pact_broker/api/contracts/verification_contract.rb +10 -29
  31. data/lib/pact_broker/api/contracts/webhook_contract.rb +20 -170
  32. data/lib/pact_broker/api/contracts/webhook_pacticipant_contract.rb +33 -0
  33. data/lib/pact_broker/api/contracts/webhook_request_contract.rb +125 -0
  34. data/lib/pact_broker/api/contracts.rb +3 -0
  35. data/lib/pact_broker/api/decorators/custom_error_problem_json_decorator.rb +36 -0
  36. data/lib/pact_broker/api/decorators/dashboard_text_decorator.rb +2 -2
  37. data/lib/pact_broker/api/decorators/extended_pact_decorator.rb +1 -1
  38. data/lib/pact_broker/api/decorators/matrix_decorator.rb +4 -4
  39. data/lib/pact_broker/api/decorators/matrix_text_decorator.rb +1 -1
  40. data/lib/pact_broker/api/decorators/pact_decorator.rb +1 -1
  41. data/lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb +5 -2
  42. data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +2 -1
  43. data/lib/pact_broker/api/decorators/pacts_for_verification_query_decorator.rb +4 -1
  44. data/lib/pact_broker/api/decorators/pagination_links.rb +11 -0
  45. data/lib/pact_broker/api/decorators/runtime_error_problem_json_decorator.rb +34 -0
  46. data/lib/pact_broker/api/decorators/validation_errors_problem_json_decorator.rb +66 -0
  47. data/lib/pact_broker/api/decorators/verifiable_pact_decorator.rb +4 -4
  48. data/lib/pact_broker/api/decorators/webhook_decorator.rb +2 -3
  49. data/lib/pact_broker/api/decorators/webhook_execution_result_decorator.rb +5 -12
  50. data/lib/pact_broker/api/resources/all_webhooks.rb +5 -11
  51. data/lib/pact_broker/api/resources/badge_methods.rb +1 -1
  52. data/lib/pact_broker/api/resources/base_resource.rb +31 -68
  53. data/lib/pact_broker/api/resources/branch_version.rb +3 -3
  54. data/lib/pact_broker/api/resources/can_i_deploy.rb +4 -19
  55. data/lib/pact_broker/api/resources/can_i_deploy_pacticipant_version_by_branch_to_environment.rb +1 -4
  56. data/lib/pact_broker/api/resources/can_i_deploy_pacticipant_version_by_tag_to_tag.rb +0 -2
  57. data/lib/pact_broker/api/resources/can_i_deploy_pacticipant_version_by_tag_to_tag_badge.rb +1 -2
  58. data/lib/pact_broker/api/resources/currently_deployed_versions_for_environment.rb +2 -2
  59. data/lib/pact_broker/api/resources/currently_supported_versions_for_environment.rb +2 -2
  60. data/lib/pact_broker/api/resources/dashboard.rb +3 -3
  61. data/lib/pact_broker/api/resources/deployed_version.rb +1 -1
  62. data/lib/pact_broker/api/resources/deployed_versions_for_version_and_environment.rb +2 -2
  63. data/lib/pact_broker/api/resources/environment.rb +1 -1
  64. data/lib/pact_broker/api/resources/environments.rb +2 -2
  65. data/lib/pact_broker/api/resources/error_handling_methods.rb +57 -0
  66. data/lib/pact_broker/api/resources/error_response_generator.rb +70 -0
  67. data/lib/pact_broker/api/resources/integrations.rb +1 -1
  68. data/lib/pact_broker/api/resources/label.rb +1 -1
  69. data/lib/pact_broker/api/resources/latest_pact.rb +2 -2
  70. data/lib/pact_broker/api/resources/latest_pacts.rb +1 -1
  71. data/lib/pact_broker/api/resources/latest_verifications_for_consumer_version.rb +2 -2
  72. data/lib/pact_broker/api/resources/matrix.rb +2 -2
  73. data/lib/pact_broker/api/resources/matrix_for_consumer_and_provider.rb +1 -1
  74. data/lib/pact_broker/api/resources/pact.rb +7 -4
  75. data/lib/pact_broker/api/resources/pact_triggered_webhooks.rb +1 -1
  76. data/lib/pact_broker/api/resources/pact_version.rb +1 -1
  77. data/lib/pact_broker/api/resources/pact_versions.rb +1 -1
  78. data/lib/pact_broker/api/resources/pact_webhooks.rb +7 -14
  79. data/lib/pact_broker/api/resources/pact_webhooks_status.rb +6 -2
  80. data/lib/pact_broker/api/resources/pacticipant.rb +1 -1
  81. data/lib/pact_broker/api/resources/pacticipant_webhooks.rb +7 -5
  82. data/lib/pact_broker/api/resources/pacticipants.rb +6 -3
  83. data/lib/pact_broker/api/resources/pacticipants_for_label.rb +1 -1
  84. data/lib/pact_broker/api/resources/pagination_methods.rb +8 -4
  85. data/lib/pact_broker/api/resources/previous_distinct_pact_version.rb +1 -1
  86. data/lib/pact_broker/api/resources/provider_pacts.rb +1 -1
  87. data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +4 -13
  88. data/lib/pact_broker/api/resources/publish_contracts.rb +8 -3
  89. data/lib/pact_broker/api/resources/released_version.rb +1 -1
  90. data/lib/pact_broker/api/resources/released_versions_for_version_and_environment.rb +2 -2
  91. data/lib/pact_broker/api/resources/tag.rb +1 -1
  92. data/lib/pact_broker/api/resources/tagged_pact_versions.rb +1 -1
  93. data/lib/pact_broker/api/resources/triggered_webhook_logs.rb +2 -2
  94. data/lib/pact_broker/api/resources/verification.rb +2 -2
  95. data/lib/pact_broker/api/resources/verification_triggered_webhooks.rb +1 -1
  96. data/lib/pact_broker/api/resources/verifications.rb +4 -6
  97. data/lib/pact_broker/api/resources/version.rb +1 -1
  98. data/lib/pact_broker/api/resources/versions.rb +6 -13
  99. data/lib/pact_broker/api/resources/webhook.rb +7 -6
  100. data/lib/pact_broker/api/resources/webhook_execution.rb +6 -4
  101. data/lib/pact_broker/api.rb +3 -13
  102. data/lib/pact_broker/app.rb +0 -2
  103. data/lib/pact_broker/application_context.rb +4 -4
  104. data/lib/pact_broker/certificates/certificate.rb +1 -0
  105. data/lib/pact_broker/config/setting.rb +1 -0
  106. data/lib/pact_broker/contracts/service.rb +1 -0
  107. data/lib/pact_broker/date_helper.rb +1 -1
  108. data/lib/pact_broker/db/clean_incremental.rb +67 -59
  109. data/lib/pact_broker/db/delete_overwritten_data.rb +6 -2
  110. data/lib/pact_broker/deployments/currently_deployed_version_id.rb +2 -0
  111. data/lib/pact_broker/deployments/deployed_version.rb +2 -0
  112. data/lib/pact_broker/deployments/deployed_version_service.rb +5 -1
  113. data/lib/pact_broker/deployments/environment.rb +2 -0
  114. data/lib/pact_broker/deployments/environment_service.rb +4 -3
  115. data/lib/pact_broker/deployments/released_version.rb +2 -0
  116. data/lib/pact_broker/deployments/released_version_service.rb +4 -0
  117. data/lib/pact_broker/diagnostic/resources/base_resource.rb +1 -1
  118. data/lib/pact_broker/doc/views/index/publish-contracts.markdown +5 -5
  119. data/lib/pact_broker/domain/label.rb +1 -0
  120. data/lib/pact_broker/domain/tag.rb +2 -0
  121. data/lib/pact_broker/domain/verification.rb +1 -1
  122. data/lib/pact_broker/domain/version.rb +4 -1
  123. data/lib/pact_broker/domain/webhook.rb +1 -1
  124. data/lib/pact_broker/index/service.rb +2 -2
  125. data/lib/pact_broker/integrations/integration.rb +1 -0
  126. data/lib/pact_broker/locale/en.yml +36 -14
  127. data/lib/pact_broker/matrix/query_ids.rb +4 -4
  128. data/lib/pact_broker/matrix/resolved_selector.rb +6 -1
  129. data/lib/pact_broker/matrix/service.rb +1 -0
  130. data/lib/pact_broker/messages.rb +5 -1
  131. data/lib/pact_broker/pacticipants/repository.rb +16 -14
  132. data/lib/pact_broker/pacticipants/service.rb +11 -8
  133. data/lib/pact_broker/pacts/pact_params.rb +6 -17
  134. data/lib/pact_broker/pacts/pact_version.rb +1 -0
  135. data/lib/pact_broker/pacts/selected_pact.rb +4 -0
  136. data/lib/pact_broker/policies.rb +4 -4
  137. data/lib/pact_broker/repositories/helpers.rb +11 -0
  138. data/lib/pact_broker/repositories/page.rb +24 -0
  139. data/lib/pact_broker/string_refinements.rb +4 -0
  140. data/lib/pact_broker/tasks/clean_task.rb +7 -3
  141. data/lib/pact_broker/test/http_test_data_builder.rb +46 -2
  142. data/lib/pact_broker/ui/app.rb +2 -2
  143. data/lib/pact_broker/ui/views/matrix/show.haml +1 -1
  144. data/lib/pact_broker/verifications/latest_verification_id_for_pact_version_and_provider_version.rb +1 -1
  145. data/lib/pact_broker/verifications/pact_version_provider_tag_successful_verification.rb +1 -0
  146. data/lib/pact_broker/verifications/repository.rb +14 -11
  147. data/lib/pact_broker/verifications/service.rb +0 -6
  148. data/lib/pact_broker/version.rb +1 -1
  149. data/lib/pact_broker/versions/branch.rb +1 -0
  150. data/lib/pact_broker/versions/branch_head.rb +2 -1
  151. data/lib/pact_broker/versions/branch_version.rb +11 -0
  152. data/lib/pact_broker/versions/repository.rb +12 -0
  153. data/lib/pact_broker/versions/service.rb +4 -0
  154. data/lib/pact_broker/webhooks/execution.rb +1 -1
  155. data/lib/pact_broker/webhooks/repository.rb +1 -1
  156. data/lib/pact_broker/webhooks/service.rb +3 -25
  157. data/lib/pact_broker/webhooks/triggered_webhook.rb +1 -0
  158. data/lib/pact_broker/webhooks/webhook_event.rb +1 -0
  159. data/lib/pact_broker/webmachine.rb +22 -0
  160. data/lib/rack/pact_broker/invalid_uri_protection.rb +1 -1
  161. data/lib/rack/pact_broker/request_target.rb +1 -1
  162. data/lib/rack/pact_broker/use_when.rb +6 -5
  163. data/lib/sequel/plugins/age.rb +13 -0
  164. data/lib/webmachine/application_monkey_patch.rb +15 -0
  165. data/lib/webmachine/describe_routes.rb +35 -8
  166. data/lib/webmachine/render_error_monkey_patch.rb +70 -0
  167. data/pact_broker.gemspec +7 -18
  168. metadata +72 -76
  169. data/lib/pact/doc/README.md +0 -5
  170. data/lib/pact_broker/api/contracts/dry_validation_predicates.rb +0 -36
  171. data/lib/pact_broker/api/contracts/dry_validation_workarounds.rb +0 -39
  172. data/lib/pact_broker/api/contracts/pacticipant_name_contract.rb +0 -24
  173. data/lib/pact_broker/api/contracts/pacticipant_name_validation.rb +0 -30
  174. data/lib/pact_broker/api/contracts/request_validations.rb +0 -33
  175. data/lib/pact_broker/api/resources/error_response_body_generator.rb +0 -41
  176. data/lib/pact_broker/api/resources/webhook_resource_methods.rb +0 -17
  177. data/lib/pact_broker/matrix/can_i_deploy_query_schema.rb +0 -46
  178. data/lib/rack/pact_broker/convert_404_to_hal.rb +0 -20
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.105.0
4
+ version: 2.107.0.beta.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: 2022-10-19 00:00:00.000000000 Z
13
+ date: 2023-05-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json
@@ -27,75 +27,61 @@ dependencies:
27
27
  - !ruby/object:Gem::Version
28
28
  version: '2.3'
29
29
  - !ruby/object:Gem::Dependency
30
- name: roar
30
+ name: psych
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: '1.1'
35
+ version: '4.0'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '1.1'
42
+ version: '4.0'
43
43
  - !ruby/object:Gem::Dependency
44
- name: reform
44
+ name: roar
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: 2.3.3
49
+ version: '1.1'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: 2.3.3
56
+ version: '1.1'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: dry-validation
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: 0.10.5
63
+ version: '1.8'
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: 0.10.5
71
- - !ruby/object:Gem::Dependency
72
- name: dry-container
73
- requirement: !ruby/object:Gem::Requirement
74
- requirements:
75
- - - '='
76
- - !ruby/object:Gem::Version
77
- version: 0.8.0
78
- type: :runtime
79
- prerelease: false
80
- version_requirements: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - '='
83
- - !ruby/object:Gem::Version
84
- version: 0.8.0
70
+ version: '1.8'
85
71
  - !ruby/object:Gem::Dependency
86
- name: dry-configurable
72
+ name: reform
87
73
  requirement: !ruby/object:Gem::Requirement
88
74
  requirements:
89
- - - '='
75
+ - - "~>"
90
76
  - !ruby/object:Gem::Version
91
- version: 0.12.1
77
+ version: '2.6'
92
78
  type: :runtime
93
79
  prerelease: false
94
80
  version_requirements: !ruby/object:Gem::Requirement
95
81
  requirements:
96
- - - '='
82
+ - - "~>"
97
83
  - !ruby/object:Gem::Version
98
- version: 0.12.1
84
+ version: '2.6'
99
85
  - !ruby/object:Gem::Dependency
100
86
  name: sequel
101
87
  requirement: !ruby/object:Gem::Requirement
@@ -114,16 +100,22 @@ dependencies:
114
100
  name: webmachine
115
101
  requirement: !ruby/object:Gem::Requirement
116
102
  requirements:
117
- - - '='
103
+ - - ">="
118
104
  - !ruby/object:Gem::Version
119
- version: 1.6.0
105
+ version: 2.0.0.beta
106
+ - - "<"
107
+ - !ruby/object:Gem::Version
108
+ version: '3.0'
120
109
  type: :runtime
121
110
  prerelease: false
122
111
  version_requirements: !ruby/object:Gem::Requirement
123
112
  requirements:
124
- - - '='
113
+ - - ">="
125
114
  - !ruby/object:Gem::Version
126
- version: 1.6.0
115
+ version: 2.0.0.beta
116
+ - - "<"
117
+ - !ruby/object:Gem::Version
118
+ version: '3.0'
127
119
  - !ruby/object:Gem::Dependency
128
120
  name: semver2
129
121
  requirement: !ruby/object:Gem::Requirement
@@ -286,34 +278,6 @@ dependencies:
286
278
  - - "<"
287
279
  - !ruby/object:Gem::Version
288
280
  version: '3.0'
289
- - !ruby/object:Gem::Dependency
290
- name: dry-types
291
- requirement: !ruby/object:Gem::Requirement
292
- requirements:
293
- - - "~>"
294
- - !ruby/object:Gem::Version
295
- version: 0.10.3
296
- type: :runtime
297
- prerelease: false
298
- version_requirements: !ruby/object:Gem::Requirement
299
- requirements:
300
- - - "~>"
301
- - !ruby/object:Gem::Version
302
- version: 0.10.3
303
- - !ruby/object:Gem::Dependency
304
- name: dry-logic
305
- requirement: !ruby/object:Gem::Requirement
306
- requirements:
307
- - - '='
308
- - !ruby/object:Gem::Version
309
- version: 0.4.2
310
- type: :runtime
311
- prerelease: false
312
- version_requirements: !ruby/object:Gem::Requirement
313
- requirements:
314
- - - '='
315
- - !ruby/object:Gem::Version
316
- version: 0.4.2
317
281
  - !ruby/object:Gem::Dependency
318
282
  name: table_print
319
283
  requirement: !ruby/object:Gem::Requirement
@@ -346,14 +310,14 @@ dependencies:
346
310
  name: sanitize
347
311
  requirement: !ruby/object:Gem::Requirement
348
312
  requirements:
349
- - - '='
313
+ - - "~>"
350
314
  - !ruby/object:Gem::Version
351
315
  version: '6.0'
352
316
  type: :runtime
353
317
  prerelease: false
354
318
  version_requirements: !ruby/object:Gem::Requirement
355
319
  requirements:
356
- - - '='
320
+ - - "~>"
357
321
  - !ruby/object:Gem::Version
358
322
  version: '6.0'
359
323
  - !ruby/object:Gem::Dependency
@@ -398,6 +362,20 @@ dependencies:
398
362
  - - "~>"
399
363
  - !ruby/object:Gem::Version
400
364
  version: '1.5'
365
+ - !ruby/object:Gem::Dependency
366
+ name: moments
367
+ requirement: !ruby/object:Gem::Requirement
368
+ requirements:
369
+ - - "~>"
370
+ - !ruby/object:Gem::Version
371
+ version: '0.2'
372
+ type: :runtime
373
+ prerelease: false
374
+ version_requirements: !ruby/object:Gem::Requirement
375
+ requirements:
376
+ - - "~>"
377
+ - !ruby/object:Gem::Version
378
+ version: '0.2'
401
379
  description: A server that stores and returns pact files generated by the pact gem.
402
380
  It enables head/prod cross testing of the consumer and provider projects.
403
381
  email:
@@ -587,11 +565,17 @@ files:
587
565
  - db/migrations/20220303_increase_consumer_version_selector_hashes_column_size.rb
588
566
  - db/migrations/20220622_default_allow_dangerous_contract_modification_to_false_for_new_installations.rb
589
567
  - db/migrations/20220625_delete_pacticipants_with_no_name.rb
568
+ - db/migrations/20221130_add_provider_version_id_index_to_verifications.rb
569
+ - db/migrations/20221208_add_index_to_pact_version_provider_tag_successful_verifications.rb
570
+ - db/migrations/20221215_add_prov_ver_id_ndx_to_latest_verifi_id_for_pact_ver_and_prov_ver.rb
571
+ - db/migrations/20230131_add_cons_ver_id_ndx_to_latest_pp_id_for_cons_ver.rb
572
+ - db/migrations/20230216_add_branch_heads_branch_version_id_index.rb
573
+ - db/migrations/20230428_add_index_for_webhook_executions_pact_publication_id.rb
590
574
  - db/migrations/migration_helper.rb
591
575
  - docs/CONFIGURATION.md
592
576
  - docs/api/PACTICIPANTS.md
577
+ - docs/api/PAGINATION.md
593
578
  - docs/api/WEBHOOKS.md
594
- - lib/pact/doc/README.md
595
579
  - lib/pact/doc/doc_file.rb
596
580
  - lib/pact/doc/generate.rb
597
581
  - lib/pact/doc/generator.rb
@@ -606,27 +590,34 @@ files:
606
590
  - lib/pact_broker/api.rb
607
591
  - lib/pact_broker/api/authorization/resource_access_policy.rb
608
592
  - lib/pact_broker/api/authorization/resource_access_rules.rb
593
+ - lib/pact_broker/api/contracts.rb
609
594
  - lib/pact_broker/api/contracts/base_contract.rb
595
+ - lib/pact_broker/api/contracts/can_i_deploy_query_schema.rb
610
596
  - lib/pact_broker/api/contracts/configuration.rb
611
- - lib/pact_broker/api/contracts/dry_validation_predicates.rb
612
- - lib/pact_broker/api/contracts/dry_validation_workarounds.rb
597
+ - lib/pact_broker/api/contracts/consumer_version_selector_contract.rb
598
+ - lib/pact_broker/api/contracts/dry_validation_errors_formatter.rb
599
+ - lib/pact_broker/api/contracts/dry_validation_macros.rb
600
+ - lib/pact_broker/api/contracts/dry_validation_methods.rb
613
601
  - lib/pact_broker/api/contracts/environment_schema.rb
614
602
  - lib/pact_broker/api/contracts/pacticipant_create_schema.rb
615
- - lib/pact_broker/api/contracts/pacticipant_name_contract.rb
616
- - lib/pact_broker/api/contracts/pacticipant_name_validation.rb
617
603
  - lib/pact_broker/api/contracts/pacticipant_schema.rb
618
604
  - lib/pact_broker/api/contracts/pacts_for_verification_json_query_schema.rb
619
605
  - lib/pact_broker/api/contracts/pacts_for_verification_query_string_schema.rb
606
+ - lib/pact_broker/api/contracts/publish_contracts_contract_contract.rb
620
607
  - lib/pact_broker/api/contracts/publish_contracts_schema.rb
621
608
  - lib/pact_broker/api/contracts/put_pact_params_contract.rb
622
- - lib/pact_broker/api/contracts/request_validations.rb
609
+ - lib/pact_broker/api/contracts/utf_8_validation.rb
610
+ - lib/pact_broker/api/contracts/validation_helpers.rb
623
611
  - lib/pact_broker/api/contracts/verification_contract.rb
624
612
  - lib/pact_broker/api/contracts/webhook_contract.rb
613
+ - lib/pact_broker/api/contracts/webhook_pacticipant_contract.rb
614
+ - lib/pact_broker/api/contracts/webhook_request_contract.rb
625
615
  - lib/pact_broker/api/decorators.rb
626
616
  - lib/pact_broker/api/decorators/base_decorator.rb
627
617
  - lib/pact_broker/api/decorators/basic_pacticipant_decorator.rb
628
618
  - lib/pact_broker/api/decorators/branch_version_decorator.rb
629
619
  - lib/pact_broker/api/decorators/configuration.rb
620
+ - lib/pact_broker/api/decorators/custom_error_problem_json_decorator.rb
630
621
  - lib/pact_broker/api/decorators/dashboard_decorator.rb
631
622
  - lib/pact_broker/api/decorators/dashboard_text_decorator.rb
632
623
  - lib/pact_broker/api/decorators/decorator_context.rb
@@ -670,11 +661,13 @@ files:
670
661
  - lib/pact_broker/api/decorators/released_version_decorator.rb
671
662
  - lib/pact_broker/api/decorators/released_versions_decorator.rb
672
663
  - lib/pact_broker/api/decorators/representable_pact.rb
664
+ - lib/pact_broker/api/decorators/runtime_error_problem_json_decorator.rb
673
665
  - lib/pact_broker/api/decorators/tag_decorator.rb
674
666
  - lib/pact_broker/api/decorators/tagged_pact_versions_decorator.rb
675
667
  - lib/pact_broker/api/decorators/timestamps.rb
676
668
  - lib/pact_broker/api/decorators/triggered_webhook_decorator.rb
677
669
  - lib/pact_broker/api/decorators/triggered_webhooks_decorator.rb
670
+ - lib/pact_broker/api/decorators/validation_errors_problem_json_decorator.rb
678
671
  - lib/pact_broker/api/decorators/verifiable_pact_decorator.rb
679
672
  - lib/pact_broker/api/decorators/verifiable_pacts_decorator.rb
680
673
  - lib/pact_broker/api/decorators/verification_decorator.rb
@@ -714,7 +707,8 @@ files:
714
707
  - lib/pact_broker/api/resources/environment.rb
715
708
  - lib/pact_broker/api/resources/environments.rb
716
709
  - lib/pact_broker/api/resources/error_handler.rb
717
- - lib/pact_broker/api/resources/error_response_body_generator.rb
710
+ - lib/pact_broker/api/resources/error_handling_methods.rb
711
+ - lib/pact_broker/api/resources/error_response_generator.rb
718
712
  - lib/pact_broker/api/resources/error_test.rb
719
713
  - lib/pact_broker/api/resources/group.rb
720
714
  - lib/pact_broker/api/resources/index.rb
@@ -766,7 +760,6 @@ files:
766
760
  - lib/pact_broker/api/resources/webhook.rb
767
761
  - lib/pact_broker/api/resources/webhook_execution.rb
768
762
  - lib/pact_broker/api/resources/webhook_execution_methods.rb
769
- - lib/pact_broker/api/resources/webhook_resource_methods.rb
770
763
  - lib/pact_broker/app.rb
771
764
  - lib/pact_broker/application_context.rb
772
765
  - lib/pact_broker/badges/service.rb
@@ -916,7 +909,6 @@ files:
916
909
  - lib/pact_broker/locale/en.yml
917
910
  - lib/pact_broker/logging.rb
918
911
  - lib/pact_broker/logging/default_formatter.rb
919
- - lib/pact_broker/matrix/can_i_deploy_query_schema.rb
920
912
  - lib/pact_broker/matrix/deployment_status_summary.rb
921
913
  - lib/pact_broker/matrix/every_row.rb
922
914
  - lib/pact_broker/matrix/integration.rb
@@ -976,6 +968,7 @@ files:
976
968
  - lib/pact_broker/relationships/groupify.rb
977
969
  - lib/pact_broker/repositories.rb
978
970
  - lib/pact_broker/repositories/helpers.rb
971
+ - lib/pact_broker/repositories/page.rb
979
972
  - lib/pact_broker/repositories/scopes.rb
980
973
  - lib/pact_broker/services.rb
981
974
  - lib/pact_broker/string_refinements.rb
@@ -1076,13 +1069,13 @@ files:
1076
1069
  - lib/pact_broker/webhooks/webhook_execution_result.rb
1077
1070
  - lib/pact_broker/webhooks/webhook_request_logger.rb
1078
1071
  - lib/pact_broker/webhooks/webhook_request_template.rb
1072
+ - lib/pact_broker/webmachine.rb
1079
1073
  - lib/rack/hal_browser.rb
1080
1074
  - lib/rack/hal_browser/redirect.rb
1081
1075
  - lib/rack/pact_broker/add_pact_broker_version_header.rb
1082
1076
  - lib/rack/pact_broker/add_vary_header.rb
1083
1077
  - lib/rack/pact_broker/cascade.rb
1084
1078
  - lib/rack/pact_broker/configurable_make_it_later.rb
1085
- - lib/rack/pact_broker/convert_404_to_hal.rb
1086
1079
  - lib/rack/pact_broker/convert_file_extension_to_accept_header.rb
1087
1080
  - lib/rack/pact_broker/database_transaction.rb
1088
1081
  - lib/rack/pact_broker/invalid_uri_protection.rb
@@ -1095,9 +1088,12 @@ files:
1095
1088
  - lib/rack/pact_broker/use_when.rb
1096
1089
  - lib/semantic_logger/formatters/short.rb
1097
1090
  - lib/sequel/extensions/statement_timeout.rb
1091
+ - lib/sequel/plugins/age.rb
1098
1092
  - lib/sequel/plugins/insert_ignore.rb
1099
1093
  - lib/sequel/plugins/upsert.rb
1094
+ - lib/webmachine/application_monkey_patch.rb
1100
1095
  - lib/webmachine/describe_routes.rb
1096
+ - lib/webmachine/render_error_monkey_patch.rb
1101
1097
  - pact_broker.gemspec
1102
1098
  - public/Network Graph_files/d3.v3.js
1103
1099
  - public/Network Graph_files/ga.js
@@ -1223,11 +1219,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
1223
1219
  version: 2.2.0
1224
1220
  required_rubygems_version: !ruby/object:Gem::Requirement
1225
1221
  requirements:
1226
- - - ">="
1222
+ - - ">"
1227
1223
  - !ruby/object:Gem::Version
1228
- version: '0'
1224
+ version: 1.3.1
1229
1225
  requirements: []
1230
- rubygems_version: 3.3.24
1226
+ rubygems_version: 3.4.12
1231
1227
  signing_key:
1232
1228
  specification_version: 4
1233
1229
  summary: See description
@@ -1,5 +0,0 @@
1
- # Pact::Doc
2
-
3
- The code in pact/doc has been copied from the pact gem to break the runtime dependency between the pact_broker and the pact gem, which requires the pact_mock-service, which requires webrick.
4
-
5
- This was required as there is a vulnerability in webrick <= 1.3.1 that we don't want to include in the pact_broker gem, but webrick > 1.3.1 requires ruby 2.3.0, but we need ruby 2.2 for Travelling Ruby, which we use to package the Ruby codebase so it can be shared with implementations in other langauges.
@@ -1,36 +0,0 @@
1
- require "dry-validation"
2
-
3
- module PactBroker
4
- module Api
5
- module Contracts
6
- module DryValidationPredicates
7
- include Dry::Logic::Predicates
8
-
9
- predicate(:date?) do |value|
10
- DateTime.parse(value) rescue false
11
- end
12
-
13
- predicate(:base64?) do |value|
14
- Base64.strict_decode64(value) rescue false
15
- end
16
-
17
- predicate(:not_blank?) do | value |
18
- value && value.is_a?(String) && value.strip.size > 0
19
- end
20
-
21
- predicate(:single_line?) do | value |
22
- value && value.is_a?(String) && !value.include?("\n")
23
- end
24
-
25
- predicate(:no_spaces?) do | value |
26
- value && value.is_a?(String) && !value.include?(" ")
27
- end
28
-
29
- predicate(:environment_with_name_exists?) do | value |
30
- require "pact_broker/deployments/environment_service"
31
- !!PactBroker::Deployments::EnvironmentService.find_by_name(value)
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,39 +0,0 @@
1
- module PactBroker
2
- module Api
3
- module Contracts
4
- module DryValidationWorkarounds
5
- extend self
6
-
7
- # I just cannot seem to get the validation to stop on the first error.
8
- # If one rule fails, they all come back failed, and it's driving me nuts.
9
- # Why on earth would I want that behaviour?
10
- def select_first_message(messages)
11
- messages.each_with_object({}) do | (key, value), new_messages |
12
- new_messages[key] = [value.first]
13
- end
14
- end
15
-
16
- def flatten_array_of_hashes(array_of_hashes)
17
- array_of_hashes.collect do | index, hash_or_array |
18
- array = hash_or_array.is_a?(Hash) ? hash_or_array.values.flatten : hash_or_array
19
- array.collect { | text | "#{text} at index #{index}"}
20
- end.flatten
21
- end
22
-
23
- def flatten_indexed_messages(messages)
24
- if messages.values.any?{ | value | is_indexed_structure?(value) }
25
- messages.each_with_object({}) do | (key, value), new_messages |
26
- new_messages[key] = is_indexed_structure?(value) ? flatten_array_of_hashes(value) : value
27
- end
28
- else
29
- messages
30
- end
31
- end
32
-
33
- def is_indexed_structure?(thing)
34
- thing.is_a?(Hash) && thing.keys.first.is_a?(Integer)
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,24 +0,0 @@
1
- require "pact_broker/api/contracts/base_contract"
2
-
3
- module PactBroker
4
- module Api
5
- module Contracts
6
- class PacticipantNameContract < BaseContract
7
- property :name
8
- property :name_in_pact
9
- property :pacticipant
10
- property :message_args
11
-
12
- include PactBroker::Messages
13
-
14
- def blank? string
15
- string && string.strip.empty?
16
- end
17
-
18
- def empty? string
19
- string.nil? || blank?(string)
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,30 +0,0 @@
1
- module PactBroker
2
- module Api
3
- module Contracts
4
- module PacticipantNameValidation
5
-
6
- include PactBroker::Messages
7
-
8
- def name_in_pact_present
9
- unless name_in_pact
10
- errors.add(:'name', validation_message("pact_missing_pacticipant_name", pacticipant: pacticipant))
11
- end
12
- end
13
-
14
- def name_not_blank
15
- if blank? name
16
- errors.add(:'name', validation_message("blank"))
17
- end
18
- end
19
-
20
- def blank? string
21
- string && string.strip.empty?
22
- end
23
-
24
- def empty? string
25
- string.nil? || blank?(string)
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,33 +0,0 @@
1
- require "net/http"
2
- require "uri"
3
-
4
- module PactBroker
5
- module Api
6
- module Contracts
7
-
8
- module RequestValidations
9
- def method_is_valid
10
- http_method && !valid_method?
11
- end
12
-
13
- def valid_method?
14
- Net::HTTP.const_defined?(http_method.capitalize)
15
- end
16
-
17
- def url_is_valid
18
- url && !url_valid?
19
- end
20
-
21
- def url_valid?
22
- uri && uri.scheme && uri.host
23
- end
24
-
25
- def uri
26
- URI(url)
27
- rescue URI::InvalidURIError, ArgumentError
28
- nil
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,41 +0,0 @@
1
- require "pact_broker/configuration"
2
-
3
- module PactBroker
4
- module Api
5
- module Resources
6
- class ErrorResponseBodyGenerator
7
- include PactBroker::Logging
8
-
9
- # env not needed, just passing in in case PF ever needs it
10
- def self.call error, error_reference, _env = {}
11
- response_body_hash(error, error_reference).to_json
12
- end
13
-
14
- def self.display_message(error, obfuscated_message)
15
- if PactBroker.configuration.show_backtrace_in_error_response?
16
- error.message || obfuscated_message
17
- else
18
- PactBroker::Errors.reportable_error?(error) ? obfuscated_message : error.message
19
- end
20
- end
21
-
22
- def self.obfuscated_error_message(error_reference)
23
- "An error has occurred. The details have been logged with the reference #{error_reference}"
24
- end
25
-
26
- def self.response_body_hash(error, error_reference)
27
- response_body = {
28
- error: {
29
- message: display_message(error, obfuscated_error_message(error_reference)),
30
- reference: error_reference
31
- }
32
- }
33
- if PactBroker.configuration.show_backtrace_in_error_response?
34
- response_body[:error][:backtrace] = error.backtrace
35
- end
36
- response_body
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,17 +0,0 @@
1
- module PactBroker
2
- module Api
3
- module Resources
4
- module WebhookResourceMethods
5
- def webhook_validation_errors?(webhook, uuid = nil)
6
- errors = webhook_service.errors(webhook, uuid)
7
- if !errors.empty?
8
- set_json_validation_error_messages(errors.messages)
9
- true
10
- else
11
- false
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,46 +0,0 @@
1
- require "dry-validation"
2
- require "pact_broker/messages"
3
- require "pact_broker/api/contracts/dry_validation_predicates"
4
- require "pact_broker/project_root"
5
- require "pact_broker/string_refinements"
6
-
7
- module PactBroker
8
- module Api
9
- module Contracts
10
- class CanIDeployQuerySchema
11
- extend PactBroker::Messages
12
- using PactBroker::StringRefinements
13
-
14
- SCHEMA = Dry::Validation.Schema do
15
- configure do
16
- predicates(DryValidationPredicates)
17
- config.messages_file = PactBroker.project_root.join("lib", "pact_broker", "locale", "en.yml")
18
- end
19
- required(:pacticipant).filled(:str?)
20
- required(:version).filled(:str?)
21
- optional(:to).filled(:str?)
22
- optional(:environment).filled(:str?, :environment_with_name_exists?)
23
- end
24
-
25
- def self.call(params)
26
- result = select_first_message(SCHEMA.call(params).messages(full: true))
27
- if params[:to] && params[:environment]
28
- result[:to] ||= []
29
- result[:to] << message("errors.validation.cannot_specify_tag_and_environment")
30
- end
31
- if params[:to].blank? && params[:environment].blank?
32
- result[:environment] ||= []
33
- result[:environment] << message("errors.validation.must_specify_environment_or_tag")
34
- end
35
- result
36
- end
37
-
38
- def self.select_first_message(messages)
39
- messages.each_with_object({}) do | (key, value), new_messages |
40
- new_messages[key] = [value.first]
41
- end
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,20 +0,0 @@
1
- module Rack
2
- module PactBroker
3
- class Convert404ToHal
4
-
5
- def initialize app
6
- @app = app
7
- end
8
-
9
- def call env
10
- response = @app.call(env)
11
-
12
- if response.first == 404 && response[1]["Content-Type"] == "text/html" && !(env["HTTP_ACCEPT"] =~ /html|javascript|css/)
13
- [404, { "Content-Type" => "application/hal+json;charset=utf-8"},[]]
14
- else
15
- response
16
- end
17
- end
18
- end
19
- end
20
- end