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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +57 -1
- data/Gemfile +3 -0
- data/README.md +1 -1
- data/db/migrations/20221130_add_provider_version_id_index_to_verifications.rb +28 -0
- data/db/migrations/20221208_add_index_to_pact_version_provider_tag_successful_verifications.rb +21 -0
- data/db/migrations/20221215_add_prov_ver_id_ndx_to_latest_verifi_id_for_pact_ver_and_prov_ver.rb +21 -0
- data/db/migrations/20230131_add_cons_ver_id_ndx_to_latest_pp_id_for_cons_ver.rb +21 -0
- data/db/migrations/20230216_add_branch_heads_branch_version_id_index.rb +21 -0
- data/db/migrations/20230428_add_index_for_webhook_executions_pact_publication_id.rb +17 -0
- data/docs/CONFIGURATION.md +1 -1
- data/docs/api/PAGINATION.md +43 -0
- data/lib/pact_broker/api/contracts/base_contract.rb +22 -7
- data/lib/pact_broker/api/contracts/can_i_deploy_query_schema.rb +34 -0
- data/lib/pact_broker/api/contracts/configuration.rb +2 -0
- data/lib/pact_broker/api/contracts/consumer_version_selector_contract.rb +140 -0
- data/lib/pact_broker/api/contracts/dry_validation_errors_formatter.rb +50 -0
- data/lib/pact_broker/api/contracts/dry_validation_macros.rb +79 -0
- data/lib/pact_broker/api/contracts/dry_validation_methods.rb +71 -0
- data/lib/pact_broker/api/contracts/environment_schema.rb +19 -33
- data/lib/pact_broker/api/contracts/pacticipant_create_schema.rb +4 -17
- data/lib/pact_broker/api/contracts/pacticipant_schema.rb +15 -24
- data/lib/pact_broker/api/contracts/pacts_for_verification_json_query_schema.rb +37 -146
- data/lib/pact_broker/api/contracts/pacts_for_verification_query_string_schema.rb +7 -20
- data/lib/pact_broker/api/contracts/publish_contracts_contract_contract.rb +62 -0
- data/lib/pact_broker/api/contracts/publish_contracts_schema.rb +25 -112
- data/lib/pact_broker/api/contracts/put_pact_params_contract.rb +21 -26
- data/lib/pact_broker/api/contracts/utf_8_validation.rb +19 -0
- data/lib/pact_broker/api/contracts/validation_helpers.rb +71 -0
- data/lib/pact_broker/api/contracts/verification_contract.rb +10 -29
- data/lib/pact_broker/api/contracts/webhook_contract.rb +20 -170
- data/lib/pact_broker/api/contracts/webhook_pacticipant_contract.rb +33 -0
- data/lib/pact_broker/api/contracts/webhook_request_contract.rb +125 -0
- data/lib/pact_broker/api/contracts.rb +3 -0
- data/lib/pact_broker/api/decorators/custom_error_problem_json_decorator.rb +36 -0
- data/lib/pact_broker/api/decorators/dashboard_text_decorator.rb +2 -2
- data/lib/pact_broker/api/decorators/extended_pact_decorator.rb +1 -1
- data/lib/pact_broker/api/decorators/matrix_decorator.rb +4 -4
- data/lib/pact_broker/api/decorators/matrix_text_decorator.rb +1 -1
- data/lib/pact_broker/api/decorators/pact_decorator.rb +1 -1
- data/lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb +5 -2
- data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +2 -1
- data/lib/pact_broker/api/decorators/pacts_for_verification_query_decorator.rb +4 -1
- data/lib/pact_broker/api/decorators/pagination_links.rb +11 -0
- data/lib/pact_broker/api/decorators/runtime_error_problem_json_decorator.rb +34 -0
- data/lib/pact_broker/api/decorators/validation_errors_problem_json_decorator.rb +66 -0
- data/lib/pact_broker/api/decorators/verifiable_pact_decorator.rb +4 -4
- data/lib/pact_broker/api/decorators/webhook_decorator.rb +2 -3
- data/lib/pact_broker/api/decorators/webhook_execution_result_decorator.rb +5 -12
- data/lib/pact_broker/api/resources/all_webhooks.rb +5 -11
- data/lib/pact_broker/api/resources/badge_methods.rb +1 -1
- data/lib/pact_broker/api/resources/base_resource.rb +31 -68
- data/lib/pact_broker/api/resources/branch_version.rb +3 -3
- data/lib/pact_broker/api/resources/can_i_deploy.rb +4 -19
- data/lib/pact_broker/api/resources/can_i_deploy_pacticipant_version_by_branch_to_environment.rb +1 -4
- data/lib/pact_broker/api/resources/can_i_deploy_pacticipant_version_by_tag_to_tag.rb +0 -2
- data/lib/pact_broker/api/resources/can_i_deploy_pacticipant_version_by_tag_to_tag_badge.rb +1 -2
- data/lib/pact_broker/api/resources/currently_deployed_versions_for_environment.rb +2 -2
- data/lib/pact_broker/api/resources/currently_supported_versions_for_environment.rb +2 -2
- data/lib/pact_broker/api/resources/dashboard.rb +3 -3
- data/lib/pact_broker/api/resources/deployed_version.rb +1 -1
- data/lib/pact_broker/api/resources/deployed_versions_for_version_and_environment.rb +2 -2
- data/lib/pact_broker/api/resources/environment.rb +1 -1
- data/lib/pact_broker/api/resources/environments.rb +2 -2
- data/lib/pact_broker/api/resources/error_handling_methods.rb +57 -0
- data/lib/pact_broker/api/resources/error_response_generator.rb +70 -0
- data/lib/pact_broker/api/resources/integrations.rb +1 -1
- data/lib/pact_broker/api/resources/label.rb +1 -1
- data/lib/pact_broker/api/resources/latest_pact.rb +2 -2
- data/lib/pact_broker/api/resources/latest_pacts.rb +1 -1
- data/lib/pact_broker/api/resources/latest_verifications_for_consumer_version.rb +2 -2
- data/lib/pact_broker/api/resources/matrix.rb +2 -2
- data/lib/pact_broker/api/resources/matrix_for_consumer_and_provider.rb +1 -1
- data/lib/pact_broker/api/resources/pact.rb +7 -4
- data/lib/pact_broker/api/resources/pact_triggered_webhooks.rb +1 -1
- data/lib/pact_broker/api/resources/pact_version.rb +1 -1
- data/lib/pact_broker/api/resources/pact_versions.rb +1 -1
- data/lib/pact_broker/api/resources/pact_webhooks.rb +7 -14
- data/lib/pact_broker/api/resources/pact_webhooks_status.rb +6 -2
- data/lib/pact_broker/api/resources/pacticipant.rb +1 -1
- data/lib/pact_broker/api/resources/pacticipant_webhooks.rb +7 -5
- data/lib/pact_broker/api/resources/pacticipants.rb +6 -3
- data/lib/pact_broker/api/resources/pacticipants_for_label.rb +1 -1
- data/lib/pact_broker/api/resources/pagination_methods.rb +8 -4
- data/lib/pact_broker/api/resources/previous_distinct_pact_version.rb +1 -1
- data/lib/pact_broker/api/resources/provider_pacts.rb +1 -1
- data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +4 -13
- data/lib/pact_broker/api/resources/publish_contracts.rb +8 -3
- data/lib/pact_broker/api/resources/released_version.rb +1 -1
- data/lib/pact_broker/api/resources/released_versions_for_version_and_environment.rb +2 -2
- data/lib/pact_broker/api/resources/tag.rb +1 -1
- data/lib/pact_broker/api/resources/tagged_pact_versions.rb +1 -1
- data/lib/pact_broker/api/resources/triggered_webhook_logs.rb +2 -2
- data/lib/pact_broker/api/resources/verification.rb +2 -2
- data/lib/pact_broker/api/resources/verification_triggered_webhooks.rb +1 -1
- data/lib/pact_broker/api/resources/verifications.rb +4 -6
- data/lib/pact_broker/api/resources/version.rb +1 -1
- data/lib/pact_broker/api/resources/versions.rb +6 -13
- data/lib/pact_broker/api/resources/webhook.rb +7 -6
- data/lib/pact_broker/api/resources/webhook_execution.rb +6 -4
- data/lib/pact_broker/api.rb +3 -13
- data/lib/pact_broker/app.rb +0 -2
- data/lib/pact_broker/application_context.rb +4 -4
- data/lib/pact_broker/certificates/certificate.rb +1 -0
- data/lib/pact_broker/config/setting.rb +1 -0
- data/lib/pact_broker/contracts/service.rb +1 -0
- data/lib/pact_broker/date_helper.rb +1 -1
- data/lib/pact_broker/db/clean_incremental.rb +67 -59
- data/lib/pact_broker/db/delete_overwritten_data.rb +6 -2
- data/lib/pact_broker/deployments/currently_deployed_version_id.rb +2 -0
- data/lib/pact_broker/deployments/deployed_version.rb +2 -0
- data/lib/pact_broker/deployments/deployed_version_service.rb +5 -1
- data/lib/pact_broker/deployments/environment.rb +2 -0
- data/lib/pact_broker/deployments/environment_service.rb +4 -3
- data/lib/pact_broker/deployments/released_version.rb +2 -0
- data/lib/pact_broker/deployments/released_version_service.rb +4 -0
- data/lib/pact_broker/diagnostic/resources/base_resource.rb +1 -1
- data/lib/pact_broker/doc/views/index/publish-contracts.markdown +5 -5
- data/lib/pact_broker/domain/label.rb +1 -0
- data/lib/pact_broker/domain/tag.rb +2 -0
- data/lib/pact_broker/domain/verification.rb +1 -1
- data/lib/pact_broker/domain/version.rb +4 -1
- data/lib/pact_broker/domain/webhook.rb +1 -1
- data/lib/pact_broker/index/service.rb +2 -2
- data/lib/pact_broker/integrations/integration.rb +1 -0
- data/lib/pact_broker/locale/en.yml +36 -14
- data/lib/pact_broker/matrix/query_ids.rb +4 -4
- data/lib/pact_broker/matrix/resolved_selector.rb +6 -1
- data/lib/pact_broker/matrix/service.rb +1 -0
- data/lib/pact_broker/messages.rb +5 -1
- data/lib/pact_broker/pacticipants/repository.rb +16 -14
- data/lib/pact_broker/pacticipants/service.rb +11 -8
- data/lib/pact_broker/pacts/pact_params.rb +6 -17
- data/lib/pact_broker/pacts/pact_version.rb +1 -0
- data/lib/pact_broker/pacts/selected_pact.rb +4 -0
- data/lib/pact_broker/policies.rb +4 -4
- data/lib/pact_broker/repositories/helpers.rb +11 -0
- data/lib/pact_broker/repositories/page.rb +24 -0
- data/lib/pact_broker/string_refinements.rb +4 -0
- data/lib/pact_broker/tasks/clean_task.rb +7 -3
- data/lib/pact_broker/test/http_test_data_builder.rb +46 -2
- data/lib/pact_broker/ui/app.rb +2 -2
- data/lib/pact_broker/ui/views/matrix/show.haml +1 -1
- data/lib/pact_broker/verifications/latest_verification_id_for_pact_version_and_provider_version.rb +1 -1
- data/lib/pact_broker/verifications/pact_version_provider_tag_successful_verification.rb +1 -0
- data/lib/pact_broker/verifications/repository.rb +14 -11
- data/lib/pact_broker/verifications/service.rb +0 -6
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/versions/branch.rb +1 -0
- data/lib/pact_broker/versions/branch_head.rb +2 -1
- data/lib/pact_broker/versions/branch_version.rb +11 -0
- data/lib/pact_broker/versions/repository.rb +12 -0
- data/lib/pact_broker/versions/service.rb +4 -0
- data/lib/pact_broker/webhooks/execution.rb +1 -1
- data/lib/pact_broker/webhooks/repository.rb +1 -1
- data/lib/pact_broker/webhooks/service.rb +3 -25
- data/lib/pact_broker/webhooks/triggered_webhook.rb +1 -0
- data/lib/pact_broker/webhooks/webhook_event.rb +1 -0
- data/lib/pact_broker/webmachine.rb +22 -0
- data/lib/rack/pact_broker/invalid_uri_protection.rb +1 -1
- data/lib/rack/pact_broker/request_target.rb +1 -1
- data/lib/rack/pact_broker/use_when.rb +6 -5
- data/lib/sequel/plugins/age.rb +13 -0
- data/lib/webmachine/application_monkey_patch.rb +15 -0
- data/lib/webmachine/describe_routes.rb +35 -8
- data/lib/webmachine/render_error_monkey_patch.rb +70 -0
- data/pact_broker.gemspec +7 -18
- metadata +72 -76
- data/lib/pact/doc/README.md +0 -5
- data/lib/pact_broker/api/contracts/dry_validation_predicates.rb +0 -36
- data/lib/pact_broker/api/contracts/dry_validation_workarounds.rb +0 -39
- data/lib/pact_broker/api/contracts/pacticipant_name_contract.rb +0 -24
- data/lib/pact_broker/api/contracts/pacticipant_name_validation.rb +0 -30
- data/lib/pact_broker/api/contracts/request_validations.rb +0 -33
- data/lib/pact_broker/api/resources/error_response_body_generator.rb +0 -41
- data/lib/pact_broker/api/resources/webhook_resource_methods.rb +0 -17
- data/lib/pact_broker/matrix/can_i_deploy_query_schema.rb +0 -46
- 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.
|
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:
|
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:
|
30
|
+
name: psych
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
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: '
|
42
|
+
version: '4.0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
44
|
+
name: roar
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
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:
|
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:
|
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:
|
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:
|
72
|
+
name: reform
|
87
73
|
requirement: !ruby/object:Gem::Requirement
|
88
74
|
requirements:
|
89
|
-
- -
|
75
|
+
- - "~>"
|
90
76
|
- !ruby/object:Gem::Version
|
91
|
-
version:
|
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:
|
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:
|
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:
|
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/
|
612
|
-
- lib/pact_broker/api/contracts/
|
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/
|
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/
|
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:
|
1224
|
+
version: 1.3.1
|
1229
1225
|
requirements: []
|
1230
|
-
rubygems_version: 3.
|
1226
|
+
rubygems_version: 3.4.12
|
1231
1227
|
signing_key:
|
1232
1228
|
specification_version: 4
|
1233
1229
|
summary: See description
|
data/lib/pact/doc/README.md
DELETED
@@ -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
|