pact_broker 2.82.0 → 2.85.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +53 -0
- data/Dockerfile +1 -1
- data/db/migrations/20210815_add_provider_version_id_index_to_verifications.rb +7 -0
- data/db/migrations/20210816_create_branches_tables.rb +40 -0
- data/db/migrations/20210818_add_consumer_version_selectors_to_verification.rb +8 -0
- data/db/migrations/20210831_add_index_to_pact_publications.rb +7 -0
- data/db/migrations/20210908_add_auto_created.rb +24 -0
- data/db/migrations/20210913_add_pending_to_verifications.rb +7 -0
- data/issue-reproduction/Dockerfile-pact-broker +1 -1
- data/lib/pact/doc/markdown/consumer_contract_renderer.rb +3 -3
- data/lib/pact_broker/api/contracts/{verifiable_pacts_json_query_schema.rb → pacts_for_verification_json_query_schema.rb} +1 -1
- data/lib/pact_broker/api/contracts/{verifiable_pacts_query_schema.rb → pacts_for_verification_query_string_schema.rb} +1 -1
- data/lib/pact_broker/api/decorators/branch_version_decorator.rb +20 -0
- data/lib/pact_broker/api/decorators/dashboard_decorator.rb +4 -2
- data/lib/pact_broker/api/decorators/embedded_branch_version_decorator.rb +21 -0
- data/lib/pact_broker/api/decorators/embedded_tag_decorator.rb +0 -5
- data/lib/pact_broker/api/decorators/matrix_decorator.rb +11 -2
- data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +8 -0
- data/lib/pact_broker/api/decorators/{verifiable_pacts_query_decorator.rb → pacts_for_verification_query_decorator.rb} +2 -2
- data/lib/pact_broker/api/decorators/reason_decorator.rb +2 -2
- data/lib/pact_broker/api/decorators/verification_summary_decorator.rb +1 -2
- data/lib/pact_broker/api/decorators/version_decorator.rb +1 -1
- data/lib/pact_broker/api/middleware/configuration.rb +33 -0
- data/lib/pact_broker/api/pact_broker_urls.rb +13 -1
- data/lib/pact_broker/api/renderers/html_pact_renderer.rb +15 -11
- data/lib/pact_broker/api/resources/branch_version.rb +48 -0
- data/lib/pact_broker/api/resources/index.rb +6 -0
- data/lib/pact_broker/api/resources/pact_versions_for_branch.rb +40 -0
- data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +6 -6
- data/lib/pact_broker/api/resources/verifications.rb +7 -2
- data/lib/pact_broker/api/resources/version.rb +0 -8
- data/lib/pact_broker/api.rb +2 -0
- data/lib/pact_broker/app.rb +2 -0
- data/lib/pact_broker/badges/service.rb +3 -1
- data/lib/pact_broker/config/runtime_configuration.rb +12 -0
- data/lib/pact_broker/configuration.rb +33 -29
- data/lib/pact_broker/contracts/service.rb +1 -1
- data/lib/pact_broker/db/clean/selector.rb +54 -0
- data/lib/pact_broker/db/clean.rb +7 -1
- data/lib/pact_broker/db/clean_incremental.rb +13 -5
- data/lib/pact_broker/db/data_migrations/create_branches.rb +97 -0
- data/lib/pact_broker/db/data_migrations/set_pacticipant_main_branch.rb +2 -0
- data/lib/pact_broker/db/migrate_data.rb +1 -1
- data/lib/pact_broker/db/models.rb +6 -0
- data/lib/pact_broker/deployments/deployed_version.rb +4 -0
- data/lib/pact_broker/deployments/deployed_version_service.rb +4 -3
- data/lib/pact_broker/deployments/environment.rb +4 -0
- data/lib/pact_broker/deployments/environment_service.rb +13 -8
- data/lib/pact_broker/diagnostic/resources/base_resource.rb +4 -0
- data/lib/pact_broker/diagnostic/resources/dependencies.rb +1 -1
- data/lib/pact_broker/diagnostic/resources/heartbeat.rb +2 -3
- data/lib/pact_broker/doc/views/index/pacticipant-branch-version.markdown +14 -0
- data/lib/pact_broker/doc/views/webhooks.markdown +1 -0
- data/lib/pact_broker/domain/index_item.rb +15 -17
- data/lib/pact_broker/domain/pacticipant.rb +11 -0
- data/lib/pact_broker/domain/tag.rb +1 -2
- data/lib/pact_broker/domain/verification.rb +29 -14
- data/lib/pact_broker/domain/version.rb +112 -29
- data/lib/pact_broker/domain/webhook.rb +22 -10
- data/lib/pact_broker/domain/webhook_request.rb +2 -2
- data/lib/pact_broker/index/service.rb +83 -28
- data/lib/pact_broker/locale/en.yml +4 -0
- data/lib/pact_broker/matrix/quick_row.rb +6 -6
- data/lib/pact_broker/matrix/service.rb +4 -0
- data/lib/pact_broker/matrix/unresolved_selector.rb +3 -2
- data/lib/pact_broker/metrics/service.rb +7 -1
- data/lib/pact_broker/pacts/metadata.rb +7 -2
- data/lib/pact_broker/pacts/pact_publication.rb +59 -25
- data/lib/pact_broker/pacts/pact_publication_dataset_module.rb +113 -33
- data/lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb +18 -13
- data/lib/pact_broker/pacts/pact_publication_wip_dataset_module.rb +16 -4
- data/lib/pact_broker/pacts/pact_version.rb +13 -1
- data/lib/pact_broker/pacts/pacts_for_verification_repository.rb +4 -10
- data/lib/pact_broker/pacts/repository.rb +6 -1
- data/lib/pact_broker/pacts/selected_pact.rb +20 -0
- data/lib/pact_broker/pacts/selector.rb +98 -33
- data/lib/pact_broker/pacts/service.rb +21 -0
- data/lib/pact_broker/repositories.rb +5 -0
- data/lib/pact_broker/services.rb +9 -0
- data/lib/pact_broker/test/http_test_data_builder.rb +35 -9
- data/lib/pact_broker/test/test_data_builder.rb +32 -26
- data/lib/pact_broker/ui/app.rb +7 -1
- data/lib/pact_broker/ui/controllers/dashboard.rb +80 -0
- data/lib/pact_broker/ui/controllers/groups.rb +23 -8
- data/lib/pact_broker/ui/helpers/url_helper.rb +5 -1
- data/lib/pact_broker/ui/view_models/index_item.rb +56 -3
- data/lib/pact_broker/ui/view_models/matrix_branch.rb +39 -0
- data/lib/pact_broker/ui/view_models/matrix_line.rb +11 -16
- data/lib/pact_broker/ui/view_models/matrix_tag.rb +0 -1
- data/lib/pact_broker/ui/views/dashboard/show.haml +195 -0
- data/lib/pact_broker/ui/views/groups/show.html.erb +60 -14
- data/lib/pact_broker/ui/views/index/_dashboard_navbar.haml +7 -0
- data/lib/pact_broker/ui/views/index/_navbar.haml +0 -7
- data/lib/pact_broker/ui/views/index/show-with-tags.haml +14 -11
- data/lib/pact_broker/ui/views/index/show.haml +35 -13
- data/lib/pact_broker/ui/views/matrix/show.haml +15 -11
- data/lib/pact_broker/verifications/pseudo_branch_status.rb +2 -0
- data/lib/pact_broker/verifications/repository.rb +6 -11
- data/lib/pact_broker/verifications/service.rb +11 -5
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/versions/branch.rb +29 -0
- data/lib/pact_broker/versions/branch_head.rb +45 -0
- data/lib/pact_broker/versions/branch_service.rb +24 -0
- data/lib/pact_broker/versions/branch_version.rb +64 -0
- data/lib/pact_broker/versions/branch_version_repository.rb +34 -0
- data/lib/pact_broker/versions/eager_loaders.rb +0 -42
- data/lib/pact_broker/versions/repository.rb +25 -12
- data/lib/pact_broker/versions/service.rb +3 -22
- data/lib/pact_broker/webhooks/event_listener.rb +3 -3
- data/lib/pact_broker/webhooks/execution_configuration.rb +16 -0
- data/lib/pact_broker/webhooks/execution_configuration_creator.rb +3 -0
- data/lib/pact_broker/webhooks/job.rb +1 -1
- data/lib/pact_broker/webhooks/pact_and_verification_parameters.rb +20 -3
- data/lib/pact_broker/webhooks/trigger_service.rb +2 -2
- data/lib/pact_broker/webhooks/webhook_execution_result.rb +3 -7
- data/lib/pact_broker/webhooks/webhook_request_logger.rb +4 -12
- data/lib/pact_broker/webhooks/webhook_request_template.rb +6 -8
- data/lib/sequel/plugins/insert_ignore.rb +4 -0
- data/lib/sequel/plugins/upsert.rb +4 -0
- data/pact_broker.gemspec +4 -0
- data/public/javascripts/index.js +152 -50
- data/public/javascripts/pact.js +14 -14
- data/public/stylesheets/index.css +1 -2
- data/public/stylesheets/pact.css +11 -0
- data/scaffolding/templates/decorator.rb.erb +3 -1
- data/scaffolding/templates/migration.erb +1 -1
- data/scaffolding/templates/model.erb +2 -2
- data/scaffolding/templates/repository.rb.erb +2 -2
- data/scaffolding/templates/repository_spec.rb.erb +1 -1
- data/scaffolding/templates/resource.erb +2 -2
- data/scaffolding/templates/resource_spec.rb.erb +1 -1
- data/scaffolding/templates/service.rb.erb +3 -3
- data/scaffolding/templates/service_spec.rb.erb +1 -1
- data/script/data/auto-create-things-for-tags.rb +2 -0
- data/script/data/branches.rb +35 -0
- data/script/data/contract-published-requiring-verification.rb +1 -1
- data/script/data/environments.rb +0 -0
- data/script/data/issue-494.rb +25 -0
- data/script/data/pending.rb +26 -0
- data/script/data/tags.rb +35 -0
- data/script/data/webhook.rb +22 -0
- data/script/seed.rb +50 -89
- data/spec/features/create_branch_version_spec.rb +29 -0
- data/spec/features/create_tag_spec.rb +1 -1
- data/spec/features/create_version_spec.rb +2 -4
- data/spec/features/delete_pact_versions_for_branch_spec.rb +34 -0
- data/spec/features/get_branch_version_spec.rb +12 -0
- data/spec/features/publish_pact_all_in_one_spec.rb +0 -1
- data/spec/features/update_version_spec.rb +0 -55
- data/spec/fixtures/approvals/modifiable_resources.approved.json +7 -0
- data/spec/fixtures/approvals/publish_contract_nothing_exists.approved.json +1 -2
- data/spec/fixtures/approvals/publish_contract_nothing_exists_with_webhook.approved.json +1 -2
- data/spec/fixtures/approvals/publish_contract_verification_already_exists.approved.json +1 -2
- data/spec/fixtures/dashboard.json +4 -2
- data/spec/integration/app_spec.rb +6 -6
- data/spec/integration/ui/index_spec.rb +0 -2
- data/spec/integration/ui/matrix_spec.rb +0 -1
- data/spec/lib/pact/doc/markdown/consumer_contract_renderer_spec.rb +2 -2
- data/spec/lib/pact_broker/api/contracts/{verifiable_pacts_json_query_schema_combinations_spec.rb → pacts_for_verification_json_query_schema_combinations_spec.rb} +6 -6
- data/spec/lib/pact_broker/api/contracts/{verifiable_pacts_json_query_schema_spec.rb → pacts_for_verification_json_query_schema_spec.rb} +3 -3
- data/spec/lib/pact_broker/api/contracts/{verifiable_pacts_query_schema_spec.rb → pacts_for_verification_query_string_schema_spec.rb} +3 -3
- data/spec/lib/pact_broker/api/decorators/dashboard_decorator_spec.rb +7 -7
- data/spec/lib/pact_broker/api/decorators/matrix_decorator_spec.rb +19 -4
- data/spec/lib/pact_broker/api/decorators/{verifiable_pacts_query_decorator_spec.rb → pacts_for_verification_query_decorator_spec.rb} +3 -3
- data/spec/lib/pact_broker/api/decorators/reason_decorator_spec.rb +2 -2
- data/spec/lib/pact_broker/api/decorators/verification_summary_decorator_spec.rb +2 -0
- data/spec/lib/pact_broker/api/decorators/version_decorator_spec.rb +7 -3
- data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +1 -1
- data/spec/lib/pact_broker/api/middleware/configuration_spec.rb +43 -0
- data/spec/lib/pact_broker/api/resources/verifications_spec.rb +6 -4
- data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +1 -1
- data/spec/lib/pact_broker/badges/service_spec.rb +22 -0
- data/spec/lib/pact_broker/contracts/service_spec.rb +24 -3
- data/spec/lib/pact_broker/db/clean_spec.rb +2 -2
- data/spec/lib/pact_broker/db/data_migrations/create_branches_spec.rb +57 -0
- data/spec/lib/pact_broker/diagnostic/resources/dependencies_spec.rb +4 -4
- data/spec/lib/pact_broker/diagnostic/resources/heartbeat_spec.rb +3 -4
- data/spec/lib/pact_broker/domain/index_item_spec.rb +1 -1
- data/spec/lib/pact_broker/domain/version_spec.rb +127 -36
- data/spec/lib/pact_broker/domain/webhook_request_spec.rb +2 -1
- data/spec/lib/pact_broker/domain/webhook_spec.rb +15 -5
- data/spec/lib/pact_broker/index/service_spec.rb +1 -5
- data/spec/lib/pact_broker/index/service_view_spec.rb +144 -0
- data/spec/lib/pact_broker/matrix/service_spec.rb +10 -1
- data/spec/lib/pact_broker/metrics/service_spec.rb +4 -1
- data/spec/lib/pact_broker/pacts/metadata_spec.rb +11 -3
- data/spec/lib/pact_broker/pacts/pact_publication_dataset_module_spec.rb +109 -10
- data/spec/lib/pact_broker/pacts/pact_publication_latest_verification_spec.rb +29 -0
- data/spec/lib/pact_broker/pacts/pact_publication_selector_dataset_module_spec.rb +3 -2
- data/spec/lib/pact_broker/pacts/pact_publication_spec.rb +5 -5
- data/spec/lib/pact_broker/pacts/repository_find_for_currently_deployed_spec.rb +2 -2
- data/spec/lib/pact_broker/pacts/repository_find_for_currently_supported_releases_spec.rb +2 -2
- data/spec/lib/pact_broker/pacts/repository_spec.rb +15 -2
- data/spec/lib/pact_broker/pacts/selector_spec.rb +45 -3
- data/spec/lib/pact_broker/pacts/service_spec.rb +61 -0
- data/spec/lib/pact_broker/pacts/verifiable_pact_messages_spec.rb +5 -5
- data/spec/lib/pact_broker/relationships/groupify_spec.rb +0 -5
- data/spec/lib/pact_broker/ui/view_models/index_item_spec.rb +21 -6
- data/spec/lib/pact_broker/verifications/pseudo_branch_status_spec.rb +9 -1
- data/spec/lib/pact_broker/verifications/repository_spec.rb +39 -30
- data/spec/lib/pact_broker/verifications/service_spec.rb +9 -5
- data/spec/lib/pact_broker/versions/branch_service_spec.rb +71 -0
- data/spec/lib/pact_broker/versions/branch_version_repository_spec.rb +81 -0
- data/spec/lib/pact_broker/versions/branch_version_spec.rb +27 -0
- data/spec/lib/pact_broker/versions/repository_spec.rb +91 -6
- data/spec/lib/pact_broker/versions/service_spec.rb +4 -3
- data/spec/lib/pact_broker/webhooks/job_spec.rb +4 -4
- data/spec/lib/pact_broker/webhooks/render_spec.rb +6 -0
- data/spec/lib/pact_broker/webhooks/trigger_service_spec.rb +9 -5
- data/spec/lib/pact_broker/webhooks/webhook_request_logger_spec.rb +6 -12
- data/spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb +3 -2
- data/spec/lib/sequel/plugins/upsert_spec.rb +11 -5
- data/spec/migrations/44_add_provider_version_to_verification_spec.rb +6 -9
- data/spec/service_consumers/pact_helper.rb +2 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/generated_markdown.md +3 -3
- metadata +90 -17
- data/lib/pact_broker/versions/lazy_loaders.rb +0 -13
- data/spec/lib/pact_broker/api/resources/webhook_execution_result_spec.rb +0 -56
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 274321ebbf970f7e282a64933d9d89522323c82d48b40b29b7c3921dec918e81
|
4
|
+
data.tar.gz: 89e6686d83aa69c88292675c4530adfbd48eff00b2c0f59ed901a13cbd14db2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1cb98e0a974f7c440d803a47cd947579351573eeaa232e7768d012dc3b74ed9255e1520e585c56cf25eb856c43ba593cb9bceb890afb21bc61431c15ca193224
|
7
|
+
data.tar.gz: 893d6548ae9080919eeee2fbaee934c422da2a070b1f1ce32bb494a311a5d6f72db5b89652a683af23a1ddc14af09e1859bec47ebe3492644d612a656c171586
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,56 @@
|
|
1
|
+
<a name="v2.85.1"></a>
|
2
|
+
### v2.85.1 (2021-09-14)
|
3
|
+
|
4
|
+
#### Bug Fixes
|
5
|
+
|
6
|
+
* fix bug identifying latest verification for tagged pact ([43ac4b03](/../../commit/43ac4b03))
|
7
|
+
|
8
|
+
<a name="v2.85.0"></a>
|
9
|
+
### v2.85.0 (2021-09-13)
|
10
|
+
|
11
|
+
#### Features
|
12
|
+
|
13
|
+
* show in the UI whether or not a pact was pending when verification failed ([326c068e](/../../commit/326c068e))
|
14
|
+
* thread safe configuration overrides (#500) ([50900231](/../../commit/50900231))
|
15
|
+
* allow dashboard pacts to be viewed by branch, tag, environment or all ([1ec8fc82](/../../commit/1ec8fc82))
|
16
|
+
* support deleting pacts by branch in the UI ([bc8fef1d](/../../commit/bc8fef1d))
|
17
|
+
* update UI ([0ba5eda3](/../../commit/0ba5eda3))
|
18
|
+
|
19
|
+
<a name="v2.84.0"></a>
|
20
|
+
### v2.84.0 (2021-09-10)
|
21
|
+
|
22
|
+
#### Features
|
23
|
+
|
24
|
+
* use the first tag as the branch when publishing pacts using the contracts/publish endpoint ([7b903c1d](/../../commit/7b903c1d))
|
25
|
+
* support multiple branches per version (#495) ([acff2fcc](/../../commit/acff2fcc))
|
26
|
+
* Support deleting all pacts for a specific tag in the UI (#480) ([10dda8ae](/../../commit/10dda8ae))
|
27
|
+
* add webhook template parameter for GItlab verification statuses (#493) ([390ae0d8](/../../commit/390ae0d8))
|
28
|
+
|
29
|
+
* **pacts for verification**
|
30
|
+
* include pending status for responses by default when includePendingStatus is not specified ([748d3b87](/../../commit/748d3b87))
|
31
|
+
|
32
|
+
#### Bug Fixes
|
33
|
+
|
34
|
+
* when the latest version for a tag does not have a pact, do not return a pact for the 'latest tag' selector ([374c77ce](/../../commit/374c77ce))
|
35
|
+
* issue-reproduction/Dockerfile-pact-broker to reduce vulnerabilities (#491) ([9692b465](/../../commit/9692b465))
|
36
|
+
* Dockerfile to reduce vulnerabilities (#496) ([57c190ef](/../../commit/57c190ef))
|
37
|
+
|
38
|
+
<a name="v2.83.0"></a>
|
39
|
+
### v2.83.0 (2021-08-19)
|
40
|
+
|
41
|
+
#### Features
|
42
|
+
|
43
|
+
* **clean**
|
44
|
+
* update default selectors for clean task to include deployed, released and branch head versions ([aaffe71f](/../../commit/aaffe71f))
|
45
|
+
* support keeping currently deployed and released versions, and the latest version for each branch ([e4fbd766](/../../commit/e4fbd766))
|
46
|
+
|
47
|
+
* add index to verifications table to improve performance of 'latest verification' query ([02eeb424](/../../commit/02eeb424))
|
48
|
+
|
49
|
+
#### Bug Fixes
|
50
|
+
|
51
|
+
* use provider_version_number from webhook context ([3cf421ac](/../../commit/3cf421ac))
|
52
|
+
* validate matrix query limit ([ac5e0890](/../../commit/ac5e0890))
|
53
|
+
|
1
54
|
<a name="v2.82.0"></a>
|
2
55
|
### v2.82.0 (2021-08-14)
|
3
56
|
|
data/Dockerfile
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
change do
|
3
|
+
create_table(:branches, charset: "utf8") do
|
4
|
+
primary_key :id
|
5
|
+
String :name
|
6
|
+
foreign_key :pacticipant_id, :pacticipants, null: false, on_delete: :cascade
|
7
|
+
DateTime :created_at, null: false
|
8
|
+
DateTime :updated_at, null: false
|
9
|
+
index [:pacticipant_id, :name], unique: true, name: :branches_pacticipant_id_name_index
|
10
|
+
end
|
11
|
+
|
12
|
+
create_table(:branch_versions, charset: "utf8") do
|
13
|
+
primary_key :id
|
14
|
+
foreign_key :branch_id, :branches, null: false, foreign_key_constraint_name: :branch_versions_branches_fk, on_delete: :cascade
|
15
|
+
foreign_key :version_id, :versions, null: false, foreign_key_constraint_name: :branch_versions_versions_fk, on_delete: :cascade
|
16
|
+
Integer :version_order, null: false
|
17
|
+
Integer :pacticipant_id, null: false
|
18
|
+
String :branch_name, null: false
|
19
|
+
DateTime :created_at, null: false
|
20
|
+
DateTime :updated_at, null: false
|
21
|
+
index [:branch_id, :version_id], unique: true, name: :branch_versions_branch_id_version_id_index
|
22
|
+
index [:version_id], name: :branch_versions_version_id_index
|
23
|
+
index [:branch_name], name: :branch_versions_branch_name_index
|
24
|
+
# Can probably drop this index when the "latest pact" logic changes
|
25
|
+
index [:pacticipant_id, :branch_id, :version_order], name: :branch_versions_pacticipant_id_branch_id_version_order_index
|
26
|
+
end
|
27
|
+
|
28
|
+
create_table(:branch_heads) do
|
29
|
+
foreign_key :branch_id, :branches, null: false, on_delete: :cascade
|
30
|
+
foreign_key :branch_version_id, :branch_versions, null: false, on_delete: :cascade
|
31
|
+
Integer :version_id, null: false
|
32
|
+
Integer :pacticipant_id, null: false
|
33
|
+
String :branch_name, null: false
|
34
|
+
index [:branch_id], unique: true, name: :branch_heads_branch_id_index
|
35
|
+
index [:branch_name], name: :branch_heads_branch_name_index
|
36
|
+
index [:pacticipant_id], name: :branch_heads_pacticipant_id_index
|
37
|
+
index [:version_id], name: :branch_heads_version_id_index
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
alter_table(:branch_versions) do
|
4
|
+
add_column(:auto_created, TrueClass, default: false)
|
5
|
+
end
|
6
|
+
|
7
|
+
alter_table(:deployed_versions) do
|
8
|
+
add_column(:auto_created, TrueClass, default: false)
|
9
|
+
end
|
10
|
+
|
11
|
+
from(:branch_versions).update(auto_created: true)
|
12
|
+
from(:deployed_versions).update(auto_created: true)
|
13
|
+
end
|
14
|
+
|
15
|
+
down do
|
16
|
+
alter_table(:branch_versions) do
|
17
|
+
drop_column(:auto_created)
|
18
|
+
end
|
19
|
+
|
20
|
+
alter_table(:deployed_versions) do
|
21
|
+
drop_column(:auto_created)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -24,7 +24,7 @@ module Pact
|
|
24
24
|
attr_reader :consumer_contract
|
25
25
|
|
26
26
|
def title
|
27
|
-
"
|
27
|
+
"# A pact between #{consumer_name} and #{provider_name}\n\n"
|
28
28
|
end
|
29
29
|
|
30
30
|
def interaction_renderers
|
@@ -32,11 +32,11 @@ module Pact
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def summaries_title
|
35
|
-
"
|
35
|
+
"### Requests from #{consumer_name} to #{provider_name}\n\n"
|
36
36
|
end
|
37
37
|
|
38
38
|
def interactions_title
|
39
|
-
"
|
39
|
+
"### Interactions\n\n"
|
40
40
|
end
|
41
41
|
|
42
42
|
def summaries
|
@@ -5,7 +5,7 @@ require "pact_broker/api/contracts/dry_validation_predicates"
|
|
5
5
|
module PactBroker
|
6
6
|
module Api
|
7
7
|
module Contracts
|
8
|
-
class
|
8
|
+
class PactsForVerificationQueryStringSchema
|
9
9
|
extend DryValidationWorkarounds
|
10
10
|
using PactBroker::HashRefinements
|
11
11
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "pact_broker/api/decorators/base_decorator"
|
2
|
+
require "pact_broker/api/decorators/timestamps"
|
3
|
+
|
4
|
+
module PactBroker
|
5
|
+
module Api
|
6
|
+
module Decorators
|
7
|
+
class BranchVersionDecorator < BaseDecorator
|
8
|
+
|
9
|
+
link :self do | user_options |
|
10
|
+
{
|
11
|
+
title: "Branch version",
|
12
|
+
href: branch_version_url(represented, user_options.fetch(:base_url))
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
include Timestamps
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -58,7 +58,8 @@ module PactBroker
|
|
58
58
|
name: index_item.consumer_name,
|
59
59
|
version: {
|
60
60
|
number: index_item.consumer_version_number,
|
61
|
-
branch: index_item.
|
61
|
+
branch: index_item.consumer_version_branches.last,
|
62
|
+
headBranchNames: index_item.consumer_version_branches,
|
62
63
|
_links: {
|
63
64
|
self: {
|
64
65
|
href: version_url(base_url, index_item.consumer_version)
|
@@ -87,7 +88,8 @@ module PactBroker
|
|
87
88
|
if index_item.latest_verification
|
88
89
|
hash[:version] = {
|
89
90
|
number: index_item.provider_version_number,
|
90
|
-
branch: index_item.
|
91
|
+
branch: index_item.provider_version_branches.last,
|
92
|
+
headBranchNames: index_item.provider_version_branches
|
91
93
|
}
|
92
94
|
end
|
93
95
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "base_decorator"
|
2
|
+
require_relative "timestamps"
|
3
|
+
|
4
|
+
module PactBroker
|
5
|
+
module Api
|
6
|
+
module Decorators
|
7
|
+
class EmbeddedBranchVersionDecorator < BaseDecorator
|
8
|
+
property :branch_name, as: :name
|
9
|
+
property :latest?, as: :latest
|
10
|
+
|
11
|
+
link :self do | options |
|
12
|
+
{
|
13
|
+
title: "Version branch",
|
14
|
+
name: represented.branch_name,
|
15
|
+
href: branch_version_url(represented, options[:base_url])
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,15 +1,10 @@
|
|
1
1
|
require_relative "base_decorator"
|
2
|
-
require_relative "pact_pacticipant_decorator"
|
3
2
|
require_relative "timestamps"
|
4
3
|
|
5
4
|
module PactBroker
|
6
|
-
|
7
5
|
module Api
|
8
|
-
|
9
6
|
module Decorators
|
10
|
-
|
11
7
|
class EmbeddedTagDecorator < BaseDecorator
|
12
|
-
|
13
8
|
property :name
|
14
9
|
|
15
10
|
link :self do | options |
|
@@ -2,6 +2,7 @@ require "ostruct"
|
|
2
2
|
require "pact_broker/api/pact_broker_urls"
|
3
3
|
require "pact_broker/api/decorators/reason_decorator"
|
4
4
|
require "pact_broker/api/decorators/format_date_time"
|
5
|
+
require "pact_broker/api/decorators/embedded_branch_version_decorator"
|
5
6
|
|
6
7
|
module PactBroker
|
7
8
|
module Api
|
@@ -83,7 +84,8 @@ module PactBroker
|
|
83
84
|
name: line.consumer_name,
|
84
85
|
version: {
|
85
86
|
number: line.consumer_version_number,
|
86
|
-
branch: line.
|
87
|
+
branch: line.consumer_version_branch_versions.last&.branch_name,
|
88
|
+
branches: branches(line.consumer_version_branch_versions, base_url),
|
87
89
|
_links: {
|
88
90
|
self: {
|
89
91
|
href: version_url(base_url, consumer_version)
|
@@ -99,6 +101,12 @@ module PactBroker
|
|
99
101
|
}
|
100
102
|
end
|
101
103
|
|
104
|
+
def branches(branch_versions, base_url)
|
105
|
+
branch_versions.collect do | branch_version |
|
106
|
+
PactBroker::Api::Decorators::EmbeddedBranchVersionDecorator.new(branch_version).to_hash(user_options: { base_url: base_url })
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
102
110
|
def tags(tags, base_url)
|
103
111
|
tags.sort_by(&:created_at).collect do | tag |
|
104
112
|
{
|
@@ -127,7 +135,8 @@ module PactBroker
|
|
127
135
|
if !line.provider_version_number.nil?
|
128
136
|
hash[:version] = {
|
129
137
|
number: line.provider_version_number,
|
130
|
-
branch: line.
|
138
|
+
branch: line.provider_version_branch_versions.last&.branch_name,
|
139
|
+
branches: branches(line.provider_version_branch_versions, base_url),
|
131
140
|
_links: {
|
132
141
|
self: {
|
133
142
|
href: version_url(base_url, provider_version)
|
@@ -49,6 +49,14 @@ module PactBroker
|
|
49
49
|
}
|
50
50
|
end
|
51
51
|
|
52
|
+
link :'pb:branch-version' do | options |
|
53
|
+
{
|
54
|
+
title: "Get or add/create a version for a branch of #{represented.name}",
|
55
|
+
href: templated_branch_version_url_for_pacticipant(represented.name, options[:base_url]),
|
56
|
+
templated: true
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
52
60
|
link :'pb:label' do | options |
|
53
61
|
{
|
54
62
|
title: "Get, create or delete a label for #{represented.name}",
|
@@ -8,7 +8,7 @@ require "pact_broker/pacts/selectors"
|
|
8
8
|
module PactBroker
|
9
9
|
module Api
|
10
10
|
module Decorators
|
11
|
-
class
|
11
|
+
class PactsForVerificationQueryDecorator < BaseDecorator
|
12
12
|
using PactBroker::HashRefinements
|
13
13
|
|
14
14
|
collection :provider_version_tags, default: []
|
@@ -38,7 +38,7 @@ module PactBroker
|
|
38
38
|
}
|
39
39
|
end
|
40
40
|
|
41
|
-
property :include_pending_status, default:
|
41
|
+
property :include_pending_status, default: true,
|
42
42
|
setter: ->(fragment:, represented:, **) {
|
43
43
|
represented.include_pending_status = (fragment == "true" || fragment == true)
|
44
44
|
}
|
@@ -45,9 +45,9 @@ module PactBroker
|
|
45
45
|
when PactBroker::Matrix::IgnoreSelectorDoesNotExist
|
46
46
|
"WARN: Cannot ignore #{reason.selector.description}"
|
47
47
|
when PactBroker::Matrix::SelectorWithoutPacticipantVersionNumberSpecified
|
48
|
-
"WARN:
|
48
|
+
"WARN: It is recommended to specify the version number (rather than the tag or branch) of the pacticipant you wish to deploy to avoid race conditions. Without a version number, this result will not be reliable."
|
49
49
|
when PactBroker::Matrix::NoEnvironmentSpecified
|
50
|
-
"WARN:
|
50
|
+
"WARN: It is recommended to specify the environment into which you are deploying. Without the environment, this result will not be reliable."
|
51
51
|
else
|
52
52
|
reason
|
53
53
|
end
|
@@ -6,9 +6,9 @@ require "ostruct"
|
|
6
6
|
module PactBroker
|
7
7
|
module Api
|
8
8
|
module Decorators
|
9
|
-
|
10
9
|
class VerificationSummaryDecorator < BaseDecorator
|
11
10
|
|
11
|
+
# TODO count pending failures?
|
12
12
|
property :success
|
13
13
|
property :provider_summary, as: :providerSummary do
|
14
14
|
property :successful
|
@@ -30,7 +30,6 @@ module PactBroker
|
|
30
30
|
successful: represented.select(&:success).collect(&:provider_name),
|
31
31
|
failed: represented.select{|verification| !verification.success }.collect(&:provider_name))
|
32
32
|
end
|
33
|
-
|
34
33
|
end
|
35
34
|
end
|
36
35
|
end
|
@@ -7,7 +7,7 @@ module PactBroker
|
|
7
7
|
class VersionDecorator < BaseDecorator
|
8
8
|
|
9
9
|
property :number, writeable: false
|
10
|
-
|
10
|
+
collection :branch_versions, as: :branches, embedded: true, writeable: false, extend: PactBroker::Api::Decorators::EmbeddedBranchVersionDecorator
|
11
11
|
property :build_url, as: :buildUrl
|
12
12
|
|
13
13
|
collection :tags, embedded: true, :extend => PactBroker::Api::Decorators::EmbeddedTagDecorator, class: OpenStruct
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "pact_broker/logging"
|
2
|
+
|
3
|
+
module PactBroker
|
4
|
+
module Api
|
5
|
+
module Middleware
|
6
|
+
class Configuration
|
7
|
+
include PactBroker::Logging
|
8
|
+
|
9
|
+
def initialize(app, configuration)
|
10
|
+
@app = app
|
11
|
+
@configuration = configuration
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(env)
|
15
|
+
if (overrides = env["pactbroker.configuration_overrides"])&.any?
|
16
|
+
dupped_configuration = configuration.dup
|
17
|
+
dupped_configuration.override_runtime_configuration!(overrides)
|
18
|
+
dupped_configuration.freeze
|
19
|
+
PactBroker.set_configuration(dupped_configuration)
|
20
|
+
app.call(env)
|
21
|
+
else
|
22
|
+
PactBroker.set_configuration(configuration)
|
23
|
+
app.call(env)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
attr_reader :app, :configuration
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|