pact_broker 2.89.1 → 2.90.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 +18 -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 +30 -0
- 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_logging_methods.rb +6 -2
- 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/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 +1 -2
- data/lib/pact_broker/pacticipants/repository.rb +5 -0
- data/lib/pact_broker/pacticipants/service.rb +1 -1
- data/lib/pact_broker/pacts/merger.rb +8 -4
- 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/repositories.rb +5 -0
- data/lib/pact_broker/tasks/clean_task.rb +11 -0
- data/lib/pact_broker/test/test_data_builder.rb +6 -0
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/webhooks/pact_and_verification_parameters.rb +1 -2
- 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/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
- metadata +13 -1067
- 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 -23
- 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/github-issues/add-branch-support/issue-text.txt +0 -7
- data/script/github-issues/add-branch-support/issues.txt +0 -0
- data/script/github-issues/add-branch-support/raise-issue-in-client-repos.sh +0 -10
- data/script/github-issues/add-branch-support-for-provider-versions/issue-text.txt +0 -9
- data/script/github-issues/add-branch-support-for-provider-versions/issues.txt +0 -6
- data/script/github-issues/add-branch-support-for-provider-versions/raise-issue-in-client-repos.sh +0 -10
- data/script/github-issues/branch-consumer-version-selector/issue-text.txt +0 -52
- data/script/github-issues/branch-consumer-version-selector/issues.txt +0 -9
- data/script/github-issues/branch-consumer-version-selector/raise-issue-in-client-repos.sh +0 -10
- data/script/github-issues/consumer-version-selectors-docs/issue-text.txt +0 -11
- data/script/github-issues/consumer-version-selectors-docs/issues.txt +0 -6
- data/script/github-issues/consumer-version-selectors-docs/raise-issue-in-client-repos.sh +0 -10
- data/script/github-issues/deployed-and-released-selectors-docs/issue-text.txt +0 -26
- data/script/github-issues/deployed-and-released-selectors-docs/issues.txt +0 -9
- data/script/github-issues/deployed-and-released-selectors-docs/raise-issue-in-client-repos.sh +0 -10
- data/script/github-issues/include-pending-by-default/issue-text.txt +0 -5
- data/script/github-issues/include-pending-by-default/issues.txt +0 -10
- data/script/github-issues/include-pending-by-default/raise-issue-in-client-repos.sh +0 -10
- data/script/import-pg-database.sh +0 -5
- data/script/insert-self-signed-certificate-from-url.rb +0 -35
- 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 -76
- 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 -61
- 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 -106
- 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 -87
- data/spec/lib/pact_broker/api/contracts/pacts_for_verification_json_query_schema_spec.rb +0 -358
- 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 -175
- 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 -193
- 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 -266
- 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 -461
- 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
data/.rubocop.yml
DELETED
@@ -1,314 +0,0 @@
|
|
1
|
-
require:
|
2
|
-
- rubocop-performance
|
3
|
-
|
4
|
-
AllCops:
|
5
|
-
DisabledByDefault: true
|
6
|
-
|
7
|
-
Lint/AmbiguousOperator:
|
8
|
-
Description: >-
|
9
|
-
Checks for ambiguous operators in the first argument of a
|
10
|
-
method invocation without parentheses.
|
11
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-as-args'
|
12
|
-
Enabled: true
|
13
|
-
|
14
|
-
Lint/AmbiguousRegexpLiteral:
|
15
|
-
Description: >-
|
16
|
-
Checks for ambiguous regexp literals in the first argument of
|
17
|
-
a method invocation without parenthesis.
|
18
|
-
Enabled: true
|
19
|
-
|
20
|
-
Layout/IndentationWidth:
|
21
|
-
Enabled: true
|
22
|
-
|
23
|
-
Lint/Syntax:
|
24
|
-
Enabled: true
|
25
|
-
|
26
|
-
Lint/AssignmentInCondition:
|
27
|
-
Description: "Don't use assignment in conditions."
|
28
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition'
|
29
|
-
Enabled: true
|
30
|
-
|
31
|
-
Layout/BlockAlignment:
|
32
|
-
Description: 'Align block ends correctly.'
|
33
|
-
Enabled: true
|
34
|
-
|
35
|
-
Lint/CircularArgumentReference:
|
36
|
-
Description: "Don't refer to the keyword argument in the default value."
|
37
|
-
Enabled: true
|
38
|
-
|
39
|
-
Layout/ConditionPosition:
|
40
|
-
Description: >-
|
41
|
-
Checks for condition placed in a confusing position relative to
|
42
|
-
the keyword.
|
43
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#same-line-condition'
|
44
|
-
Enabled: true
|
45
|
-
|
46
|
-
Lint/Debugger:
|
47
|
-
Description: 'Check for debugger calls.'
|
48
|
-
Enabled: true
|
49
|
-
|
50
|
-
Layout/DefEndAlignment:
|
51
|
-
Description: 'Align ends corresponding to defs correctly.'
|
52
|
-
Enabled: true
|
53
|
-
|
54
|
-
Lint/DeprecatedClassMethods:
|
55
|
-
Description: 'Check for deprecated class method calls.'
|
56
|
-
Enabled: true
|
57
|
-
|
58
|
-
Lint/DuplicateMethods:
|
59
|
-
Description: 'Check for duplicate methods calls.'
|
60
|
-
Enabled: true
|
61
|
-
|
62
|
-
Lint/EachWithObjectArgument:
|
63
|
-
Description: 'Check for immutable argument given to each_with_object.'
|
64
|
-
Enabled: true
|
65
|
-
|
66
|
-
Lint/ElseLayout:
|
67
|
-
Description: 'Check for odd code arrangement in an else block.'
|
68
|
-
Enabled: true
|
69
|
-
|
70
|
-
Lint/EmptyEnsure:
|
71
|
-
Description: 'Checks for empty ensure block.'
|
72
|
-
Enabled: true
|
73
|
-
|
74
|
-
Lint/EmptyInterpolation:
|
75
|
-
Description: 'Checks for empty string interpolation.'
|
76
|
-
Enabled: true
|
77
|
-
|
78
|
-
Layout/EndAlignment:
|
79
|
-
Description: 'Align ends correctly.'
|
80
|
-
Enabled: true
|
81
|
-
|
82
|
-
Lint/EnsureReturn:
|
83
|
-
Description: 'Do not use return in an ensure block.'
|
84
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-return-ensure'
|
85
|
-
Enabled: true
|
86
|
-
|
87
|
-
Security/Eval:
|
88
|
-
Description: 'The use of eval represents a serious security risk.'
|
89
|
-
Enabled: true
|
90
|
-
|
91
|
-
Lint/FormatParameterMismatch:
|
92
|
-
Description: 'The number of parameters to format/sprint must match the fields.'
|
93
|
-
Enabled: true
|
94
|
-
|
95
|
-
Lint/SuppressedException:
|
96
|
-
Description: "Don't suppress exception."
|
97
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions'
|
98
|
-
Enabled: true
|
99
|
-
|
100
|
-
Lint/LiteralAsCondition:
|
101
|
-
Description: 'Checks of literals used in conditions.'
|
102
|
-
Enabled: true
|
103
|
-
|
104
|
-
Lint/LiteralInInterpolation:
|
105
|
-
Description: 'Checks for literals used in interpolation.'
|
106
|
-
Enabled: true
|
107
|
-
|
108
|
-
Lint/Loop:
|
109
|
-
Description: >-
|
110
|
-
Use Kernel#loop with break rather than begin/end/until or
|
111
|
-
begin/end/while for post-loop tests.
|
112
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#loop-with-break'
|
113
|
-
Enabled: true
|
114
|
-
|
115
|
-
Lint/NestedMethodDefinition:
|
116
|
-
Description: 'Do not use nested method definitions.'
|
117
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-methods'
|
118
|
-
Enabled: true
|
119
|
-
|
120
|
-
Lint/NonLocalExitFromIterator:
|
121
|
-
Description: 'Do not use return in iterator to cause non-local exit.'
|
122
|
-
Enabled: true
|
123
|
-
|
124
|
-
Lint/ParenthesesAsGroupedExpression:
|
125
|
-
Description: >-
|
126
|
-
Checks for method calls with a space before the opening
|
127
|
-
parenthesis.
|
128
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-no-spaces'
|
129
|
-
Enabled: true
|
130
|
-
|
131
|
-
Lint/RequireParentheses:
|
132
|
-
Description: >-
|
133
|
-
Use parentheses in the method call to avoid confusion
|
134
|
-
about precedence.
|
135
|
-
Enabled: true
|
136
|
-
|
137
|
-
Lint/RescueException:
|
138
|
-
Description: 'Avoid rescuing the Exception class.'
|
139
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-blind-rescues'
|
140
|
-
Enabled: true
|
141
|
-
|
142
|
-
Lint/ShadowingOuterLocalVariable:
|
143
|
-
Description: >-
|
144
|
-
Do not use the same name as outer local variable
|
145
|
-
for block arguments or block local variables.
|
146
|
-
Enabled: true
|
147
|
-
|
148
|
-
Lint/RedundantStringCoercion:
|
149
|
-
Description: 'Checks for Object#to_s usage in string interpolation.'
|
150
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-to-s'
|
151
|
-
Enabled: true
|
152
|
-
|
153
|
-
Lint/UnderscorePrefixedVariableName:
|
154
|
-
Description: 'Do not use prefix `_` for a variable that is used.'
|
155
|
-
Enabled: true
|
156
|
-
|
157
|
-
Lint/RedundantCopDisableDirective:
|
158
|
-
Description: >-
|
159
|
-
Checks for rubocop:disable comments that can be removed.
|
160
|
-
Note: this cop is not disabled when disabling all cops.
|
161
|
-
It must be explicitly disabled.
|
162
|
-
Enabled: true
|
163
|
-
|
164
|
-
Lint/UnusedBlockArgument:
|
165
|
-
Description: 'Checks for unused block arguments.'
|
166
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars'
|
167
|
-
Enabled: true
|
168
|
-
|
169
|
-
Lint/UnusedMethodArgument:
|
170
|
-
Description: 'Checks for unused method arguments.'
|
171
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars'
|
172
|
-
Enabled: true
|
173
|
-
|
174
|
-
Lint/UnreachableCode:
|
175
|
-
Description: 'Unreachable code.'
|
176
|
-
Enabled: true
|
177
|
-
|
178
|
-
Lint/UselessAccessModifier:
|
179
|
-
Description: 'Checks for useless access modifiers.'
|
180
|
-
Enabled: true
|
181
|
-
|
182
|
-
Lint/UselessAssignment:
|
183
|
-
Description: 'Checks for useless assignment to a local variable.'
|
184
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars'
|
185
|
-
Enabled: true
|
186
|
-
|
187
|
-
Lint/BinaryOperatorWithIdenticalOperands:
|
188
|
-
Description: 'Checks for comparison of something with itself.'
|
189
|
-
Enabled: true
|
190
|
-
|
191
|
-
Lint/UselessElseWithoutRescue:
|
192
|
-
Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
|
193
|
-
Enabled: true
|
194
|
-
|
195
|
-
Lint/UselessSetterCall:
|
196
|
-
Description: 'Checks for useless setter call to a local variable.'
|
197
|
-
Enabled: true
|
198
|
-
|
199
|
-
Lint/Void:
|
200
|
-
Description: 'Possible use of operator/literal/variable in void context.'
|
201
|
-
Enabled: true
|
202
|
-
|
203
|
-
###################### Metrics ####################################
|
204
|
-
|
205
|
-
Metrics/BlockNesting:
|
206
|
-
Description: 'Avoid excessive block nesting'
|
207
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count'
|
208
|
-
Enabled: true
|
209
|
-
Max: 4
|
210
|
-
|
211
|
-
Metrics/ClassLength:
|
212
|
-
Description: 'Avoid classes longer than 260 lines of code.'
|
213
|
-
Enabled: true
|
214
|
-
Max: 260
|
215
|
-
Exclude:
|
216
|
-
- lib/pact_broker/test/*.rb
|
217
|
-
|
218
|
-
Metrics/CyclomaticComplexity:
|
219
|
-
Description: >-
|
220
|
-
A complexity metric that is strongly correlated to the number
|
221
|
-
of test cases needed to validate a method.
|
222
|
-
Enabled: true
|
223
|
-
Exclude:
|
224
|
-
- ./lib/pact_broker/ui/app.rb
|
225
|
-
|
226
|
-
Metrics/MethodLength:
|
227
|
-
Description: 'Avoid methods longer than 30 lines of code.'
|
228
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#short-methods'
|
229
|
-
Enabled: true
|
230
|
-
Max: 30
|
231
|
-
Exclude:
|
232
|
-
- ./lib/pact_broker/ui/app.rb
|
233
|
-
|
234
|
-
Metrics/ModuleLength:
|
235
|
-
Description: 'Avoid modules longer than 250 lines of code.'
|
236
|
-
Enabled: true
|
237
|
-
Max: 250
|
238
|
-
Exclude:
|
239
|
-
- spec/**/*.rb
|
240
|
-
- lib/pact_broker/api/pact_broker_urls.rb
|
241
|
-
|
242
|
-
Metrics/ParameterLists:
|
243
|
-
Description: 'Avoid parameter lists longer than three or four parameters.'
|
244
|
-
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#too-many-params'
|
245
|
-
Enabled: true
|
246
|
-
Exclude:
|
247
|
-
- lib/pact_broker/test/*.rb
|
248
|
-
|
249
|
-
##################### Performance #############################
|
250
|
-
|
251
|
-
Performance/Count:
|
252
|
-
Description: >-
|
253
|
-
Use `count` instead of `select...size`, `reject...size`,
|
254
|
-
`select...count`, `reject...count`, `select...length`,
|
255
|
-
and `reject...length`.
|
256
|
-
Enabled: true
|
257
|
-
|
258
|
-
Performance/Detect:
|
259
|
-
Description: >-
|
260
|
-
Use `detect` instead of `select.first`, `find_all.first`,
|
261
|
-
`select.last`, and `find_all.last`.
|
262
|
-
Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code'
|
263
|
-
Enabled: true
|
264
|
-
|
265
|
-
Performance/FlatMap:
|
266
|
-
Description: >-
|
267
|
-
Use `Enumerable#flat_map`
|
268
|
-
instead of `Enumerable#map...Array#flatten(1)`
|
269
|
-
or `Enumberable#collect..Array#flatten(1)`
|
270
|
-
Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code'
|
271
|
-
Enabled: true
|
272
|
-
EnabledForFlattenWithoutParams: false
|
273
|
-
# If enabled, this cop will warn about usages of
|
274
|
-
# `flatten` being called without any parameters.
|
275
|
-
# This can be dangerous since `flat_map` will only flatten 1 level, and
|
276
|
-
# `flatten` without any parameters can flatten multiple levels.
|
277
|
-
|
278
|
-
Performance/ReverseEach:
|
279
|
-
Description: 'Use `reverse_each` instead of `reverse.each`.'
|
280
|
-
Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code'
|
281
|
-
Enabled: true
|
282
|
-
|
283
|
-
Style/Sample:
|
284
|
-
Description: >-
|
285
|
-
Use `sample` instead of `shuffle.first`,
|
286
|
-
`shuffle.last`, and `shuffle[Fixnum]`.
|
287
|
-
Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code'
|
288
|
-
Enabled: true
|
289
|
-
|
290
|
-
Style/StringLiterals:
|
291
|
-
Description: Checks if uses of quotes match the configured preference.
|
292
|
-
Enabled: true
|
293
|
-
EnforcedStyle: double_quotes
|
294
|
-
|
295
|
-
Performance/Size:
|
296
|
-
Description: >-
|
297
|
-
Use `size` instead of `count` for counting
|
298
|
-
the number of elements in `Array` and `Hash`.
|
299
|
-
Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code'
|
300
|
-
Enabled: true
|
301
|
-
|
302
|
-
Performance/StringReplacement:
|
303
|
-
Description: >-
|
304
|
-
Use `tr` instead of `gsub` when you are replacing the same
|
305
|
-
number of characters. Use `delete` instead of `gsub` when
|
306
|
-
you are deleting characters.
|
307
|
-
Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code'
|
308
|
-
Enabled: true
|
309
|
-
|
310
|
-
Layout/SpaceBeforeFirstArg:
|
311
|
-
Description: >-
|
312
|
-
Checks that exactly one space is used between a method name
|
313
|
-
and the first argument for method calls without parentheses.
|
314
|
-
Enabled: true
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.7.3
|
data/CODE_OF_CONDUCT.md
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
# Contributor Covenant Code of Conduct
|
2
|
-
|
3
|
-
## Our Pledge
|
4
|
-
|
5
|
-
In the interest of fostering an open and welcoming environment, we as
|
6
|
-
contributors and maintainers pledge to making participation in our project and
|
7
|
-
our community a harassment-free experience for everyone, regardless of age, body
|
8
|
-
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
9
|
-
level of experience, education, socio-economic status, nationality, personal
|
10
|
-
appearance, race, religion, or sexual identity and orientation.
|
11
|
-
|
12
|
-
## Our Standards
|
13
|
-
|
14
|
-
Examples of behavior that contributes to creating a positive environment
|
15
|
-
include:
|
16
|
-
|
17
|
-
* Using welcoming and inclusive language
|
18
|
-
* Being respectful of differing viewpoints and experiences
|
19
|
-
* Gracefully accepting constructive criticism
|
20
|
-
* Focusing on what is best for the community
|
21
|
-
* Showing empathy towards other community members
|
22
|
-
|
23
|
-
Examples of unacceptable behavior by participants include:
|
24
|
-
|
25
|
-
* The use of sexualized language or imagery and unwelcome sexual attention or
|
26
|
-
advances
|
27
|
-
* Trolling, insulting/derogatory comments, and personal or political attacks
|
28
|
-
* Public or private harassment
|
29
|
-
* Publishing others' private information, such as a physical or electronic
|
30
|
-
address, without explicit permission
|
31
|
-
* Other conduct which could reasonably be considered inappropriate in a
|
32
|
-
professional setting
|
33
|
-
|
34
|
-
## Our Responsibilities
|
35
|
-
|
36
|
-
Project maintainers are responsible for clarifying the standards of acceptable
|
37
|
-
behavior and are expected to take appropriate and fair corrective action in
|
38
|
-
response to any instances of unacceptable behavior.
|
39
|
-
|
40
|
-
Project maintainers have the right and responsibility to remove, edit, or
|
41
|
-
reject comments, commits, code, wiki edits, issues, and other contributions
|
42
|
-
that are not aligned to this Code of Conduct, or to ban temporarily or
|
43
|
-
permanently any contributor for other behaviors that they deem inappropriate,
|
44
|
-
threatening, offensive, or harmful.
|
45
|
-
|
46
|
-
## Scope
|
47
|
-
|
48
|
-
This Code of Conduct applies both within project spaces and in public spaces
|
49
|
-
when an individual is representing the project or its community. Examples of
|
50
|
-
representing a project or community include using an official project e-mail
|
51
|
-
address, posting via an official social media account, or acting as an appointed
|
52
|
-
representative at an online or offline event. Representation of a project may be
|
53
|
-
further defined and clarified by project maintainers.
|
54
|
-
|
55
|
-
## Enforcement
|
56
|
-
|
57
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
-
reported by contacting the project team at pact-support@googlegroups.com. All
|
59
|
-
complaints will be reviewed and investigated and will result in a response that
|
60
|
-
is deemed necessary and appropriate to the circumstances. The project team is
|
61
|
-
obligated to maintain confidentiality with regard to the reporter of an incident.
|
62
|
-
Further details of specific enforcement policies may be posted separately.
|
63
|
-
|
64
|
-
Project maintainers who do not follow or enforce the Code of Conduct in good
|
65
|
-
faith may face temporary or permanent repercussions as determined by other
|
66
|
-
members of the project's leadership.
|
67
|
-
|
68
|
-
## Attribution
|
69
|
-
|
70
|
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
71
|
-
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
72
|
-
|
73
|
-
[homepage]: https://www.contributor-covenant.org
|
74
|
-
|
75
|
-
For answers to common questions about this code of conduct, see
|
76
|
-
https://www.contributor-covenant.org/faq
|
data/CONTRIBUTING.md
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# Raising issues
|
2
|
-
|
3
|
-
Before raising an issue, make sure you have checked the [wiki] to see if an answer is provided there.
|
4
|
-
There may also be an answer to your question on [stackoverflow].
|
5
|
-
|
6
|
-
Please provide the following information with your issue to enable us to respond as quickly as possible.
|
7
|
-
|
8
|
-
* The relevant versions of the gems or packages you are using.
|
9
|
-
* The steps to recreate your issue.
|
10
|
-
* An executable code example where possible.
|
11
|
-
* Details of the environment the Pact Broker is deployed in (eg. docker, AWS, local machine)
|
12
|
-
|
13
|
-
# Pull requests
|
14
|
-
|
15
|
-
* Write tests for any changes
|
16
|
-
* Follow existing code style and conventions
|
17
|
-
* Separate unrelated changes into multiple pull requests
|
18
|
-
* [Squash your commits][squash] into one commit before submitting your PR.
|
19
|
-
* Use [semantic commit messages][semantic-commit-messages] so that your changes will show up correctly in the generated change log.
|
20
|
-
|
21
|
-
* For bigger changes, make sure you start a discussion first by creating an issue and explaining the intended change
|
22
|
-
|
23
|
-
See [DEVELOPER_SETUP.md](./DEVELOPER_SETUP.md) and [DEVELOPER_DOCUMENTATION.md](./DEVELOPER_DOCUMENTATION.md) for more information.
|
24
|
-
|
25
|
-
[wiki]: https://github.com/pact-foundation/pact_broker/wiki
|
26
|
-
[stackoverflow]: https://stackoverflow.com/questions/tagged/pact-broker
|
27
|
-
[pact-ruby-e2e-example]: https://github.com/pact-foundation/pact-ruby-e2e-example
|
28
|
-
[semantic-commit-messages]: http://karma-runner.github.io/2.0/dev/git-commit-msg.html
|
29
|
-
[squash]: https://github.com/todotxt/todo.txt-android/wiki/Squash-All-Commits-Related-to-a-Single-Issue-into-a-Single-Commit
|
data/DEVELOPER_DOCUMENTATION.md
DELETED
@@ -1,161 +0,0 @@
|
|
1
|
-
# Developer Documentation
|
2
|
-
|
3
|
-
## File structure
|
4
|
-
|
5
|
-
* Application code - [lib](lib)
|
6
|
-
* The aggregated application (API, UI, middleware, HAL Browser, diagnostic endpoints etc) - [lib/pact_broker/app.rb](lib/pact_broker/app.rb)
|
7
|
-
* API - [lib/pact_broker/api](lib/pact_broker/api)
|
8
|
-
* Routes - [lib/pact_broker/api.rb](lib/pact_broker/api.rb)
|
9
|
-
* HTTP Resources - [lib/pact_broker/api/resources](lib/pact_broker/api/resources) These handle the HTTP requests.
|
10
|
-
* Decorators - [lib/pact_broker/api/decorators](lib/pact_broker/api/decorators) These parse the request bodies and render the response bodies.
|
11
|
-
* Contracts - [lib/pact_broker/api/contracts](lib/pact_broker/api/contracts) These validate incoming API requests.
|
12
|
-
* UI - [lib/pact_broker/ui](lib/pact_broker/ui)
|
13
|
-
* Routes - [lib/pact_broker/ui/app.rb](lib/pact_broker/ui/app.rb)
|
14
|
-
* Controllers - [lib/pact_broker/ui/controllers](lib/pact_broker/ui/controllers) These handle the HTTP requests.
|
15
|
-
* Views - [lib/pact_broker/ui/views](lib/pact_broker/ui/views) These render the view using HAML
|
16
|
-
* View models - [lib/pact_broker/ui/view_models](lib/pact_broker/ui/view_models) These expose the domain model data in a way that is suited to rendering in a view.
|
17
|
-
* Domain - Domain classes were intially created in [lib/pact_broker/domain](lib/pact_broker/domain) but are now put in their own modules. The ones left here just haven't been migrated yet. The module name is the plural of the domain class name. eg `lib/pact_broker/widgets/widget.rb`.
|
18
|
-
* Services and Repositories - in the module with the name of their domain concept. eg `lib/pact_broker/widgets/service.rb` and `lib/pact_broker/widgets/repository.rb`
|
19
|
-
* Standalone "function as class" classes go into the module they relate to. This pattern is used when there is some significant stateless logic that we want to
|
20
|
-
* Database migrations - [db/migrations](db/migrations)
|
21
|
-
|
22
|
-
* Tests - `spec`
|
23
|
-
* Isolated tests (mostly) - `spec/lib`
|
24
|
-
* Contract tests - `spec/service_consumers`
|
25
|
-
* High level API functional tests - `spec/features`
|
26
|
-
* Migration tests - `spec/migrations`
|
27
|
-
|
28
|
-
## Domain and database design
|
29
|
-
|
30
|
-
### Domain
|
31
|
-
|
32
|
-
Domain classes are found in `lib/pact_broker/domain`. Many of these classes are Sequel models, as the difference between the Sequel model and the functionality required for the domain logic is similar enough to share the class. Some classes separate the domain and database logic, as the concerns are too different. Where there is a separate database model, this will be kept in a module with the pluralized name of the model eg. `PactBroker::Webhooks`. Unfortunately, this sometimes makes it difficult to tell in the calling code whether you have a domain or a database model. I haven't worked out a clean way to handle this yet.
|
33
|
-
|
34
|
-
### Domain terminology
|
35
|
-
|
36
|
-
* `pacticipant` - an application that participates in a pact. A very bad pun which I deeply regret.
|
37
|
-
* `pact` - this term is confusing and overloaded. It generally means a `pact publication` in the code.
|
38
|
-
* `pact publication` - the resource that gets created when a PUT request is sent to the Pact Broker to `/pacts/provider/PROVIDER/consumer/CONSUMER/version/VERSION`.
|
39
|
-
* `pact version` - the JSON contents of the pact publication. One pact version may belong to many pact publications. That is, if a pact publication with exactly the same contents is published twice, then a new
|
40
|
-
pact publication resource will be created with an incremented revision number, but it will reuse the existing pact version.
|
41
|
-
* `pacticipant version` - a resource that represents a version of the application
|
42
|
-
* `integration` - the relationship between a consumer and a provider
|
43
|
-
* `pseudo branch` - A time ordered list of pacts that are related to a particular tag. The most recent pact for each pseudo branch is a "head" pact.
|
44
|
-
* `matrix` - the table that shows the cartesian join of pact versions/verifications, and hence shows which consumer versions and provider versions have been tested together.
|
45
|
-
|
46
|
-
### Tables
|
47
|
-
* `pact_versions` - the JSON content of each UNIQUE pact document is stored in this table. The same content is likely to be published over and over again by the CI builds, so deduplicating the content saves us a lot of disk space. Once created, a row is never modified. Uniqueness is just done on string equality - no special pact logic. This means that pacts with randomly generated values or orders (most of pact-jvm pacts!) will get a new version record every time they publish.
|
48
|
-
|
49
|
-
* `pact_publications` - this table holds references to the:
|
50
|
-
|
51
|
-
* `provider` (in the pacticipants table)
|
52
|
-
* `consumer version` (in the versions table),
|
53
|
-
* `pact content` (in the pact_version_contents table)
|
54
|
-
* and a `revision number`
|
55
|
-
|
56
|
-
A row exists for every `PUT` or `PATCH` request made to create or update a given pact resource. Once created, a row is never modified. When a pact resource (defined by the `provider`, `consumer` and `consumer version number`) is modified via HTTP, a new `pact_revision` row is created with an incremented `revision_number`. The `revision_number` begins at 1 for each new `consumer_version`.
|
57
|
-
|
58
|
-
* `versions` - this table consists of:
|
59
|
-
|
60
|
-
* a reference to the `pacticipant` that owns the version (the `consumer`)
|
61
|
-
* the version `number` (eg. 1.0.2)
|
62
|
-
* the version `order` - an integer calculated by the code when the row is created that allows us to sort versions in the database without it needing to understand how to order semantic version strings. The versions are ordered within the context of their owning `pacticipant`.
|
63
|
-
|
64
|
-
Currently only consumer versions are stored, as these are created when a pact resource is created. There is potential to create provider versions when we implement verifications.
|
65
|
-
|
66
|
-
* `pacticipants` - this table consists of:
|
67
|
-
|
68
|
-
* a `name`
|
69
|
-
|
70
|
-
* `tags` - this table consists of:
|
71
|
-
|
72
|
-
* a `name`
|
73
|
-
* a reference to the `pacticipant version`
|
74
|
-
|
75
|
-
Note that a `consumer version` is tagged, rather than a `pact_version`. This means that when a given version is marked as the "prod" one, all the pacts for that version are considered the "prod" pacts, rather than having to tag them individually.
|
76
|
-
|
77
|
-
### Views
|
78
|
-
|
79
|
-
* `all_pact_publications` - A denormalised view the one-to-one attributes of a `pact_publication`, including:
|
80
|
-
|
81
|
-
* `provider name` and `provider id`
|
82
|
-
* `consumer name` and `consumer id`
|
83
|
-
* `consumer version number` and `consumer version order`
|
84
|
-
* `revision_number`
|
85
|
-
|
86
|
-
* `latest_pact_publications_by_consumer_versions` - This view has the same columns as `all_pact_publications`, but it only contains the latest revision of the pact for each provider/consumer/version. It maps to what a user would consider the "pact" resource ie. `/pacts/provider/PROVIDER/consumer/CONSUMER/version/VERSION`. Previous revisions are not currently exposed via the API.
|
87
|
-
|
88
|
-
* `latest_pact_publications` - This view has the same columns as `all_pact_publications`, but it only contains the latest revision of the pact for the latest consumer version for each consumer/provider pair. It is what a user would consider the "latest pact", and maps to the resource at `/pacts/provider/PROVIDER/consumer/CONSUMER/latest`
|
89
|
-
|
90
|
-
* `latest_tagged_pact_publications` - This view has the same columns as `all_pact_publications`, plus a `tag_name` column. It is used to return the pact for the latest tagged version of a consumer.
|
91
|
-
|
92
|
-
* `latest_verifications_for_pact_versions` - The most recent verification for each pact version.
|
93
|
-
|
94
|
-
* `matrix` - The matrix of every pact publication and verification. Includes every pact revision (eg. publishing to the same consumer version twice, or using PATCH) and every verification (including 'overwritten' ones. eg. when the same provider build runs twice.)
|
95
|
-
|
96
|
-
### Dependencies
|
97
|
-
|
98
|
-
```
|
99
|
-
= head_matrix view
|
100
|
-
-> latest_pact_publications view
|
101
|
-
-> latest_pact_publications_by_consumer_versions view
|
102
|
-
-> latest_pact_publication_ids_by_consumer_versions
|
103
|
-
-> all_pact_publications
|
104
|
-
-> versions, pacticipants, pact_publications, pact_versions
|
105
|
-
-> latest_verifications_for_pact_versions
|
106
|
-
-> latest_verification_ids_for_pact_versions
|
107
|
-
-> versions
|
108
|
-
-> latest_tagged_pact_consumer_version_orders
|
109
|
-
-> latest_pact_publications_by_consumer_versions
|
110
|
-
|
111
|
-
= head_pact_publications
|
112
|
-
-> latest_pact_publications
|
113
|
-
-> latest_pact_publication_ids_for_consumer_versions
|
114
|
-
-> latest_tagged_pact_publications
|
115
|
-
-> latest_pact_publications_by_consumer_versions (optimised for pp_ids)
|
116
|
-
-> latest_tagged_pact_consumer_version_orders (optimised for pp_ids)
|
117
|
-
|
118
|
-
```
|
119
|
-
|
120
|
-
### Database modeling approach
|
121
|
-
|
122
|
-
In the beginning, I made a lot of Sequel models based on views that pulled in the different tables of data together (eg denormalising consumer, provider, pact publication and pact version in to `all_pact_publications`). This made the Ruby code quite simple, but it was not very performant. As time has progressed, I have moved more and more of the "data joining" code into the Ruby to optimise the queries. That's why there are a lot of "aggregated data" views that are not being used by the code any more.
|
123
|
-
|
124
|
-
### Useful to know stuff
|
125
|
-
|
126
|
-
* The supported database types are Postgres (recommended), MySQL (sigh) and Sqlite (just for testing, not recommended for production). Check the travis.yml file for the supported database versions.
|
127
|
-
* Any migration that uses the "order" column has to be defined using the Sequel DSL rather than pure SQL, because the word "order" is a key word, and it has to be escaped correctly and differently on each database (Postgres, MySQL, Sqlite).
|
128
|
-
|
129
|
-
## Adding a resource
|
130
|
-
|
131
|
-
* In `spec/features` add a new high level spec that executes the endpoint you're going to write. Don't worry if you're not sure exactly what it's going to look like yet - you can come back and change it as you go. Have a look at the other specs in the directory for the type of assertions that should be made. Basic rule of thumb is to check the http status code, and do a light touch of assertions on the body.
|
132
|
-
* Create a new directory for the classes that relate to your new resource. eg For a "Foo" resource, create `lib/pact_broker/foos`
|
133
|
-
* Create a new migration in `db/migrations` that creates the underlying database table.
|
134
|
-
* Create a new database model for the resource that extends from Sequel::Model. eg `lib/pact_broker/foos/foo.rb`
|
135
|
-
* Create a decorator in `spec/lib/pact_broker/api/decorators/` that will map to and from the representation that will be used in the HTTP request and response.
|
136
|
-
* Write a spec for the decorator.
|
137
|
-
* You may need to create a contract to validate the request. This is kind of broken while I upgrade to the latest dry-validation library. See Beth for more details.
|
138
|
-
* Add the HTTP resource in `lib/pact_broker/api/resources/`. It should extend from `BaseResource`.
|
139
|
-
* Write a spec for the resource, stubbing out the behaviour you expect from your service.
|
140
|
-
* Add the route to `lib/pact_broker/api.rb`
|
141
|
-
* Create a service that has the methods that you need for the resource. eg. `lib/pact_broker/foos/service.rb`
|
142
|
-
* Add the new service to `lib/pact_broker/services.rb`
|
143
|
-
* Write a spec for the service, stubbing out the behaviour you expect from your repository.
|
144
|
-
* Create a repository eg. `lib/pact_broker/foos/repository.rb`.
|
145
|
-
* Add the new repository to `lib/pact_broker/repositories.rb`.
|
146
|
-
* Write a spec for the repository.
|
147
|
-
* Go back and make the original feature spec pass.
|
148
|
-
* Profit.
|
149
|
-
|
150
|
-
## Writing Data migrations
|
151
|
-
|
152
|
-
The same database may be used by multiple application instances to support highly available set ups and no downtime deployments. This can lead to the situation where the database migrations have been applied, but new data is written to the database by old application code, which may lead to some columns not being populated. The mitigation to this problem is to run the *data* migrations only each time an application instance starts up. This ensures that that any data inserted into the database by a previous version of the application are migrated. This is done automatically in the `PactBroker::App` class.
|
153
|
-
|
154
|
-
If you write a schema migration that then requires a data migration to populate or update any columns:
|
155
|
-
|
156
|
-
* Create a data migrations class in `lib/pact_broker/db/data_migrations`, copying the existing pattern.
|
157
|
-
* Add a call to the new class at the end of `lib/pact_broker/db/migrate_data.rb`
|
158
|
-
* Make sure you check for the existance of the required columns, because you don't know which version of the database might be running with this code.
|
159
|
-
* Add a null check (eg. `db[:my_table].where(my_column: nil).update(...)`) where appropriate to make sure that the data migration doesn't run more than once.
|
160
|
-
* Don't use any Sequel Models, as this will run before the model classes are loaded, and migrations should never depend on Models because models change as the schema migrations are applied.
|
161
|
-
* Create a migration file in `db/migrations` that calls the data migration (eg. like `db/migrations/20190603_migrate_webhook_headers.rb`)
|