pact_broker 2.88.0 → 2.91.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +54 -0
- data/db/ddl_statements/all_verifications.rb +21 -0
- data/db/migrations/20210701_recreate_all_verifications.rb +18 -0
- data/db/migrations/20211101_recreate_all_verifications.rb +10 -0
- data/db/migrations/20211102_create_table_temp_integrations.rb +26 -0
- data/db/migrations/20211103_migrate_integrations.rb +21 -0
- data/db/migrations/20211104_switch_integrations_and_temp_integrations.rb +25 -0
- data/docs/CONFIGURATION.md +31 -1
- data/lib/pact_broker/api/contracts/pacts_for_verification_json_query_schema.rb +14 -4
- data/lib/pact_broker/api/decorators/deployed_version_decorator.rb +2 -1
- data/lib/pact_broker/api/decorators/embedded_environment_decorator.rb +25 -0
- data/lib/pact_broker/api/decorators/matrix_decorator.rb +17 -2
- data/lib/pact_broker/api/decorators/pacts_for_verification_query_decorator.rb +18 -0
- data/lib/pact_broker/api/decorators/version_decorator.rb +2 -0
- data/lib/pact_broker/api/renderers/html_pact_renderer.rb +4 -0
- data/lib/pact_broker/api/resources/currently_deployed_versions_for_environment.rb +3 -1
- data/lib/pact_broker/api/resources/deployed_versions_for_version_and_environment.rb +4 -3
- data/lib/pact_broker/api/resources/pact.rb +1 -1
- data/lib/pact_broker/api/resources/publish_contracts.rb +47 -7
- data/lib/pact_broker/app.rb +1 -1
- data/lib/pact_broker/certificates/service.rb +32 -2
- data/lib/pact_broker/config/runtime_configuration.rb +9 -0
- data/lib/pact_broker/config/runtime_configuration_database_methods.rb +1 -1
- data/lib/pact_broker/config/runtime_configuration_logging_methods.rb +6 -2
- data/lib/pact_broker/contracts/contracts_publication_results.rb +2 -7
- data/lib/pact_broker/contracts/notice.rb +8 -0
- data/lib/pact_broker/contracts/service.rb +25 -0
- data/lib/pact_broker/db/clean/selector.rb +1 -1
- data/lib/pact_broker/db/data_migrations/migrate_integrations.rb +40 -0
- data/lib/pact_broker/db/migrate_data.rb +1 -0
- data/lib/pact_broker/doc/views/index/publish-contracts.markdown +32 -2
- data/lib/pact_broker/doc/views/provider-pacts-for-verification.markdown +3 -1
- data/lib/pact_broker/doc/views/webhooks.markdown +23 -0
- data/lib/pact_broker/domain/pacticipant.rb +2 -0
- data/lib/pact_broker/integrations/integration.rb +34 -10
- data/lib/pact_broker/integrations/repository.rb +22 -0
- data/lib/pact_broker/integrations/service.rb +2 -2
- data/lib/pact_broker/locale/en.yml +2 -3
- data/lib/pact_broker/matrix/quick_row.rb +16 -0
- data/lib/pact_broker/pacticipants/repository.rb +5 -0
- data/lib/pact_broker/pacticipants/service.rb +1 -1
- data/lib/pact_broker/pacts/content.rb +18 -0
- data/lib/pact_broker/pacts/create_formatted_diff.rb +9 -2
- data/lib/pact_broker/pacts/merger.rb +8 -4
- data/lib/pact_broker/pacts/pact_publication_dataset_module.rb +17 -21
- data/lib/pact_broker/pacts/pacts_for_verification_repository.rb +1 -1
- data/lib/pact_broker/pacts/repository.rb +1 -0
- data/lib/pact_broker/pacts/selector.rb +35 -21
- data/lib/pact_broker/pacts/service.rb +1 -1
- data/lib/pact_broker/pacts/sort_content.rb +1 -0
- data/lib/pact_broker/repositories.rb +5 -0
- data/lib/pact_broker/tasks/clean_task.rb +13 -2
- data/lib/pact_broker/test/test_data_builder.rb +6 -0
- data/lib/pact_broker/ui/views/index/_css_and_js.haml +1 -0
- data/lib/pact_broker/ui/views/layouts/main.haml +4 -0
- data/lib/pact_broker/ui/views/matrix/show.haml +1 -0
- data/lib/pact_broker/verifications/required_verification.rb +5 -2
- data/lib/pact_broker/verifications/service.rb +14 -7
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/versions/branch_version.rb +2 -1
- data/lib/pact_broker/versions/selector.rb +32 -0
- data/lib/pact_broker/versions/selectors.rb +20 -0
- data/lib/pact_broker/webhooks/pact_and_verification_parameters.rb +3 -4
- data/lib/pact_broker/webhooks/trigger_service.rb +9 -1
- data/pact_broker.gemspec +8 -1
- data/public/css/bootstrap-grid.css +170 -17
- data/public/css/bootstrap-grid.css.map +1 -1
- data/public/css/bootstrap-grid.min.css +5 -5
- data/public/css/bootstrap-grid.min.css.map +1 -1
- data/public/css/bootstrap-reboot.css +16 -22
- data/public/css/bootstrap-reboot.css.map +1 -1
- data/public/css/bootstrap-reboot.min.css +5 -5
- data/public/css/bootstrap-reboot.min.css.map +1 -1
- data/public/css/bootstrap.css +585 -308
- data/public/css/bootstrap.css.map +1 -1
- data/public/css/bootstrap.min.css +5 -5
- data/public/css/bootstrap.min.css.map +1 -1
- data/public/images/question.svg +1 -0
- data/public/javascripts/set-css-asset-base-url.js +23 -0
- data/public/js/bootstrap.bundle.js +1294 -1335
- data/public/js/bootstrap.bundle.js.map +1 -1
- data/public/js/bootstrap.bundle.min.js +4 -4
- data/public/js/bootstrap.bundle.min.js.map +1 -1
- data/public/js/bootstrap.js +1232 -1310
- data/public/js/bootstrap.js.map +1 -1
- data/public/js/bootstrap.min.js +4 -4
- data/public/js/bootstrap.min.js.map +1 -1
- data/public/stylesheets/index.css +14 -5
- data/public/stylesheets/matrix.css +6 -1
- data/public/stylesheets/pact.css +6 -1
- metadata +17 -1052
- data/.codeclimate.yml +0 -49
- data/.csslintrc +0 -2
- data/.dockerignore +0 -2
- data/.eslintignore +0 -1
- data/.eslintrc.yml +0 -277
- data/.github/FUNDING.yml +0 -4
- data/.github/ISSUE_TEMPLATE.md +0 -32
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -9
- data/.github/workflows/release_gem.yml +0 -52
- data/.github/workflows/test-ruby-3.yml +0 -19
- data/.github/workflows/test.yml +0 -95
- data/.github/workflows/trigger_pact_docs_update.yml +0 -22
- data/.gitignore +0 -45
- data/.optic/.gitignore +0 -2
- data/.optic/api/specification.json +0 -1
- data/.optic/ignore +0 -14
- data/.rspec +0 -3
- data/.rubocop.yml +0 -314
- data/.ruby-version +0 -1
- data/CODE_OF_CONDUCT.md +0 -76
- data/CONTRIBUTING.md +0 -29
- data/DEVELOPER_DOCUMENTATION.md +0 -161
- data/DEVELOPER_SETUP.md +0 -165
- data/Dockerfile +0 -52
- data/ISSUES.md +0 -31
- data/LICENSE.txt +0 -22
- data/MATRIX.md +0 -4
- data/RELEASING.md +0 -5
- data/Rakefile +0 -23
- data/UPGRADING.md +0 -18
- data/config/boot.rb +0 -21
- data/config/database.travis.yml +0 -13
- data/config/database.yml +0 -79
- data/config.ru +0 -11
- data/db/test/backwards_compatibility/.rspec +0 -3
- data/db/test/backwards_compatibility/Appraisals +0 -57
- data/db/test/backwards_compatibility/Gemfile +0 -12
- data/db/test/backwards_compatibility/Rakefile +0 -72
- data/db/test/backwards_compatibility/config.ru +0 -21
- data/db/test/backwards_compatibility/gemfiles/1.18.0.gemfile +0 -15
- data/db/test/backwards_compatibility/gemfiles/1.18.0.gemfile.lock +0 -212
- data/db/test/backwards_compatibility/gemfiles/2.0.0.gemfile +0 -15
- data/db/test/backwards_compatibility/gemfiles/2.0.0.gemfile.lock +0 -210
- data/db/test/backwards_compatibility/gemfiles/2.1.0.gemfile +0 -15
- data/db/test/backwards_compatibility/gemfiles/2.1.0.gemfile.lock +0 -211
- data/db/test/backwards_compatibility/gemfiles/2.2.0.gemfile +0 -15
- data/db/test/backwards_compatibility/gemfiles/2.2.0.gemfile.lock +0 -199
- data/db/test/backwards_compatibility/gemfiles/2.3.0.gemfile +0 -14
- data/db/test/backwards_compatibility/gemfiles/2.3.0.gemfile.lock +0 -198
- data/db/test/backwards_compatibility/gemfiles/2.4.2.gemfile +0 -14
- data/db/test/backwards_compatibility/gemfiles/2.4.2.gemfile.lock +0 -198
- data/db/test/backwards_compatibility/gemfiles/2.5.1.gemfile +0 -14
- data/db/test/backwards_compatibility/gemfiles/2.5.1.gemfile.lock +0 -198
- data/db/test/backwards_compatibility/gemfiles/2.6.0.gemfile +0 -14
- data/db/test/backwards_compatibility/gemfiles/2.6.0.gemfile.lock +0 -198
- data/db/test/backwards_compatibility/gemfiles/head.gemfile +0 -14
- data/db/test/backwards_compatibility/gemfiles/head.gemfile.lock +0 -182
- data/db/test/backwards_compatibility/spec/fixtures/foo-bar.json +0 -22
- data/db/test/backwards_compatibility/spec/publish_pact_spec.rb +0 -72
- data/db/test/backwards_compatibility/spec/spec_helper.rb +0 -20
- data/db/test/backwards_compatibility/spec/support/fixture_helpers.rb +0 -12
- data/db/test/backwards_compatibility/spec/support/request_helpers.rb +0 -19
- data/db/test/change_migration_strategy/Rakefile +0 -21
- data/db/test/change_migration_strategy/before/Gemfile +0 -7
- data/docker-compose-ci-mysql.yml +0 -38
- data/docker-compose-dev-postgres.yml +0 -43
- data/docker-compose-issue-repro-with-pact-broker-docker-image.yml +0 -44
- data/docker-compose-test.yml +0 -102
- data/docs/configuration.yml +0 -385
- data/docs/images/Pactflow logo - black small.png +0 -0
- data/example/Gemfile +0 -6
- data/example/README.md +0 -64
- data/example/config/pact_broker.yml +0 -9
- data/example/config/puma.rb +0 -3
- data/example/config.ru +0 -10
- data/issue-reproduction/Dockerfile-pact-broker +0 -42
- data/optic.yml +0 -5
- data/pact_broker_client-pact_broker.json +0 -133
- data/public/js/npm.js +0 -13
- data/regression/.gitignore +0 -1
- data/regression/can_i_deploy_spec.rb +0 -43
- data/regression/index_spec.rb +0 -26
- data/regression/regression_helper.rb +0 -63
- data/regression/script/approval-all.sh +0 -6
- data/regression/script/clear.sh +0 -3
- data/regression/script/run.sh +0 -3
- data/scaffolding/README.md +0 -23
- data/scaffolding/run.rb +0 -242
- data/scaffolding/templates/decorator.rb.erb +0 -15
- data/scaffolding/templates/decorator_spec.erb.rb +0 -0
- data/scaffolding/templates/migration.erb +0 -12
- data/scaffolding/templates/model.erb +0 -14
- data/scaffolding/templates/repository.rb.erb +0 -18
- data/scaffolding/templates/repository_spec.rb.erb +0 -9
- data/scaffolding/templates/resource.erb +0 -46
- data/scaffolding/templates/resource_spec.rb.erb +0 -78
- data/scaffolding/templates/service.rb.erb +0 -22
- data/scaffolding/templates/service_spec.rb.erb +0 -9
- data/script/data/auto-create-things-for-tags.rb +0 -22
- data/script/data/branches.rb +0 -35
- data/script/data/contract-published-requiring-verification.rb +0 -26
- data/script/data/environments.rb +0 -45
- data/script/data/expand-currently-deployed.rb +0 -47
- data/script/data/issue-494.rb +0 -25
- data/script/data/pending.rb +0 -26
- data/script/data/tags.rb +0 -35
- data/script/data/verify-pact-for-multiple-selectors.rb +0 -30
- data/script/data/webhook.rb +0 -22
- data/script/db-spec.sh +0 -16
- data/script/demonstrate-version-branches.rb +0 -33
- data/script/dev/rubocop-modified-files.sh +0 -3
- data/script/dev/webhook-server-with-random-errors.sh +0 -25
- data/script/docker/db-execute-sql-file.sh +0 -2
- data/script/docker/db-psql.sh +0 -3
- data/script/docker/db-reload.sh +0 -11
- data/script/docker/db-restore.sh +0 -5
- data/script/docker/db-rm.sh +0 -3
- data/script/docker/db-start.sh +0 -7
- data/script/docker/mysql-db-start.sh +0 -10
- data/script/docker-container/test.sh +0 -3
- data/script/docs/generate-api-docs.rb +0 -117
- data/script/docs/generate-configuration-docs.rb +0 -107
- data/script/docs/regenerate-api-docs.sh +0 -11
- data/script/exercise-api-for-optic.sh +0 -3
- data/script/foo-bar-verification.json +0 -59
- data/script/foo-bar.json +0 -33
- data/script/generate-certificates-for-webooks-certificate-spec.rb +0 -49
- data/script/generate-erd +0 -55
- data/script/import-pg-database.sh +0 -5
- data/script/insert-self-signed-certificate-from-url.rb +0 -35
- data/script/issues/consumer-version-selectors-docs/issue-text.txt +0 -11
- data/script/issues/consumer-version-selectors-docs/issues.txt +0 -6
- data/script/issues/consumer-version-selectors-docs/raise-issue-in-client-repos.sh +0 -10
- data/script/prod/clean-up.sql +0 -11
- data/script/prod/migrate-latest-pacts.sh +0 -29
- data/script/prod/redact-data.sql +0 -16
- data/script/pry.rb +0 -31
- data/script/publish-2.sh +0 -4
- data/script/publish-new.sh +0 -31
- data/script/publish-not-a-pact.sh +0 -4
- data/script/publish-verification.sh +0 -5
- data/script/publish.sh +0 -28
- data/script/query.rb +0 -20
- data/script/recreate-docker-pg-db.sh +0 -20
- data/script/recreate-mysql-db.sh +0 -18
- data/script/recreate-pg-db.sh +0 -16
- data/script/recreate-test-database.sh +0 -2
- data/script/release-via-github-action.sh +0 -7
- data/script/release.sh +0 -11
- data/script/reproduce-issue-can-i-deploy-ignore.rb +0 -48
- data/script/reproduce-issue-starting-up.rb +0 -38
- data/script/reproduce-issue.rb +0 -37
- data/script/restart.sh +0 -18
- data/script/run-with-ssl.rb +0 -44
- data/script/seed-example-matrix.rb +0 -105
- data/script/seed-for-webhook-test.rb +0 -59
- data/script/seed-matrix.rb +0 -90
- data/script/seed.rb +0 -101
- data/script/test/approval-all.sh +0 -6
- data/script/test/run-rake-on-docker-compose-mysql.sh +0 -8
- data/script/trigger-release.sh +0 -30
- data/script/update-hal-browser +0 -6
- data/script/watch.sh +0 -7
- data/script/webhook-server.ru +0 -10
- data/spec/features/base_equality_only_on_content_that_affects_verification_results_spec.rb +0 -34
- data/spec/features/can_i_deploy_spec.rb +0 -31
- data/spec/features/create_branch_version_spec.rb +0 -29
- data/spec/features/create_environment_spec.rb +0 -47
- data/spec/features/create_pacticipant_spec.rb +0 -36
- data/spec/features/create_tag_spec.rb +0 -42
- data/spec/features/create_version_spec.rb +0 -56
- data/spec/features/create_webhook_spec.rb +0 -189
- data/spec/features/delete_environment_spec.rb +0 -16
- data/spec/features/delete_integration_spec.rb +0 -27
- data/spec/features/delete_label_spec.rb +0 -28
- data/spec/features/delete_pact_spec.rb +0 -31
- data/spec/features/delete_pact_versions_for_branch_spec.rb +0 -34
- data/spec/features/delete_pact_versions_spec.rb +0 -29
- data/spec/features/delete_tagged_pact_versions_spec.rb +0 -28
- data/spec/features/delete_verification_spec.rb +0 -27
- data/spec/features/delete_version_spec.rb +0 -22
- data/spec/features/delete_webhook_spec.rb +0 -34
- data/spec/features/edit_webhook_spec.rb +0 -61
- data/spec/features/end_deployment_spec.rb +0 -29
- data/spec/features/end_support_spec.rb +0 -67
- data/spec/features/execute_unsaved_webhook_spec.rb +0 -53
- data/spec/features/execute_webhook_spec.rb +0 -92
- data/spec/features/get_branch_version_spec.rb +0 -12
- data/spec/features/get_can_i_deploy_badge_spec.rb +0 -13
- data/spec/features/get_currently_deployed_versions_for_environment_spec.rb +0 -59
- data/spec/features/get_currently_deployed_versions_for_version_spec.rb +0 -27
- data/spec/features/get_currently_supported_versions_for_environment_spec.rb +0 -57
- data/spec/features/get_dashboard_spec.rb +0 -29
- data/spec/features/get_deployed_versions_for_version_and_environment.rb +0 -27
- data/spec/features/get_diff_spec.rb +0 -53
- data/spec/features/get_environment_spec.rb +0 -19
- data/spec/features/get_environments_spec.rb +0 -30
- data/spec/features/get_integrations_dot_file_spec.rb +0 -23
- data/spec/features/get_integrations_spec.rb +0 -17
- data/spec/features/get_label_spec.rb +0 -28
- data/spec/features/get_latest_pact_badge_spec.rb +0 -54
- data/spec/features/get_latest_tagged_pact_badge_spec.rb +0 -38
- data/spec/features/get_latest_tagged_pact_spec.rb +0 -22
- data/spec/features/get_latest_untagged_pact_badge_spec.rb +0 -38
- data/spec/features/get_latest_untagged_pact_spec.rb +0 -22
- data/spec/features/get_latest_verification_for_pact_spec.rb +0 -59
- data/spec/features/get_matrix_badge_spec.rb +0 -50
- data/spec/features/get_matrix_for_consumer_and_provider_spec.rb +0 -22
- data/spec/features/get_matrix_spec.rb +0 -34
- data/spec/features/get_pact_spec.rb +0 -65
- data/spec/features/get_pact_version.rb +0 -36
- data/spec/features/get_pact_versions_spec.rb +0 -34
- data/spec/features/get_pacticipants_by_label_spec.rb +0 -27
- data/spec/features/get_previous_distinct_version.rb +0 -51
- data/spec/features/get_provider_pacts_for_verification_spec.rb +0 -95
- data/spec/features/get_provider_pacts_spec.rb +0 -93
- data/spec/features/get_released_versions_for_version_and_environment.rb +0 -27
- data/spec/features/get_tagged_pact_versions_spec.rb +0 -26
- data/spec/features/get_triggered_webhooks_for_pact_spec.rb +0 -20
- data/spec/features/get_triggered_webhooks_for_verification_spec.rb +0 -21
- data/spec/features/get_verifications_for_consumer_version_spec.rb +0 -33
- data/spec/features/get_version_spec.rb +0 -44
- data/spec/features/get_versions_spec.rb +0 -39
- data/spec/features/label_pacticipant_spec.rb +0 -22
- data/spec/features/merge_pact_spec.rb +0 -63
- data/spec/features/metadata_spec.rb +0 -66
- data/spec/features/metrics_spec.rb +0 -23
- data/spec/features/pending_pacts_spec.rb +0 -109
- data/spec/features/pending_pacts_with_tags_spec.rb +0 -138
- data/spec/features/publish_not_a_pact_spec.rb +0 -37
- data/spec/features/publish_pact_all_in_one_approval_spec.rb +0 -72
- data/spec/features/publish_pact_all_in_one_spec.rb +0 -42
- data/spec/features/publish_pact_spec.rb +0 -124
- data/spec/features/publish_verification_results_and_version_spec.rb +0 -70
- data/spec/features/publish_verification_spec.rb +0 -72
- data/spec/features/record_deployment_spec.rb +0 -93
- data/spec/features/record_release_spec.rb +0 -84
- data/spec/features/record_undeployment_spec.rb +0 -67
- data/spec/features/tag_version_spec.rb +0 -13
- data/spec/features/update_environment_spec.rb +0 -44
- data/spec/features/update_matrix_spec.rb +0 -146
- data/spec/features/update_pacticipant_spec.rb +0 -98
- data/spec/features/update_version_spec.rb +0 -100
- data/spec/features/update_webhook_spec.rb +0 -47
- data/spec/features/wip_pacts_spec.rb +0 -387
- data/spec/fixtures/a_consumer-a_provider-2.json +0 -22
- data/spec/fixtures/a_consumer-a_provider-3.json +0 -22
- data/spec/fixtures/a_consumer-a_provider-conflict.json +0 -22
- data/spec/fixtures/a_consumer-a_provider-merged.json +0 -34
- data/spec/fixtures/a_consumer-a_provider.json +0 -22
- data/spec/fixtures/approvals/clean_incremental_dry_run.approved.json +0 -100
- data/spec/fixtures/approvals/docs_webhooks_executing_a_saved_webhook_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_executing_a_saved_webhook_post.approved.json +0 -43
- data/spec/fixtures/approvals/docs_webhooks_executing_an_unsaved_webhook_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_executing_an_unsaved_webhook_post.approved.json +0 -63
- data/spec/fixtures/approvals/docs_webhooks_logs_of_triggered_webhook_get.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_logs_of_triggered_webhook_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_pact_webhooks_get.approved.json +0 -45
- data/spec/fixtures/approvals/docs_webhooks_pact_webhooks_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_triggered_webhooks_for_pact_publication_get.approved.json +0 -52
- data/spec/fixtures/approvals/docs_webhooks_triggered_webhooks_for_pact_publication_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_triggered_webhooks_for_verification_publication_get.approved.json +0 -32
- data/spec/fixtures/approvals/docs_webhooks_triggered_webhooks_for_verification_publication_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_webhook_get.approved.json +0 -74
- data/spec/fixtures/approvals/docs_webhooks_webhook_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_webhook_put.approved.json +0 -77
- data/spec/fixtures/approvals/docs_webhooks_webhooks_for_a_provider_get.approved.json +0 -41
- data/spec/fixtures/approvals/docs_webhooks_webhooks_for_a_provider_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_webhooks_for_consumer_and_provider_get.approved.json +0 -45
- data/spec/fixtures/approvals/docs_webhooks_webhooks_for_consumer_and_provider_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_webhooks_for_consumer_get.approved.json +0 -41
- data/spec/fixtures/approvals/docs_webhooks_webhooks_for_consumer_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_webhooks_get.approved.json +0 -45
- data/spec/fixtures/approvals/docs_webhooks_webhooks_options.approved.json +0 -20
- data/spec/fixtures/approvals/docs_webhooks_webhooks_post.approved.json +0 -78
- data/spec/fixtures/approvals/docs_webhooks_webhooks_status_get.approved.json +0 -79
- data/spec/fixtures/approvals/docs_webhooks_webhooks_status_options.approved.json +0 -20
- data/spec/fixtures/approvals/get_provider_pacts_for_verification.approved.json +0 -56
- data/spec/fixtures/approvals/matrix_integration_environment_spec.approved.json +0 -62
- data/spec/fixtures/approvals/matrix_integration_ignore_spec.approved.json +0 -124
- data/spec/fixtures/approvals/matrix_integration_spec.approved.json +0 -173
- data/spec/fixtures/approvals/modifiable_resources.approved.json +0 -105
- data/spec/fixtures/approvals/publish_contract_no_branch.approved.json +0 -165
- data/spec/fixtures/approvals/publish_contract_nothing_exists.approved.json +0 -156
- data/spec/fixtures/approvals/publish_contract_nothing_exists_with_webhook.approved.json +0 -156
- data/spec/fixtures/approvals/publish_contract_verification_already_exists.approved.json +0 -147
- data/spec/fixtures/approvals/publish_contract_with_validation_error.approved.json +0 -41
- data/spec/fixtures/approvals/publish_contracts_results_decorator.approved.json +0 -61
- data/spec/fixtures/certificate-invalid.pem +0 -29
- data/spec/fixtures/certificate.pem +0 -53
- data/spec/fixtures/certificates/cacert.pem +0 -21
- data/spec/fixtures/certificates/cert.pem +0 -20
- data/spec/fixtures/certificates/key.pem +0 -27
- data/spec/fixtures/certificates/self-signed.badssl.com.pem +0 -21
- data/spec/fixtures/consumer-provider.json +0 -25
- data/spec/fixtures/dashboard.json +0 -87
- data/spec/fixtures/expected.gv +0 -4
- data/spec/fixtures/foo-bar.json +0 -22
- data/spec/fixtures/invalid-publish-contract-body.json +0 -38
- data/spec/fixtures/renderer_pact.json +0 -34
- data/spec/fixtures/update_pacticipant.json +0 -5
- data/spec/fixtures/updated_pacticipant.json +0 -11
- data/spec/fixtures/verification.json +0 -11
- data/spec/fixtures/webhook_valid.json +0 -17
- data/spec/fixtures/webhook_valid_with_pacticipants.json +0 -23
- data/spec/integration/app_spec.rb +0 -209
- data/spec/integration/endpoints/group_spec.rb +0 -19
- data/spec/integration/pact_metdata_spec.rb +0 -105
- data/spec/integration/ui/index_spec.rb +0 -50
- data/spec/integration/ui/matrix_spec.rb +0 -36
- data/spec/integration/webhooks/certificate_spec.rb +0 -47
- data/spec/integration/webhooks/contract_publication_spec.rb +0 -68
- data/spec/integration/webhooks/contract_requiring_verification_published_spec.rb +0 -67
- data/spec/integration/webhooks/pact_publication_spec.rb +0 -51
- data/spec/integration/webhooks_documentation_spec.rb +0 -348
- data/spec/lib/pact/doc/generator_spec.rb +0 -80
- data/spec/lib/pact/doc/interaction_view_model_spec.rb +0 -232
- data/spec/lib/pact/doc/markdown/consumer_contract_renderer_spec.rb +0 -71
- data/spec/lib/pact/doc/markdown/index_renderer_spec.rb +0 -29
- data/spec/lib/pact_broker/api/contracts/environment_schema_spec.rb +0 -91
- data/spec/lib/pact_broker/api/contracts/pacticipant_schema_spec.rb +0 -46
- data/spec/lib/pact_broker/api/contracts/pacts_for_verification_json_query_schema_combinations_spec.rb +0 -85
- data/spec/lib/pact_broker/api/contracts/pacts_for_verification_json_query_schema_spec.rb +0 -348
- data/spec/lib/pact_broker/api/contracts/pacts_for_verification_query_string_schema_spec.rb +0 -97
- data/spec/lib/pact_broker/api/contracts/publish_contracts_schema_spec.rb +0 -127
- data/spec/lib/pact_broker/api/contracts/put_pact_params_contract_spec.rb +0 -133
- data/spec/lib/pact_broker/api/contracts/verification_contract_spec.rb +0 -112
- data/spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb +0 -379
- data/spec/lib/pact_broker/api/decorators/dashboard_decorator_spec.rb +0 -94
- data/spec/lib/pact_broker/api/decorators/embedded_label_decorator_spec.rb +0 -34
- data/spec/lib/pact_broker/api/decorators/embedded_tag_decorator_spec.rb +0 -41
- data/spec/lib/pact_broker/api/decorators/embedded_version_decorator_spec.rb +0 -39
- data/spec/lib/pact_broker/api/decorators/extended_pact_decorator_spec.rb +0 -62
- data/spec/lib/pact_broker/api/decorators/integration_decorator_spec.rb +0 -86
- data/spec/lib/pact_broker/api/decorators/integrations_decorator_spec.rb +0 -29
- data/spec/lib/pact_broker/api/decorators/label_decorator_spec.rb +0 -42
- data/spec/lib/pact_broker/api/decorators/latest_pact_decorator_spec.rb +0 -25
- data/spec/lib/pact_broker/api/decorators/matrix_decorator_spec.rb +0 -259
- data/spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb +0 -23
- data/spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb +0 -136
- data/spec/lib/pact_broker/api/decorators/pact_version_decorator_spec.rb +0 -61
- data/spec/lib/pact_broker/api/decorators/pact_webhooks_status_decorator_spec.rb +0 -138
- data/spec/lib/pact_broker/api/decorators/pacticipant_collection_decorator_spec.rb +0 -62
- data/spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb +0 -89
- data/spec/lib/pact_broker/api/decorators/pacts_for_verification_query_decorator_spec.rb +0 -165
- data/spec/lib/pact_broker/api/decorators/provider_pacts_decorator_spec.rb +0 -58
- data/spec/lib/pact_broker/api/decorators/publish_contracts_results_decorator_spec.rb +0 -53
- data/spec/lib/pact_broker/api/decorators/reason_decorator_spec.rb +0 -95
- data/spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb +0 -28
- data/spec/lib/pact_broker/api/decorators/representable_pact_spec.rb +0 -29
- data/spec/lib/pact_broker/api/decorators/tag_decorator_spec.rb +0 -57
- data/spec/lib/pact_broker/api/decorators/tagged_pact_versions_decorator_spec.rb +0 -79
- data/spec/lib/pact_broker/api/decorators/triggered_webhook_decorator_spec.rb +0 -69
- data/spec/lib/pact_broker/api/decorators/triggered_webhooks_decorator_spec.rb +0 -28
- data/spec/lib/pact_broker/api/decorators/verifiable_pact_decorator_spec.rb +0 -94
- data/spec/lib/pact_broker/api/decorators/verifiable_pacts_decorator_spec.rb +0 -29
- data/spec/lib/pact_broker/api/decorators/verification_decorator_spec.rb +0 -81
- data/spec/lib/pact_broker/api/decorators/verification_summary_decorator_spec.rb +0 -65
- data/spec/lib/pact_broker/api/decorators/version_decorator_spec.rb +0 -121
- data/spec/lib/pact_broker/api/decorators/versions_decorator_spec.rb +0 -49
- data/spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb +0 -210
- data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +0 -128
- data/spec/lib/pact_broker/api/decorators/webhook_request_template_decorator_spec.rb +0 -78
- data/spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb +0 -48
- data/spec/lib/pact_broker/api/middleware/basic_auth_spec.rb +0 -312
- data/spec/lib/pact_broker/api/middleware/configuration_spec.rb +0 -43
- data/spec/lib/pact_broker/api/pact_broker_urls_spec.rb +0 -221
- data/spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb +0 -141
- data/spec/lib/pact_broker/api/renderers/integrations_dot_renderer_spec.rb +0 -29
- data/spec/lib/pact_broker/api/resources/all_webhooks_spec.rb +0 -145
- data/spec/lib/pact_broker/api/resources/badge_spec.rb +0 -212
- data/spec/lib/pact_broker/api/resources/can_i_deploy_badge_spec.rb +0 -80
- data/spec/lib/pact_broker/api/resources/can_i_deploy_pacticipant_version_spec.rb +0 -31
- data/spec/lib/pact_broker/api/resources/can_i_deploy_spec.rb +0 -51
- data/spec/lib/pact_broker/api/resources/dashboard_spec.rb +0 -36
- data/spec/lib/pact_broker/api/resources/default_base_resource_approval_spec.rb +0 -60
- data/spec/lib/pact_broker/api/resources/default_base_resource_spec.rb +0 -224
- data/spec/lib/pact_broker/api/resources/error_response_body_generator_spec.rb +0 -69
- data/spec/lib/pact_broker/api/resources/group_spec.rb +0 -82
- data/spec/lib/pact_broker/api/resources/latest_pact_spec.rb +0 -80
- data/spec/lib/pact_broker/api/resources/latest_provider_pacts_spec.rb +0 -52
- data/spec/lib/pact_broker/api/resources/latest_verifications_for_consumer_version_spec.rb +0 -68
- data/spec/lib/pact_broker/api/resources/matrix_badge_spec.rb +0 -11
- data/spec/lib/pact_broker/api/resources/matrix_spec.rb +0 -42
- data/spec/lib/pact_broker/api/resources/pact_spec.rb +0 -178
- data/spec/lib/pact_broker/api/resources/pact_triggered_webhooks_spec.rb +0 -54
- data/spec/lib/pact_broker/api/resources/pacticipant_spec.rb +0 -60
- data/spec/lib/pact_broker/api/resources/pacticipant_webhooks_spec.rb +0 -238
- data/spec/lib/pact_broker/api/resources/pacticipants_spec.rb +0 -87
- data/spec/lib/pact_broker/api/resources/provider_pacts_for_verification_spec.rb +0 -116
- data/spec/lib/pact_broker/api/resources/provider_pacts_spec.rb +0 -75
- data/spec/lib/pact_broker/api/resources/released_version_spec.rb +0 -61
- data/spec/lib/pact_broker/api/resources/tag_spec.rb +0 -166
- data/spec/lib/pact_broker/api/resources/tagged_pact_versions_spec.rb +0 -96
- data/spec/lib/pact_broker/api/resources/triggered_webhook_logs_spec.rb +0 -32
- data/spec/lib/pact_broker/api/resources/verification_spec.rb +0 -87
- data/spec/lib/pact_broker/api/resources/verification_triggered_webhooks_spec.rb +0 -67
- data/spec/lib/pact_broker/api/resources/verifications_spec.rb +0 -135
- data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +0 -92
- data/spec/lib/pact_broker/api/resources/webhook_spec.rb +0 -115
- data/spec/lib/pact_broker/app_basic_auth_spec.rb +0 -122
- data/spec/lib/pact_broker/app_spec.rb +0 -348
- data/spec/lib/pact_broker/badges/service_spec.rb +0 -348
- data/spec/lib/pact_broker/build_http_options_spec.rb +0 -47
- data/spec/lib/pact_broker/certificates/service_spec.rb +0 -80
- data/spec/lib/pact_broker/config/load_spec.rb +0 -110
- data/spec/lib/pact_broker/config/runtime_configuration_documentation_spec.rb +0 -30
- data/spec/lib/pact_broker/config/runtime_configuration_logging_methods_spec.rb +0 -22
- data/spec/lib/pact_broker/config/runtime_configuration_spec.rb +0 -71
- data/spec/lib/pact_broker/config/save_spec.rb +0 -100
- data/spec/lib/pact_broker/config/space_delimited_integer_list_spec.rb +0 -47
- data/spec/lib/pact_broker/config/space_delimited_string_list_spec.rb +0 -45
- data/spec/lib/pact_broker/configuration_spec.rb +0 -167
- data/spec/lib/pact_broker/contracts/service_spec.rb +0 -129
- data/spec/lib/pact_broker/db/clean_incremental_spec.rb +0 -120
- data/spec/lib/pact_broker/db/clean_old_spec.rb +0 -123
- data/spec/lib/pact_broker/db/clean_spec.rb +0 -153
- data/spec/lib/pact_broker/db/data_migrations/create_branches_spec.rb +0 -57
- data/spec/lib/pact_broker/db/data_migrations/migrate_webhook_headers_spec.rb +0 -78
- data/spec/lib/pact_broker/db/data_migrations/set_consumer_ids_for_pact_publications_spec.rb +0 -40
- data/spec/lib/pact_broker/db/data_migrations/set_interactions_counts_spec.rb +0 -38
- data/spec/lib/pact_broker/db/data_migrations/set_latest_version_sequence_value_spec.rb +0 -68
- data/spec/lib/pact_broker/db/data_migrations/set_pacticipant_main_branch_spec.rb +0 -41
- data/spec/lib/pact_broker/db/delete_overwritten_data_spec.rb +0 -161
- data/spec/lib/pact_broker/db/log_quietener_spec.rb +0 -52
- data/spec/lib/pact_broker/db/validate_encoding_spec.rb +0 -66
- data/spec/lib/pact_broker/deployments/deployed_version_service_spec.rb +0 -42
- data/spec/lib/pact_broker/deployments/deployed_version_spec.rb +0 -109
- data/spec/lib/pact_broker/deployments/environment_service_spec.rb +0 -58
- data/spec/lib/pact_broker/deployments/environment_spec.rb +0 -27
- data/spec/lib/pact_broker/diagnostic/resources/dependencies_spec.rb +0 -85
- data/spec/lib/pact_broker/diagnostic/resources/heartbeat_spec.rb +0 -34
- data/spec/lib/pact_broker/doc/controllers/app_spec.rb +0 -82
- data/spec/lib/pact_broker/doc/coverage_spec.rb +0 -39
- data/spec/lib/pact_broker/domain/group_spec.rb +0 -25
- data/spec/lib/pact_broker/domain/index_item_spec.rb +0 -24
- data/spec/lib/pact_broker/domain/order_versions_spec.rb +0 -84
- data/spec/lib/pact_broker/domain/pact_spec.rb +0 -27
- data/spec/lib/pact_broker/domain/tag_spec.rb +0 -134
- data/spec/lib/pact_broker/domain/verification_spec.rb +0 -133
- data/spec/lib/pact_broker/domain/version_spec.rb +0 -490
- data/spec/lib/pact_broker/domain/webhook_request_spec.rb +0 -196
- data/spec/lib/pact_broker/domain/webhook_spec.rb +0 -168
- data/spec/lib/pact_broker/errors/error_logger_spec.rb +0 -65
- data/spec/lib/pact_broker/errors_spec.rb +0 -54
- data/spec/lib/pact_broker/events/subscriber_spec.rb +0 -43
- data/spec/lib/pact_broker/feature_toggle_spec.rb +0 -80
- data/spec/lib/pact_broker/groups/service_spec.rb +0 -52
- data/spec/lib/pact_broker/hash_refinements_spec.rb +0 -63
- data/spec/lib/pact_broker/index/service_spec.rb +0 -400
- data/spec/lib/pact_broker/index/service_view_spec.rb +0 -144
- data/spec/lib/pact_broker/integrations/integration_spec.rb +0 -108
- data/spec/lib/pact_broker/integrations/service_spec.rb +0 -282
- data/spec/lib/pact_broker/labels/repository_spec.rb +0 -124
- data/spec/lib/pact_broker/labels/service_spec.rb +0 -28
- data/spec/lib/pact_broker/matrix/aggregated_row_spec.rb +0 -100
- data/spec/lib/pact_broker/matrix/can_i_deploy_query_schema_spec.rb +0 -72
- data/spec/lib/pact_broker/matrix/deployment_status_summary_spec.rb +0 -300
- data/spec/lib/pact_broker/matrix/every_row_spec.rb +0 -133
- data/spec/lib/pact_broker/matrix/head_row_spec.rb +0 -89
- data/spec/lib/pact_broker/matrix/integration_environment_spec.rb +0 -187
- data/spec/lib/pact_broker/matrix/integration_ignore_spec.rb +0 -238
- data/spec/lib/pact_broker/matrix/integration_spec.rb +0 -504
- data/spec/lib/pact_broker/matrix/parse_can_i_deploy_query_spec.rb +0 -77
- data/spec/lib/pact_broker/matrix/parse_query_spec.rb +0 -141
- data/spec/lib/pact_broker/matrix/quick_row_spec.rb +0 -74
- data/spec/lib/pact_broker/matrix/repository_dependency_spec.rb +0 -56
- data/spec/lib/pact_broker/matrix/repository_query_limit_spec.rb +0 -78
- data/spec/lib/pact_broker/matrix/repository_spec.rb +0 -888
- data/spec/lib/pact_broker/matrix/row_spec.rb +0 -74
- data/spec/lib/pact_broker/matrix/service_spec.rb +0 -200
- data/spec/lib/pact_broker/messages_spec.rb +0 -29
- data/spec/lib/pact_broker/metrics/service_spec.rb +0 -131
- data/spec/lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names_spec.rb +0 -63
- data/spec/lib/pact_broker/pacticipants/generate_display_name_spec.rb +0 -39
- data/spec/lib/pact_broker/pacticipants/repository_spec.rb +0 -239
- data/spec/lib/pact_broker/pacticipants/service_spec.rb +0 -217
- data/spec/lib/pact_broker/pacts/build_verifiable_pact_notices_spec.rb +0 -75
- data/spec/lib/pact_broker/pacts/content_spec.rb +0 -447
- data/spec/lib/pact_broker/pacts/create_formatted_diff_spec.rb +0 -29
- data/spec/lib/pact_broker/pacts/diff_spec.rb +0 -99
- data/spec/lib/pact_broker/pacts/generate_interaction_sha_spec.rb +0 -45
- data/spec/lib/pact_broker/pacts/generate_sha_spec.rb +0 -92
- data/spec/lib/pact_broker/pacts/merger_spec.rb +0 -171
- data/spec/lib/pact_broker/pacts/metadata_spec.rb +0 -147
- data/spec/lib/pact_broker/pacts/pact_params_spec.rb +0 -111
- data/spec/lib/pact_broker/pacts/pact_publication_clean_selector_dataset_module_spec.rb +0 -97
- data/spec/lib/pact_broker/pacts/pact_publication_dataset_module_spec.rb +0 -499
- data/spec/lib/pact_broker/pacts/pact_publication_latest_verification_spec.rb +0 -29
- data/spec/lib/pact_broker/pacts/pact_publication_selector_dataset_module_spec.rb +0 -185
- data/spec/lib/pact_broker/pacts/pact_publication_spec.rb +0 -559
- data/spec/lib/pact_broker/pacts/pact_version_spec.rb +0 -343
- data/spec/lib/pact_broker/pacts/repository_find_for_currently_deployed_spec.rb +0 -124
- data/spec/lib/pact_broker/pacts/repository_find_for_currently_supported_releases_spec.rb +0 -159
- data/spec/lib/pact_broker/pacts/repository_find_for_verification_fallback_spec.rb +0 -87
- data/spec/lib/pact_broker/pacts/repository_find_for_verification_spec.rb +0 -380
- data/spec/lib/pact_broker/pacts/repository_find_wip_pact_versions_for_provider_branch_spec.rb +0 -282
- data/spec/lib/pact_broker/pacts/repository_find_wip_pact_versions_for_provider_spec.rb +0 -375
- data/spec/lib/pact_broker/pacts/repository_spec.rb +0 -1079
- data/spec/lib/pact_broker/pacts/selected_pact_spec.rb +0 -23
- data/spec/lib/pact_broker/pacts/selector_spec.rb +0 -77
- data/spec/lib/pact_broker/pacts/selectors_spec.rb +0 -30
- data/spec/lib/pact_broker/pacts/service_spec.rb +0 -355
- data/spec/lib/pact_broker/pacts/sort_content_spec.rb +0 -57
- data/spec/lib/pact_broker/pacts/squash_pacts_for_verification_spec.rb +0 -70
- data/spec/lib/pact_broker/pacts/verifiable_pact_messages_spec.rb +0 -253
- data/spec/lib/pact_broker/pacts/verifiable_pact_spec.rb +0 -0
- data/spec/lib/pact_broker/relationships/groupify_spec.rb +0 -43
- data/spec/lib/pact_broker/tags/repository_spec.rb +0 -144
- data/spec/lib/pact_broker/tags/service_spec.rb +0 -66
- data/spec/lib/pact_broker/ui/controllers/can_i_deploy_spec.rb +0 -26
- data/spec/lib/pact_broker/ui/controllers/clusters_spec.rb +0 -27
- data/spec/lib/pact_broker/ui/controllers/index_spec.rb +0 -132
- data/spec/lib/pact_broker/ui/view_models/index_item_spec.rb +0 -173
- data/spec/lib/pact_broker/ui/view_models/index_items_spec.rb +0 -35
- data/spec/lib/pact_broker/ui/view_models/matrix_deployed_version_spec.rb +0 -29
- data/spec/lib/pact_broker/ui/view_models/matrix_line_spec.rb +0 -41
- data/spec/lib/pact_broker/verifications/pseudo_branch_status_spec.rb +0 -56
- data/spec/lib/pact_broker/verifications/repository_spec.rb +0 -350
- data/spec/lib/pact_broker/verifications/sequence_spec.rb +0 -73
- data/spec/lib/pact_broker/verifications/service_spec.rb +0 -260
- data/spec/lib/pact_broker/verifications/summary_for_consumer_version_spec.rb +0 -72
- data/spec/lib/pact_broker/versions/abbreviate_number_spec.rb +0 -23
- data/spec/lib/pact_broker/versions/branch_service_spec.rb +0 -71
- data/spec/lib/pact_broker/versions/branch_version_repository_spec.rb +0 -81
- data/spec/lib/pact_broker/versions/branch_version_spec.rb +0 -27
- data/spec/lib/pact_broker/versions/parse_semantic_version_spec.rb +0 -42
- data/spec/lib/pact_broker/versions/repository_spec.rb +0 -302
- data/spec/lib/pact_broker/versions/service_spec.rb +0 -137
- data/spec/lib/pact_broker/webhooks/check_host_whitelist_spec.rb +0 -85
- data/spec/lib/pact_broker/webhooks/execution_configuration_spec.rb +0 -18
- data/spec/lib/pact_broker/webhooks/job_spec.rb +0 -188
- data/spec/lib/pact_broker/webhooks/pact_and_verification_parameters_spec.rb +0 -16
- data/spec/lib/pact_broker/webhooks/redact_logs_spec.rb +0 -60
- data/spec/lib/pact_broker/webhooks/render_spec.rb +0 -221
- data/spec/lib/pact_broker/webhooks/repository_spec.rb +0 -933
- data/spec/lib/pact_broker/webhooks/service_spec.rb +0 -184
- data/spec/lib/pact_broker/webhooks/status_spec.rb +0 -54
- data/spec/lib/pact_broker/webhooks/trigger_service_spec.rb +0 -397
- data/spec/lib/pact_broker/webhooks/triggered_webhook_spec.rb +0 -40
- data/spec/lib/pact_broker/webhooks/webhook_request_logger_spec.rb +0 -207
- data/spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb +0 -227
- data/spec/lib/pact_broker/webhooks/webhook_spec.rb +0 -39
- data/spec/lib/rack/hal_browser/redirect_spec.rb +0 -63
- data/spec/lib/rack/pact_broker/add_pact_broker_version_header_spec.rb +0 -16
- data/spec/lib/rack/pact_broker/database_transaction_spec.rb +0 -77
- data/spec/lib/rack/pact_broker/invalid_uri_protection_spec.rb +0 -50
- data/spec/lib/rack/pact_broker/request_target_spec.rb +0 -69
- data/spec/lib/rack/pact_broker/set_base_url_spec.rb +0 -86
- data/spec/lib/rack/pact_broker/use_when_spec.rb +0 -49
- data/spec/lib/sequel/plugins/insert_ignore_spec.rb +0 -82
- data/spec/lib/sequel/plugins/upsert_spec.rb +0 -159
- data/spec/lib/webmachine/rack_adapter_monkey_patch_spec.rb +0 -49
- data/spec/migrations/20180201_create_head_matrix_spec.rb +0 -132
- data/spec/migrations/23_pact_versions_spec.rb +0 -77
- data/spec/migrations/24_populate_pact_contents_spec.rb +0 -22
- data/spec/migrations/34_latest_tagged_pacts_spec.rb +0 -84
- data/spec/migrations/34_pact_revisions_spec.rb +0 -82
- data/spec/migrations/41_migrate_execution_data_spec.rb +0 -109
- data/spec/migrations/42_delete_ophan_webhook_data_spec.rb +0 -98
- data/spec/migrations/44_add_provider_version_to_verification_spec.rb +0 -56
- data/spec/migrations/50_create_latest_matrix_spec.rb +0 -181
- data/spec/migrations/change_migration_strategy_spec.rb +0 -85
- data/spec/migrations/rollback_spec.rb +0 -8
- data/spec/service_consumers/hal_relation_proxy_app.rb +0 -61
- data/spec/service_consumers/pact_helper.rb +0 -61
- data/spec/service_consumers/provider_states_for_pact_broker_client.rb +0 -341
- data/spec/service_consumers/provider_states_for_pact_broker_client_2.rb +0 -36
- data/spec/service_consumers/provider_states_for_pact_ruby.rb +0 -158
- data/spec/spec_helper.rb +0 -65
- data/spec/support/approvals.rb +0 -55
- data/spec/support/database.rb +0 -9
- data/spec/support/database_cleaner.rb +0 -44
- data/spec/support/documentation.rb +0 -64
- data/spec/support/fixture_helpers.rb +0 -10
- data/spec/support/fixture_pact.rb +0 -34
- data/spec/support/foo-bar.json +0 -34
- data/spec/support/generated_index.md +0 -4
- data/spec/support/generated_markdown.md +0 -55
- data/spec/support/interaction_view_model.json +0 -63
- data/spec/support/interaction_view_model_with_terms.json +0 -50
- data/spec/support/logging.rb +0 -6
- data/spec/support/markdown_pact.json +0 -48
- data/spec/support/markdown_pact_v3.json +0 -44
- data/spec/support/markdown_pact_with_html.json +0 -27
- data/spec/support/markdown_pact_with_markdown_chars_in_names.json +0 -11
- data/spec/support/metadata_test_server.rb +0 -40
- data/spec/support/migration_helpers.rb +0 -16
- data/spec/support/rack_helpers.rb +0 -20
- data/spec/support/rspec_match_hash.rb +0 -26
- data/spec/support/rspec_matchers.rb +0 -9
- data/spec/support/shared_context.rb +0 -32
- data/spec/support/shared_examples_for_responses.rb +0 -96
- data/spec/support/simplecov.rb +0 -23
- data/spec/support/ssl_pact_broker_server.rb +0 -46
- data/spec/support/ssl_webhook_server.rb +0 -39
- data/spec/support/test_data_builder.rb +0 -3
- data/spec/support/verification_job.rb +0 -37
- data/spec/support/warning_silencer.rb +0 -10
- data/spec/support/webhook_endpoint_middleware.rb +0 -22
- data/tasks/audit.rake +0 -6
- data/tasks/database/annotate.rb +0 -48
- data/tasks/database/table_dependency_calculator.rb +0 -8
- data/tasks/database.rb +0 -161
- data/tasks/db.rake +0 -147
- data/tasks/development.rake +0 -52
- data/tasks/docker_database.rb +0 -26
- data/tasks/pact.rake +0 -16
- data/tasks/release.rake +0 -6
- data/tasks/rspec.rake +0 -32
- data/tasks/test_db.rake +0 -32
- data/vendor/hal-browser/.gitignore +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1634d0a3519aae8c805e0c8f13e2e132e86b623c92e019d37285b98ecd7574d
|
4
|
+
data.tar.gz: 2652bd80a29b04e222bad6ffb0513c95618f16185feb98cffc9c7bd283858b79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e3bc701ea3fe67d6ffe24330faf61b5def23d7293e2c59bfa1d4c5b8874dd3ef8b622f8adbef202bdfd784804f67a5c9efd39c79c1bba54bb52a8fe2abc7661
|
7
|
+
data.tar.gz: ab7a4c68f71251bbf36e3f58bb18267b28cc1bd72df5f3959caedd8fe1b776439b6ba25fd972f2a819ba5f0872d9861d22284da501a5d921f255aea368bedfab
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,57 @@
|
|
1
|
+
<a name="v2.91.0"></a>
|
2
|
+
### v2.91.0 (2021-11-15)
|
3
|
+
|
4
|
+
#### Features
|
5
|
+
|
6
|
+
* add environments to matrix response ([fd50f22c](/../../commit/fd50f22c))
|
7
|
+
* remove feature toggle around change to return the pact for the latest tagged version, rather than the latest pact that has a version with the tag ([fac3fc8a](/../../commit/fac3fc8a))
|
8
|
+
|
9
|
+
#### Bug Fixes
|
10
|
+
|
11
|
+
* load images from the correct path when the Pact Broker application is run from a non root context ([a268ef25](/../../commit/a268ef25))
|
12
|
+
|
13
|
+
<a name="v2.90.0"></a>
|
14
|
+
### v2.90.0 (2021-11-12)
|
15
|
+
|
16
|
+
#### Features
|
17
|
+
|
18
|
+
* do not let clean task delete currently deployed or currently released+supported versions ([b05f0b67](/../../commit/b05f0b67))
|
19
|
+
* allow webhook certificates to be configured in the pact_broker.yml file ([7c60c955](/../../commit/7c60c955))
|
20
|
+
|
21
|
+
#### Bug Fixes
|
22
|
+
|
23
|
+
* handle conflict check for pacts where the interactions are missing in one or the other ([71844f0f](/../../commit/71844f0f))
|
24
|
+
* fix error that occurs in some versions of Sqlite when running 20210702_drop_unused_columns_from_deployed_versions.rb ([0daa4459](/../../commit/0daa4459))
|
25
|
+
* correct logic when redacting database URL without a password ([30d66cf7](/../../commit/30d66cf7))
|
26
|
+
* set resolved environment for environment selectors ([f02474b7](/../../commit/f02474b7))
|
27
|
+
|
28
|
+
* **deps**
|
29
|
+
* upgrade to bootstrap v4.6.1 ([0433107c](/../../commit/0433107c))
|
30
|
+
|
31
|
+
<a name="v2.89.1"></a>
|
32
|
+
### v2.89.1 (2021-10-28)
|
33
|
+
|
34
|
+
#### Bug Fixes
|
35
|
+
|
36
|
+
* **clean**
|
37
|
+
* honour max_age when set in clean selector ([828420d4](/../../commit/828420d4))
|
38
|
+
|
39
|
+
* null safe navigation in case a branch head does not exist for a branch version ([4b259a81](/../../commit/4b259a81))
|
40
|
+
|
41
|
+
<a name="v2.89.0"></a>
|
42
|
+
### v2.89.0 (2021-10-15)
|
43
|
+
|
44
|
+
#### Features
|
45
|
+
|
46
|
+
* add applicationInstance to deployed version resource as a replacement for target ([9bfafc8a](/../../commit/9bfafc8a))
|
47
|
+
* apply allow_dangerous_contract_modification setting when publishing using the /contracts/publish endpoint ([956227fe](/../../commit/956227fe))
|
48
|
+
* add support for matchingBranch property in consumer version selectors ([48068d29](/../../commit/48068d29))
|
49
|
+
|
50
|
+
#### Bug Fixes
|
51
|
+
|
52
|
+
* set missing provider branch name parameter for contract_requiring_verification_published webhooks ([777ccdd2](/../../commit/777ccdd2))
|
53
|
+
* correct misnamed database port configuration property causing the PACT_BROKER_DATABASE_PORT not to be respected ([3d14013a](/../../commit/3d14013a))
|
54
|
+
|
1
55
|
<a name="v2.88.0"></a>
|
2
56
|
### v2.88.0 (2021-10-11)
|
3
57
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
def all_verifications_v2(connection)
|
2
|
+
# Need to fully qualify build_url because versions now has a build_url too.
|
3
|
+
# We don't use this view any more but we get an error when modifying other tables and views
|
4
|
+
# if we don't update this, so it must force some re-calculation to be done.
|
5
|
+
# See https://github.com/pact-foundation/pact_broker/issues/521
|
6
|
+
connection
|
7
|
+
.from(:verifications)
|
8
|
+
.select(
|
9
|
+
Sequel[:verifications][:id],
|
10
|
+
Sequel[:verifications][:number],
|
11
|
+
:success,
|
12
|
+
:provider_version_id,
|
13
|
+
Sequel[:v][:number].as(:provider_version_number),
|
14
|
+
Sequel[:v][:order].as(:provider_version_order),
|
15
|
+
Sequel[:verifications][:build_url],
|
16
|
+
:pact_version_id,
|
17
|
+
:execution_date,
|
18
|
+
Sequel[:verifications][:created_at],
|
19
|
+
:test_results
|
20
|
+
).join(:versions, { id: :provider_version_id }, { :table_alias => :v })
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative "../ddl_statements/all_verifications"
|
2
|
+
|
3
|
+
# Naughtily insert this migration file after the creation of 20211104_switch_integrations_and_temp_integrations.rb
|
4
|
+
# to fix the all_verifications view before
|
5
|
+
# dropping the columns in 20210702_drop_unused_columns_from_deployed_versions.rb.
|
6
|
+
# The update to all_verifications was already applied in
|
7
|
+
# 20211101_recreate_all_verifications.rb, but some versions of SQLite error
|
8
|
+
# if the view is not updated first, meaning 20210702 was never run.
|
9
|
+
# It won't matter if this update runs out of order, as long as it's after
|
10
|
+
# 20210117_add_branch_to_version.rb
|
11
|
+
Sequel.migration do
|
12
|
+
up do
|
13
|
+
create_or_replace_view(:all_verifications, all_verifications_v2(self))
|
14
|
+
end
|
15
|
+
|
16
|
+
down do
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
# Have not created indexes on the consumer_id or provider_id because the table is likely to be small
|
4
|
+
# (in the 10s or 100s) and it would probably just do a full table scan anyway.
|
5
|
+
create_table(:temp_integrations, charset: "utf8") do
|
6
|
+
primary_key :id, primary_key_constraint_name: "integrations_pkey"
|
7
|
+
foreign_key(:consumer_id, :pacticipants, null: false, on_delete: :cascade, foreign_key_constraint_name: "integrations_consumer_id_foreign_key")
|
8
|
+
foreign_key(:provider_id, :pacticipants, null: false, on_delete: :cascade, foreign_key_constraint_name: "integrations_provider_id_foreign_key")
|
9
|
+
String :consumer_name
|
10
|
+
String :provider_name
|
11
|
+
DateTime :created_at, null: false
|
12
|
+
index([:consumer_id, :provider_id], unique: true, name: "integrations_consumer_id_provider_id_unique")
|
13
|
+
end
|
14
|
+
|
15
|
+
# TODO drop these columns
|
16
|
+
# They are just for backwards compatiblity during schema migrations
|
17
|
+
# alter_table(:integrations) do
|
18
|
+
# drop_column(:consumer_name)
|
19
|
+
# drop_column(:provider_name)
|
20
|
+
# end
|
21
|
+
end
|
22
|
+
|
23
|
+
down do
|
24
|
+
drop_table(:temp_integrations)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
from(:temp_integrations).insert(
|
4
|
+
[:consumer_id, :consumer_name, :provider_id, :provider_name, :created_at],
|
5
|
+
from(:pact_publications)
|
6
|
+
.select(
|
7
|
+
:consumer_id,
|
8
|
+
Sequel[:c][:name].as(:consumer_name),
|
9
|
+
:provider_id,
|
10
|
+
Sequel[:p][:name].as(:provider_name),
|
11
|
+
Sequel[:c][:created_at]
|
12
|
+
).distinct
|
13
|
+
.join(:pacticipants, {:id => :consumer_id}, {:table_alias => :c, implicit_qualifier: :pact_publications})
|
14
|
+
.join(:pacticipants, {:id => :provider_id}, {:table_alias => :p, implicit_qualifier: :pact_publications})
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
down do
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
up do
|
3
|
+
transaction do
|
4
|
+
drop_view :integrations
|
5
|
+
rename_table :temp_integrations, :integrations
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
down do
|
10
|
+
transaction do
|
11
|
+
rename_table :integrations, :temp_integrations
|
12
|
+
create_view(:integrations,
|
13
|
+
from(:pact_publications)
|
14
|
+
.select(
|
15
|
+
:consumer_id,
|
16
|
+
Sequel[:c][:name].as(:consumer_name),
|
17
|
+
:provider_id,
|
18
|
+
Sequel[:p][:name].as(:provider_name)
|
19
|
+
).distinct
|
20
|
+
.join(:pacticipants, {:id => :consumer_id}, {:table_alias => :c, implicit_qualifier: :pact_publications})
|
21
|
+
.join(:pacticipants, {:id => :provider_id}, {:table_alias => :p, implicit_qualifier: :pact_publications})
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/docs/CONFIGURATION.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Pact Broker Configuration
|
2
2
|
|
3
3
|
|
4
|
-
<!-- This is a generated file. Please do not edit it directly. -->
|
4
|
+
<!-- This is a generated file. Please do not edit it directly. The source is https://github.com/pact-foundation/pact_broker/blob/master/docs/configuration.yml -->
|
5
5
|
|
6
6
|
The Pact Broker supports configuration via environment variables or a YAML file from version 2.87.0.1 of the Docker images.
|
7
7
|
|
@@ -392,6 +392,26 @@ Please read the [Webhook whitelists section](https://docs.pact.io/pact_broker/co
|
|
392
392
|
**Examples:** `github.com`, `10.2.3.41/24`, `/.*\\.foo\\.com$/`<br/>
|
393
393
|
**More information:** https://docs.pact.io/pact_broker/configuration/#webhook-whitelists<br/>
|
394
394
|
|
395
|
+
### webhook_certificates
|
396
|
+
|
397
|
+
A list of SSL certificate configuration objects with the keys `description`, and either `content` or `path`. These
|
398
|
+
certificates are used when a webhook needs to connect to a server that uses a self signed certificate.
|
399
|
+
|
400
|
+
Each certificate configuration item accepts a chain of certificates in PEM format - there may be multiple 'BEGIN CERTIFICATE' and 'END CERTIFICATE' in the content of each item.
|
401
|
+
|
402
|
+
When setting the content, use the syntax "content: |-" followed by a new line, and then the contents of the certificate
|
403
|
+
chain in PEM format, indented by 2 more characters.
|
404
|
+
|
405
|
+
When setting the path, the full path to the certificate file in PEM format must be specified.
|
406
|
+
|
407
|
+
The certificate configuration is not validated on startup. If any of the configured certificates cannot be loaded during the execution of a webhook, an error
|
408
|
+
will be logged, and they will be ignored. You can check if the configuration is working by testing the execution of
|
409
|
+
a webhook that connects to the server with the self signed certificate by following these instructions https://docs.pact.io/pact_broker/webhooks/debugging_webhooks#testing-webhook-execution
|
410
|
+
|
411
|
+
**YAML configuration key name:** `webhook_certificates`<br/>
|
412
|
+
**Environment variable name:** `PACT_BROKER_WEBHOOK_CERTIFICATES`<br/>
|
413
|
+
**Supported versions:** From v2.90.0<br/>
|
414
|
+
|
395
415
|
### disable_ssl_verification
|
396
416
|
|
397
417
|
If set to true, SSL verification will be disabled for the HTTP requests made by the webhooks
|
@@ -481,6 +501,16 @@ is available (do not use this for load balancing, as it makes a database connect
|
|
481
501
|
**Default:** `true`<br/>
|
482
502
|
**Allowed values:** `true`, `false`<br/>
|
483
503
|
|
504
|
+
### use_hal_browser
|
505
|
+
|
506
|
+
Whether or not to enable the embedded HAL Browser.
|
507
|
+
|
508
|
+
**YAML configuration key name:** `use_hal_browser`<br/>
|
509
|
+
**Environment variable name:** `PACT_BROKER_USE_HAL_BROWSER`<br/>
|
510
|
+
**Default:** `true`<br/>
|
511
|
+
**Allowed values:** `true`, `false`<br/>
|
512
|
+
**More information:** https://github.com/mikekelly/hal-browser<br/>
|
513
|
+
|
484
514
|
<br/>
|
485
515
|
|
486
516
|
## Domain
|
@@ -15,7 +15,7 @@ module PactBroker
|
|
15
15
|
using PactBroker::HashRefinements
|
16
16
|
using PactBroker::StringRefinements
|
17
17
|
|
18
|
-
BRANCH_KEYS = [:latest, :tag, :fallbackTag, :branch, :fallbackBranch]
|
18
|
+
BRANCH_KEYS = [:latest, :tag, :fallbackTag, :branch, :fallbackBranch, :matchingBranch]
|
19
19
|
ENVIRONMENT_KEYS = [:environment, :deployed, :released, :deployedOrReleased]
|
20
20
|
ALL_KEYS = BRANCH_KEYS + ENVIRONMENT_KEYS
|
21
21
|
|
@@ -36,6 +36,7 @@ module PactBroker
|
|
36
36
|
optional(:mainBranch).filled(included_in?: [true])
|
37
37
|
optional(:tag).filled(:str?)
|
38
38
|
optional(:branch).filled(:str?)
|
39
|
+
optional(:matchingBranch).filled(included_in?: [true])
|
39
40
|
optional(:latest).filled(included_in?: [true, false])
|
40
41
|
optional(:fallbackTag).filled(:str?)
|
41
42
|
optional(:fallbackBranch).filled(:str?)
|
@@ -65,7 +66,7 @@ module PactBroker
|
|
65
66
|
# This is a ducking joke. Need to get rid of dry-validation
|
66
67
|
if params[:consumerVersionSelectors].is_a?(Array)
|
67
68
|
errors = params[:consumerVersionSelectors].each_with_index.flat_map do | selector, index |
|
68
|
-
validate_consumer_version_selector(selector, index)
|
69
|
+
validate_consumer_version_selector(selector, index, params)
|
69
70
|
end
|
70
71
|
if errors.any?
|
71
72
|
results[:consumerVersionSelectors] ||= []
|
@@ -82,7 +83,7 @@ module PactBroker
|
|
82
83
|
# when setting the branch, it doesn't make sense to verify all pacts for a branch,
|
83
84
|
# so latest is not required, but cannot be set to false
|
84
85
|
# rubocop: disable Metrics/CyclomaticComplexity, Metrics/MethodLength
|
85
|
-
def self.validate_consumer_version_selector(selector, index)
|
86
|
+
def self.validate_consumer_version_selector(selector, index, params)
|
86
87
|
errors = []
|
87
88
|
|
88
89
|
if selector[:fallbackTag] && !selector[:latest]
|
@@ -97,17 +98,22 @@ module PactBroker
|
|
97
98
|
not_provided?(selector[:tag]) &&
|
98
99
|
not_provided?(selector[:branch]) &&
|
99
100
|
not_provided?(selector[:environment]) &&
|
101
|
+
selector[:matchingBranch] != true &&
|
100
102
|
selector[:deployed] != true &&
|
101
103
|
selector[:released] != true &&
|
102
104
|
selector[:deployedOrReleased] != true &&
|
103
105
|
selector[:latest] != true
|
104
|
-
errors << "must specify a value for environment or tag or branch, or specify mainBranch=true, latest=true, deployed=true, released=true or deployedOrReleased=true (at index #{index})"
|
106
|
+
errors << "must specify a value for environment or tag or branch, or specify mainBranch=true, matchingBranch=true, latest=true, deployed=true, released=true or deployedOrReleased=true (at index #{index})"
|
105
107
|
end
|
106
108
|
|
107
109
|
if selector[:mainBranch] && selector.slice(*ALL_KEYS - [:consumer, :mainBranch]).any?
|
108
110
|
errors << "cannot specify mainBranch=true with any other criteria apart from consumer (at index #{index})"
|
109
111
|
end
|
110
112
|
|
113
|
+
if selector[:matchingBranch] && selector.slice(*ALL_KEYS - [:consumer, :matchingBranch]).any?
|
114
|
+
errors << "cannot specify matchingBranch=true with any other criteria apart from consumer (at index #{index})"
|
115
|
+
end
|
116
|
+
|
111
117
|
if selector[:tag] && selector[:branch]
|
112
118
|
errors << "cannot specify both a tag and a branch (at index #{index})"
|
113
119
|
end
|
@@ -136,6 +142,10 @@ module PactBroker
|
|
136
142
|
errors << "cannot specify both released=true and deployedOrReleased=true (at index #{index})"
|
137
143
|
end
|
138
144
|
|
145
|
+
if selector[:matchingBranch] && not_provided?(params[:providerVersionBranch])
|
146
|
+
errors << "the providerVersionBranch must be specified when the selector matchingBranch=true is used (at index #{index})"
|
147
|
+
end
|
148
|
+
|
139
149
|
non_environment_fields = selector.slice(*BRANCH_KEYS).keys.sort
|
140
150
|
environment_related_fields = selector.slice(*ENVIRONMENT_KEYS).keys.sort
|
141
151
|
|
@@ -9,7 +9,8 @@ module PactBroker
|
|
9
9
|
class DeployedVersionDecorator < BaseDecorator
|
10
10
|
property :uuid
|
11
11
|
property :currently_deployed, camelize: true
|
12
|
-
property :target, camelize: true
|
12
|
+
property :target, camelize: true # deprecated
|
13
|
+
property :applicationInstance, getter: lambda { |_| target }
|
13
14
|
include Timestamps
|
14
15
|
property :undeployedAt, getter: lambda { |_| undeployed_at ? FormatDateTime.call(undeployed_at) : nil }, writeable: false
|
15
16
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative "base_decorator"
|
2
|
+
require_relative "timestamps"
|
3
|
+
|
4
|
+
module PactBroker
|
5
|
+
module Api
|
6
|
+
module Decorators
|
7
|
+
class EmbeddedEnvironmentDecorator < BaseDecorator
|
8
|
+
property :uuid, writeable: false
|
9
|
+
property :name
|
10
|
+
property :display_name, camelize: true
|
11
|
+
property :production
|
12
|
+
|
13
|
+
include Timestamps
|
14
|
+
|
15
|
+
link :self do | user_options |
|
16
|
+
{
|
17
|
+
title: "Environment",
|
18
|
+
name: represented.name,
|
19
|
+
href: environment_url(represented, user_options.fetch(:base_url))
|
20
|
+
}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -3,6 +3,7 @@ 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
5
|
require "pact_broker/api/decorators/embedded_branch_version_decorator"
|
6
|
+
require "pact_broker/api/decorators/embedded_environment_decorator"
|
6
7
|
|
7
8
|
module PactBroker
|
8
9
|
module Api
|
@@ -85,7 +86,9 @@ module PactBroker
|
|
85
86
|
version: {
|
86
87
|
number: line.consumer_version_number,
|
87
88
|
branch: line.consumer_version_branch_versions.last&.branch_name,
|
88
|
-
branches: branches(line.consumer_version_branch_versions, base_url),
|
89
|
+
branches: branches(line.consumer_version_branch_versions, base_url), # TODO delete this
|
90
|
+
branchVersions: branches(line.consumer_version_branch_versions, base_url),
|
91
|
+
environments: environments(line.consumer_version_deployed_versions, line.consumer_version_released_versions, base_url),
|
89
92
|
_links: {
|
90
93
|
self: {
|
91
94
|
href: version_url(base_url, consumer_version)
|
@@ -107,6 +110,16 @@ module PactBroker
|
|
107
110
|
end
|
108
111
|
end
|
109
112
|
|
113
|
+
def environments(deployed_versions, released_versions, base_url)
|
114
|
+
(deployed_versions + released_versions).sort_by(&:created_at).collect(&:environment).uniq.collect do | environment |
|
115
|
+
environment_decorator_class.new(environment).to_hash(user_options: { base_url: base_url })
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def environment_decorator_class
|
120
|
+
PactBroker::Api::Decorators::EmbeddedEnvironmentDecorator
|
121
|
+
end
|
122
|
+
|
110
123
|
def tags(tags, base_url)
|
111
124
|
tags.sort_by(&:created_at).collect do | tag |
|
112
125
|
{
|
@@ -136,7 +149,9 @@ module PactBroker
|
|
136
149
|
hash[:version] = {
|
137
150
|
number: line.provider_version_number,
|
138
151
|
branch: line.provider_version_branch_versions.last&.branch_name,
|
139
|
-
branches: branches(line.provider_version_branch_versions, base_url),
|
152
|
+
branches: branches(line.provider_version_branch_versions, base_url), # TODO delete this
|
153
|
+
branchVersions: branches(line.provider_version_branch_versions, base_url),
|
154
|
+
environments: environments(line.provider_version_deployed_versions, line.provider_version_released_versions, base_url),
|
140
155
|
_links: {
|
141
156
|
self: {
|
142
157
|
href: version_url(base_url, provider_version)
|
@@ -21,6 +21,10 @@ module PactBroker
|
|
21
21
|
represented.branch = fragment
|
22
22
|
represented.latest = true
|
23
23
|
}
|
24
|
+
property :matching_branch, setter: -> (fragment:, represented:, **) {
|
25
|
+
represented.matching_branch = fragment
|
26
|
+
represented.latest = true
|
27
|
+
}
|
24
28
|
property :latest,
|
25
29
|
setter: ->(fragment:, represented:, **) {
|
26
30
|
represented.latest = (fragment == "true" || fragment == true)
|
@@ -53,6 +57,9 @@ module PactBroker
|
|
53
57
|
result = super(hash&.snakecase_keys)
|
54
58
|
|
55
59
|
result.consumer_version_selectors = split_out_deployed_or_released_selectors(result.consumer_version_selectors)
|
60
|
+
if result.provider_version_branch
|
61
|
+
result.consumer_version_selectors = set_branch_for_matching_branch_selectors(result.consumer_version_selectors, result.provider_version_branch)
|
62
|
+
end
|
56
63
|
|
57
64
|
if result.consumer_version_selectors && !result.consumer_version_selectors.is_a?(PactBroker::Pacts::Selectors)
|
58
65
|
result.consumer_version_selectors = PactBroker::Pacts::Selectors.new(result.consumer_version_selectors)
|
@@ -62,6 +69,17 @@ module PactBroker
|
|
62
69
|
|
63
70
|
private
|
64
71
|
|
72
|
+
def set_branch_for_matching_branch_selectors(consumer_version_selectors, provider_version_branch)
|
73
|
+
consumer_version_selectors.collect do | consumer_version_selector |
|
74
|
+
if consumer_version_selector[:matching_branch]
|
75
|
+
consumer_version_selector[:branch] = provider_version_branch
|
76
|
+
consumer_version_selector
|
77
|
+
else
|
78
|
+
consumer_version_selector
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
65
83
|
def split_out_deployed_or_released_selectors(consumer_version_selectors)
|
66
84
|
consumer_version_selectors.flat_map do | selector |
|
67
85
|
if selector.currently_deployed && selector.currently_supported
|
@@ -7,7 +7,9 @@ module PactBroker
|
|
7
7
|
class VersionDecorator < BaseDecorator
|
8
8
|
|
9
9
|
property :number, writeable: false
|
10
|
+
# TODO delete branches in preference for branchVersions
|
10
11
|
collection :branch_versions, as: :branches, embedded: true, writeable: false, extend: PactBroker::Api::Decorators::EmbeddedBranchVersionDecorator
|
12
|
+
collection :branch_versions, as: :branchVersions, embedded: true, writeable: false, extend: PactBroker::Api::Decorators::EmbeddedBranchVersionDecorator
|
11
13
|
property :build_url, as: :buildUrl
|
12
14
|
|
13
15
|
collection :tags, embedded: true, :extend => PactBroker::Api::Decorators::EmbeddedTagDecorator, class: OpenStruct
|
@@ -44,6 +44,10 @@ module PactBroker
|
|
44
44
|
<link rel='stylesheet' type='text/css' href='#{base_url}/stylesheets/material-menu.css'>
|
45
45
|
<link rel='stylesheet' type='text/css' href='#{base_url}/stylesheets/pact.css'>
|
46
46
|
<link rel='stylesheet' type='text/css' href='#{base_url}/stylesheets/jquery-confirm.min.css'>
|
47
|
+
<script type='text/javascript'>
|
48
|
+
const BASE_URL = '#{base_url}';
|
49
|
+
</script>
|
50
|
+
<script src='#{base_url}/javascripts/set-css-asset-base-url.js'></script>
|
47
51
|
<script src='#{base_url}/javascripts/highlight.pack.js'></script>
|
48
52
|
<script src='#{base_url}/javascripts/jquery-3.5.1.min.js'></script>
|
49
53
|
<script src='#{base_url}/js/bootstrap.min.js'></script>
|
@@ -60,7 +60,9 @@ module PactBroker
|
|
60
60
|
query = Rack::Utils.parse_query(request.env["QUERY_STRING"])
|
61
61
|
q = {}
|
62
62
|
q[:pacticipant_name] = request.query["pacticipant"] if query["pacticipant"]
|
63
|
-
if query["
|
63
|
+
if query["applicationInstance"]
|
64
|
+
q[:target] = query["applicationInstance"].blank? ? nil : query["applicationInstance"]
|
65
|
+
elsif query["target"]
|
64
66
|
q[:target] = query["target"].blank? ? nil : query["target"]
|
65
67
|
end
|
66
68
|
q
|
@@ -30,7 +30,7 @@ module PactBroker
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def from_json
|
33
|
-
@deployed_version = deployed_version_service.find_or_create(deployed_version_uuid, version, environment,
|
33
|
+
@deployed_version = deployed_version_service.find_or_create(deployed_version_uuid, version, environment, application_instance)
|
34
34
|
response.headers["Location"] = deployed_version_url(deployed_version, base_url)
|
35
35
|
response.body = decorator_class(:deployed_version_decorator).new(deployed_version).to_json(decorator_options)
|
36
36
|
end
|
@@ -72,8 +72,9 @@ module PactBroker
|
|
72
72
|
end
|
73
73
|
|
74
74
|
# TODO disallow an empty string because that is used as a NULL indicator in the database
|
75
|
-
def
|
76
|
-
params(default: {})
|
75
|
+
def application_instance
|
76
|
+
parameters = params(default: {})
|
77
|
+
(parameters[:applicationInstance] || parameters[:target])&.to_s
|
77
78
|
end
|
78
79
|
|
79
80
|
def title
|
@@ -110,7 +110,7 @@ module PactBroker
|
|
110
110
|
|
111
111
|
def disallowed_modification?
|
112
112
|
if request.really_put? && pact_service.disallowed_modification?(pact, pact_params.json_content)
|
113
|
-
message_params = { consumer_name: pact_params.consumer_name, consumer_version_number: pact_params.consumer_version_number }
|
113
|
+
message_params = { consumer_name: pact_params.consumer_name, consumer_version_number: pact_params.consumer_version_number, provider_name: pact_params.provider_name }
|
114
114
|
set_json_error_message(message("errors.validation.pact_content_modification_not_allowed", message_params))
|
115
115
|
true
|
116
116
|
else
|
@@ -31,11 +31,13 @@ module PactBroker
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def process_post
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
if conflict_notices.any?
|
35
|
+
set_conflict_response
|
36
|
+
409
|
37
|
+
else
|
38
|
+
publish_contracts
|
39
|
+
true
|
37
40
|
end
|
38
|
-
true
|
39
41
|
end
|
40
42
|
|
41
43
|
def policy_name
|
@@ -66,15 +68,53 @@ module PactBroker
|
|
66
68
|
end
|
67
69
|
|
68
70
|
def schema
|
69
|
-
|
71
|
+
api_contract_class(:publish_contracts_schema)
|
70
72
|
end
|
71
73
|
|
72
74
|
def decode_and_parse_content(contract)
|
73
|
-
contract["decodedContent"] =
|
75
|
+
contract["decodedContent"] = base64_decode(contract["content"])
|
74
76
|
if contract["decodedContent"]
|
75
|
-
contract["
|
77
|
+
if contract["contentType"]&.include?("json")
|
78
|
+
contract["decodedParsedContent"] = parse_json(contract["decodedContent"])
|
79
|
+
elsif contract["contentType"]&.include?("yml")
|
80
|
+
contract["decodedParsedContent"] = parse_yaml(contract["decodedContent"])
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def publish_contracts
|
86
|
+
handle_webhook_events(consumer_version_branch: parsed_contracts.branch, build_url: parsed_contracts.build_url) do
|
87
|
+
results = contract_service.publish(parsed_contracts, base_url: base_url)
|
88
|
+
response.body = decorator_class(:publish_contracts_results_decorator).new(results).to_json(decorator_options)
|
76
89
|
end
|
77
90
|
end
|
91
|
+
|
92
|
+
def set_conflict_response
|
93
|
+
response.body = {
|
94
|
+
notices: conflict_notices.collect(&:to_h),
|
95
|
+
errors: {
|
96
|
+
contracts: conflict_notices.select(&:error?).collect(&:text)
|
97
|
+
}
|
98
|
+
}.to_json
|
99
|
+
response.headers["Content-Type"] = "application/json;charset=utf-8"
|
100
|
+
end
|
101
|
+
|
102
|
+
def conflict_notices
|
103
|
+
@conflict_notices ||= contract_service.conflict_notices(parsed_contracts)
|
104
|
+
end
|
105
|
+
|
106
|
+
def base64_decode(content)
|
107
|
+
Base64.strict_decode64(content) rescue nil
|
108
|
+
end
|
109
|
+
|
110
|
+
# TODO put this somewhere shareable
|
111
|
+
def parse_yaml(content)
|
112
|
+
YAML.safe_load(content, [Time, Date, DateTime]) rescue nil
|
113
|
+
end
|
114
|
+
|
115
|
+
def parse_json(content)
|
116
|
+
PactBroker::Pacts::Parse.call(content) rescue nil
|
117
|
+
end
|
78
118
|
end
|
79
119
|
end
|
80
120
|
end
|
data/lib/pact_broker/app.rb
CHANGED
@@ -46,7 +46,7 @@ module PactBroker
|
|
46
46
|
# Can only be required after database connection has been made because the decorators rely on the Sequel models
|
47
47
|
@create_pact_broker_api_block = ->() { require "pact_broker/api"; PactBroker::API }
|
48
48
|
@configuration = PactBroker.configuration
|
49
|
-
yield configuration
|
49
|
+
yield configuration if block_given?
|
50
50
|
post_configure
|
51
51
|
prepare_database
|
52
52
|
load_configuration_from_database
|
@@ -25,9 +25,12 @@ module PactBroker
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def find_all_certificates
|
28
|
+
certificates_from_database + certificates_from_config
|
29
|
+
end
|
30
|
+
|
31
|
+
def certificates_from_database
|
28
32
|
Certificate.collect do | certificate |
|
29
|
-
|
30
|
-
cert_arr.collect do |c|
|
33
|
+
split_certificate_chain(certificate.content).collect do |c|
|
31
34
|
begin
|
32
35
|
OpenSSL::X509::Certificate.new(c)
|
33
36
|
rescue StandardError => e
|
@@ -37,6 +40,33 @@ module PactBroker
|
|
37
40
|
end
|
38
41
|
end.flatten.compact
|
39
42
|
end
|
43
|
+
|
44
|
+
def certificates_from_config
|
45
|
+
PactBroker.configuration.webhook_certificates.select{| c| c[:content] || c[:path] }.collect do | certificate_config, i |
|
46
|
+
load_certificate_config(certificate_config, i)
|
47
|
+
end.flatten.compact
|
48
|
+
end
|
49
|
+
|
50
|
+
def load_certificate_config(certificate_config, i)
|
51
|
+
begin
|
52
|
+
content = certificate_config[:content] || File.read(certificate_config[:path])
|
53
|
+
split_certificate_chain(content).collect do |c|
|
54
|
+
begin
|
55
|
+
OpenSSL::X509::Certificate.new(c)
|
56
|
+
rescue StandardError => e
|
57
|
+
logger.warn("Error creating certificate object from webhook_certificate at index #{i} with description #{certificate_config[:description]}", e)
|
58
|
+
nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
rescue StandardError => e
|
62
|
+
logger.warn("Error loading webhook_certificate at index #{i} with description #{certificate_config[:description]}", e)
|
63
|
+
nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def split_certificate_chain(content)
|
68
|
+
content.split(/(-----END [^\-]+-----)/).each_slice(2).map(&:join).map(&:strip).select{|s| !s.empty?}
|
69
|
+
end
|
40
70
|
end
|
41
71
|
end
|
42
72
|
end
|