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.
Files changed (681) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/db/ddl_statements/all_verifications.rb +21 -0
  4. data/db/migrations/20210701_recreate_all_verifications.rb +18 -0
  5. data/db/migrations/20211101_recreate_all_verifications.rb +10 -0
  6. data/db/migrations/20211102_create_table_temp_integrations.rb +26 -0
  7. data/db/migrations/20211103_migrate_integrations.rb +21 -0
  8. data/db/migrations/20211104_switch_integrations_and_temp_integrations.rb +25 -0
  9. data/docs/CONFIGURATION.md +30 -0
  10. data/lib/pact_broker/app.rb +1 -1
  11. data/lib/pact_broker/certificates/service.rb +32 -2
  12. data/lib/pact_broker/config/runtime_configuration.rb +9 -0
  13. data/lib/pact_broker/config/runtime_configuration_logging_methods.rb +6 -2
  14. data/lib/pact_broker/db/data_migrations/migrate_integrations.rb +40 -0
  15. data/lib/pact_broker/db/migrate_data.rb +1 -0
  16. data/lib/pact_broker/doc/views/webhooks.markdown +23 -0
  17. data/lib/pact_broker/domain/pacticipant.rb +2 -0
  18. data/lib/pact_broker/integrations/integration.rb +34 -10
  19. data/lib/pact_broker/integrations/repository.rb +22 -0
  20. data/lib/pact_broker/integrations/service.rb +2 -2
  21. data/lib/pact_broker/locale/en.yml +1 -2
  22. data/lib/pact_broker/pacticipants/repository.rb +5 -0
  23. data/lib/pact_broker/pacticipants/service.rb +1 -1
  24. data/lib/pact_broker/pacts/merger.rb +8 -4
  25. data/lib/pact_broker/pacts/pacts_for_verification_repository.rb +1 -1
  26. data/lib/pact_broker/pacts/repository.rb +1 -0
  27. data/lib/pact_broker/repositories.rb +5 -0
  28. data/lib/pact_broker/tasks/clean_task.rb +11 -0
  29. data/lib/pact_broker/test/test_data_builder.rb +6 -0
  30. data/lib/pact_broker/version.rb +1 -1
  31. data/lib/pact_broker/webhooks/pact_and_verification_parameters.rb +1 -2
  32. data/pact_broker.gemspec +8 -1
  33. data/public/css/bootstrap-grid.css +170 -17
  34. data/public/css/bootstrap-grid.css.map +1 -1
  35. data/public/css/bootstrap-grid.min.css +5 -5
  36. data/public/css/bootstrap-grid.min.css.map +1 -1
  37. data/public/css/bootstrap-reboot.css +16 -22
  38. data/public/css/bootstrap-reboot.css.map +1 -1
  39. data/public/css/bootstrap-reboot.min.css +5 -5
  40. data/public/css/bootstrap-reboot.min.css.map +1 -1
  41. data/public/css/bootstrap.css +585 -308
  42. data/public/css/bootstrap.css.map +1 -1
  43. data/public/css/bootstrap.min.css +5 -5
  44. data/public/css/bootstrap.min.css.map +1 -1
  45. data/public/images/question.svg +1 -0
  46. data/public/js/bootstrap.bundle.js +1294 -1335
  47. data/public/js/bootstrap.bundle.js.map +1 -1
  48. data/public/js/bootstrap.bundle.min.js +4 -4
  49. data/public/js/bootstrap.bundle.min.js.map +1 -1
  50. data/public/js/bootstrap.js +1232 -1310
  51. data/public/js/bootstrap.js.map +1 -1
  52. data/public/js/bootstrap.min.js +4 -4
  53. data/public/js/bootstrap.min.js.map +1 -1
  54. metadata +13 -1067
  55. data/.codeclimate.yml +0 -49
  56. data/.csslintrc +0 -2
  57. data/.dockerignore +0 -2
  58. data/.eslintignore +0 -1
  59. data/.eslintrc.yml +0 -277
  60. data/.github/FUNDING.yml +0 -4
  61. data/.github/ISSUE_TEMPLATE.md +0 -32
  62. data/.github/PULL_REQUEST_TEMPLATE.md +0 -9
  63. data/.github/workflows/release_gem.yml +0 -52
  64. data/.github/workflows/test-ruby-3.yml +0 -19
  65. data/.github/workflows/test.yml +0 -95
  66. data/.github/workflows/trigger_pact_docs_update.yml +0 -23
  67. data/.gitignore +0 -45
  68. data/.optic/.gitignore +0 -2
  69. data/.optic/api/specification.json +0 -1
  70. data/.optic/ignore +0 -14
  71. data/.rspec +0 -3
  72. data/.rubocop.yml +0 -314
  73. data/.ruby-version +0 -1
  74. data/CODE_OF_CONDUCT.md +0 -76
  75. data/CONTRIBUTING.md +0 -29
  76. data/DEVELOPER_DOCUMENTATION.md +0 -161
  77. data/DEVELOPER_SETUP.md +0 -165
  78. data/Dockerfile +0 -52
  79. data/ISSUES.md +0 -31
  80. data/LICENSE.txt +0 -22
  81. data/MATRIX.md +0 -4
  82. data/RELEASING.md +0 -5
  83. data/Rakefile +0 -23
  84. data/UPGRADING.md +0 -18
  85. data/config/boot.rb +0 -21
  86. data/config/database.travis.yml +0 -13
  87. data/config/database.yml +0 -79
  88. data/config.ru +0 -11
  89. data/db/test/backwards_compatibility/.rspec +0 -3
  90. data/db/test/backwards_compatibility/Appraisals +0 -57
  91. data/db/test/backwards_compatibility/Gemfile +0 -12
  92. data/db/test/backwards_compatibility/Rakefile +0 -72
  93. data/db/test/backwards_compatibility/config.ru +0 -21
  94. data/db/test/backwards_compatibility/gemfiles/1.18.0.gemfile +0 -15
  95. data/db/test/backwards_compatibility/gemfiles/1.18.0.gemfile.lock +0 -212
  96. data/db/test/backwards_compatibility/gemfiles/2.0.0.gemfile +0 -15
  97. data/db/test/backwards_compatibility/gemfiles/2.0.0.gemfile.lock +0 -210
  98. data/db/test/backwards_compatibility/gemfiles/2.1.0.gemfile +0 -15
  99. data/db/test/backwards_compatibility/gemfiles/2.1.0.gemfile.lock +0 -211
  100. data/db/test/backwards_compatibility/gemfiles/2.2.0.gemfile +0 -15
  101. data/db/test/backwards_compatibility/gemfiles/2.2.0.gemfile.lock +0 -199
  102. data/db/test/backwards_compatibility/gemfiles/2.3.0.gemfile +0 -14
  103. data/db/test/backwards_compatibility/gemfiles/2.3.0.gemfile.lock +0 -198
  104. data/db/test/backwards_compatibility/gemfiles/2.4.2.gemfile +0 -14
  105. data/db/test/backwards_compatibility/gemfiles/2.4.2.gemfile.lock +0 -198
  106. data/db/test/backwards_compatibility/gemfiles/2.5.1.gemfile +0 -14
  107. data/db/test/backwards_compatibility/gemfiles/2.5.1.gemfile.lock +0 -198
  108. data/db/test/backwards_compatibility/gemfiles/2.6.0.gemfile +0 -14
  109. data/db/test/backwards_compatibility/gemfiles/2.6.0.gemfile.lock +0 -198
  110. data/db/test/backwards_compatibility/gemfiles/head.gemfile +0 -14
  111. data/db/test/backwards_compatibility/gemfiles/head.gemfile.lock +0 -182
  112. data/db/test/backwards_compatibility/spec/fixtures/foo-bar.json +0 -22
  113. data/db/test/backwards_compatibility/spec/publish_pact_spec.rb +0 -72
  114. data/db/test/backwards_compatibility/spec/spec_helper.rb +0 -20
  115. data/db/test/backwards_compatibility/spec/support/fixture_helpers.rb +0 -12
  116. data/db/test/backwards_compatibility/spec/support/request_helpers.rb +0 -19
  117. data/db/test/change_migration_strategy/Rakefile +0 -21
  118. data/db/test/change_migration_strategy/before/Gemfile +0 -7
  119. data/docker-compose-ci-mysql.yml +0 -38
  120. data/docker-compose-dev-postgres.yml +0 -43
  121. data/docker-compose-issue-repro-with-pact-broker-docker-image.yml +0 -44
  122. data/docker-compose-test.yml +0 -102
  123. data/docs/configuration.yml +0 -385
  124. data/docs/images/Pactflow logo - black small.png +0 -0
  125. data/example/Gemfile +0 -6
  126. data/example/README.md +0 -64
  127. data/example/config/pact_broker.yml +0 -9
  128. data/example/config/puma.rb +0 -3
  129. data/example/config.ru +0 -10
  130. data/issue-reproduction/Dockerfile-pact-broker +0 -42
  131. data/optic.yml +0 -5
  132. data/pact_broker_client-pact_broker.json +0 -133
  133. data/public/js/npm.js +0 -13
  134. data/regression/.gitignore +0 -1
  135. data/regression/can_i_deploy_spec.rb +0 -43
  136. data/regression/index_spec.rb +0 -26
  137. data/regression/regression_helper.rb +0 -63
  138. data/regression/script/approval-all.sh +0 -6
  139. data/regression/script/clear.sh +0 -3
  140. data/regression/script/run.sh +0 -3
  141. data/scaffolding/README.md +0 -23
  142. data/scaffolding/run.rb +0 -242
  143. data/scaffolding/templates/decorator.rb.erb +0 -15
  144. data/scaffolding/templates/decorator_spec.erb.rb +0 -0
  145. data/scaffolding/templates/migration.erb +0 -12
  146. data/scaffolding/templates/model.erb +0 -14
  147. data/scaffolding/templates/repository.rb.erb +0 -18
  148. data/scaffolding/templates/repository_spec.rb.erb +0 -9
  149. data/scaffolding/templates/resource.erb +0 -46
  150. data/scaffolding/templates/resource_spec.rb.erb +0 -78
  151. data/scaffolding/templates/service.rb.erb +0 -22
  152. data/scaffolding/templates/service_spec.rb.erb +0 -9
  153. data/script/data/auto-create-things-for-tags.rb +0 -22
  154. data/script/data/branches.rb +0 -35
  155. data/script/data/contract-published-requiring-verification.rb +0 -26
  156. data/script/data/environments.rb +0 -45
  157. data/script/data/expand-currently-deployed.rb +0 -47
  158. data/script/data/issue-494.rb +0 -25
  159. data/script/data/pending.rb +0 -26
  160. data/script/data/tags.rb +0 -35
  161. data/script/data/verify-pact-for-multiple-selectors.rb +0 -30
  162. data/script/data/webhook.rb +0 -22
  163. data/script/db-spec.sh +0 -16
  164. data/script/demonstrate-version-branches.rb +0 -33
  165. data/script/dev/rubocop-modified-files.sh +0 -3
  166. data/script/dev/webhook-server-with-random-errors.sh +0 -25
  167. data/script/docker/db-execute-sql-file.sh +0 -2
  168. data/script/docker/db-psql.sh +0 -3
  169. data/script/docker/db-reload.sh +0 -11
  170. data/script/docker/db-restore.sh +0 -5
  171. data/script/docker/db-rm.sh +0 -3
  172. data/script/docker/db-start.sh +0 -7
  173. data/script/docker/mysql-db-start.sh +0 -10
  174. data/script/docker-container/test.sh +0 -3
  175. data/script/docs/generate-api-docs.rb +0 -117
  176. data/script/docs/generate-configuration-docs.rb +0 -107
  177. data/script/docs/regenerate-api-docs.sh +0 -11
  178. data/script/exercise-api-for-optic.sh +0 -3
  179. data/script/foo-bar-verification.json +0 -59
  180. data/script/foo-bar.json +0 -33
  181. data/script/generate-certificates-for-webooks-certificate-spec.rb +0 -49
  182. data/script/generate-erd +0 -55
  183. data/script/github-issues/add-branch-support/issue-text.txt +0 -7
  184. data/script/github-issues/add-branch-support/issues.txt +0 -0
  185. data/script/github-issues/add-branch-support/raise-issue-in-client-repos.sh +0 -10
  186. data/script/github-issues/add-branch-support-for-provider-versions/issue-text.txt +0 -9
  187. data/script/github-issues/add-branch-support-for-provider-versions/issues.txt +0 -6
  188. data/script/github-issues/add-branch-support-for-provider-versions/raise-issue-in-client-repos.sh +0 -10
  189. data/script/github-issues/branch-consumer-version-selector/issue-text.txt +0 -52
  190. data/script/github-issues/branch-consumer-version-selector/issues.txt +0 -9
  191. data/script/github-issues/branch-consumer-version-selector/raise-issue-in-client-repos.sh +0 -10
  192. data/script/github-issues/consumer-version-selectors-docs/issue-text.txt +0 -11
  193. data/script/github-issues/consumer-version-selectors-docs/issues.txt +0 -6
  194. data/script/github-issues/consumer-version-selectors-docs/raise-issue-in-client-repos.sh +0 -10
  195. data/script/github-issues/deployed-and-released-selectors-docs/issue-text.txt +0 -26
  196. data/script/github-issues/deployed-and-released-selectors-docs/issues.txt +0 -9
  197. data/script/github-issues/deployed-and-released-selectors-docs/raise-issue-in-client-repos.sh +0 -10
  198. data/script/github-issues/include-pending-by-default/issue-text.txt +0 -5
  199. data/script/github-issues/include-pending-by-default/issues.txt +0 -10
  200. data/script/github-issues/include-pending-by-default/raise-issue-in-client-repos.sh +0 -10
  201. data/script/import-pg-database.sh +0 -5
  202. data/script/insert-self-signed-certificate-from-url.rb +0 -35
  203. data/script/prod/clean-up.sql +0 -11
  204. data/script/prod/migrate-latest-pacts.sh +0 -29
  205. data/script/prod/redact-data.sql +0 -16
  206. data/script/pry.rb +0 -31
  207. data/script/publish-2.sh +0 -4
  208. data/script/publish-new.sh +0 -31
  209. data/script/publish-not-a-pact.sh +0 -4
  210. data/script/publish-verification.sh +0 -5
  211. data/script/publish.sh +0 -28
  212. data/script/query.rb +0 -20
  213. data/script/recreate-docker-pg-db.sh +0 -20
  214. data/script/recreate-mysql-db.sh +0 -18
  215. data/script/recreate-pg-db.sh +0 -16
  216. data/script/recreate-test-database.sh +0 -2
  217. data/script/release-via-github-action.sh +0 -7
  218. data/script/release.sh +0 -11
  219. data/script/reproduce-issue-can-i-deploy-ignore.rb +0 -48
  220. data/script/reproduce-issue-starting-up.rb +0 -38
  221. data/script/reproduce-issue.rb +0 -37
  222. data/script/restart.sh +0 -18
  223. data/script/run-with-ssl.rb +0 -44
  224. data/script/seed-example-matrix.rb +0 -105
  225. data/script/seed-for-webhook-test.rb +0 -59
  226. data/script/seed-matrix.rb +0 -90
  227. data/script/seed.rb +0 -101
  228. data/script/test/approval-all.sh +0 -6
  229. data/script/test/run-rake-on-docker-compose-mysql.sh +0 -8
  230. data/script/trigger-release.sh +0 -30
  231. data/script/update-hal-browser +0 -6
  232. data/script/watch.sh +0 -7
  233. data/script/webhook-server.ru +0 -10
  234. data/spec/features/base_equality_only_on_content_that_affects_verification_results_spec.rb +0 -34
  235. data/spec/features/can_i_deploy_spec.rb +0 -31
  236. data/spec/features/create_branch_version_spec.rb +0 -29
  237. data/spec/features/create_environment_spec.rb +0 -47
  238. data/spec/features/create_pacticipant_spec.rb +0 -36
  239. data/spec/features/create_tag_spec.rb +0 -42
  240. data/spec/features/create_version_spec.rb +0 -56
  241. data/spec/features/create_webhook_spec.rb +0 -189
  242. data/spec/features/delete_environment_spec.rb +0 -16
  243. data/spec/features/delete_integration_spec.rb +0 -27
  244. data/spec/features/delete_label_spec.rb +0 -28
  245. data/spec/features/delete_pact_spec.rb +0 -31
  246. data/spec/features/delete_pact_versions_for_branch_spec.rb +0 -34
  247. data/spec/features/delete_pact_versions_spec.rb +0 -29
  248. data/spec/features/delete_tagged_pact_versions_spec.rb +0 -28
  249. data/spec/features/delete_verification_spec.rb +0 -27
  250. data/spec/features/delete_version_spec.rb +0 -22
  251. data/spec/features/delete_webhook_spec.rb +0 -34
  252. data/spec/features/edit_webhook_spec.rb +0 -61
  253. data/spec/features/end_deployment_spec.rb +0 -29
  254. data/spec/features/end_support_spec.rb +0 -67
  255. data/spec/features/execute_unsaved_webhook_spec.rb +0 -53
  256. data/spec/features/execute_webhook_spec.rb +0 -92
  257. data/spec/features/get_branch_version_spec.rb +0 -12
  258. data/spec/features/get_can_i_deploy_badge_spec.rb +0 -13
  259. data/spec/features/get_currently_deployed_versions_for_environment_spec.rb +0 -76
  260. data/spec/features/get_currently_deployed_versions_for_version_spec.rb +0 -27
  261. data/spec/features/get_currently_supported_versions_for_environment_spec.rb +0 -57
  262. data/spec/features/get_dashboard_spec.rb +0 -29
  263. data/spec/features/get_deployed_versions_for_version_and_environment.rb +0 -27
  264. data/spec/features/get_diff_spec.rb +0 -53
  265. data/spec/features/get_environment_spec.rb +0 -19
  266. data/spec/features/get_environments_spec.rb +0 -30
  267. data/spec/features/get_integrations_dot_file_spec.rb +0 -23
  268. data/spec/features/get_integrations_spec.rb +0 -17
  269. data/spec/features/get_label_spec.rb +0 -28
  270. data/spec/features/get_latest_pact_badge_spec.rb +0 -54
  271. data/spec/features/get_latest_tagged_pact_badge_spec.rb +0 -38
  272. data/spec/features/get_latest_tagged_pact_spec.rb +0 -22
  273. data/spec/features/get_latest_untagged_pact_badge_spec.rb +0 -38
  274. data/spec/features/get_latest_untagged_pact_spec.rb +0 -22
  275. data/spec/features/get_latest_verification_for_pact_spec.rb +0 -59
  276. data/spec/features/get_matrix_badge_spec.rb +0 -50
  277. data/spec/features/get_matrix_for_consumer_and_provider_spec.rb +0 -22
  278. data/spec/features/get_matrix_spec.rb +0 -34
  279. data/spec/features/get_pact_spec.rb +0 -65
  280. data/spec/features/get_pact_version.rb +0 -36
  281. data/spec/features/get_pact_versions_spec.rb +0 -34
  282. data/spec/features/get_pacticipants_by_label_spec.rb +0 -27
  283. data/spec/features/get_previous_distinct_version.rb +0 -51
  284. data/spec/features/get_provider_pacts_for_verification_spec.rb +0 -95
  285. data/spec/features/get_provider_pacts_spec.rb +0 -93
  286. data/spec/features/get_released_versions_for_version_and_environment.rb +0 -27
  287. data/spec/features/get_tagged_pact_versions_spec.rb +0 -26
  288. data/spec/features/get_triggered_webhooks_for_pact_spec.rb +0 -20
  289. data/spec/features/get_triggered_webhooks_for_verification_spec.rb +0 -21
  290. data/spec/features/get_verifications_for_consumer_version_spec.rb +0 -33
  291. data/spec/features/get_version_spec.rb +0 -44
  292. data/spec/features/get_versions_spec.rb +0 -39
  293. data/spec/features/label_pacticipant_spec.rb +0 -22
  294. data/spec/features/merge_pact_spec.rb +0 -63
  295. data/spec/features/metadata_spec.rb +0 -66
  296. data/spec/features/metrics_spec.rb +0 -23
  297. data/spec/features/pending_pacts_spec.rb +0 -109
  298. data/spec/features/pending_pacts_with_tags_spec.rb +0 -138
  299. data/spec/features/publish_not_a_pact_spec.rb +0 -37
  300. data/spec/features/publish_pact_all_in_one_approval_spec.rb +0 -72
  301. data/spec/features/publish_pact_all_in_one_spec.rb +0 -61
  302. data/spec/features/publish_pact_spec.rb +0 -124
  303. data/spec/features/publish_verification_results_and_version_spec.rb +0 -70
  304. data/spec/features/publish_verification_spec.rb +0 -72
  305. data/spec/features/record_deployment_spec.rb +0 -106
  306. data/spec/features/record_release_spec.rb +0 -84
  307. data/spec/features/record_undeployment_spec.rb +0 -67
  308. data/spec/features/tag_version_spec.rb +0 -13
  309. data/spec/features/update_environment_spec.rb +0 -44
  310. data/spec/features/update_matrix_spec.rb +0 -146
  311. data/spec/features/update_pacticipant_spec.rb +0 -98
  312. data/spec/features/update_version_spec.rb +0 -100
  313. data/spec/features/update_webhook_spec.rb +0 -47
  314. data/spec/features/wip_pacts_spec.rb +0 -387
  315. data/spec/fixtures/a_consumer-a_provider-2.json +0 -22
  316. data/spec/fixtures/a_consumer-a_provider-3.json +0 -22
  317. data/spec/fixtures/a_consumer-a_provider-conflict.json +0 -22
  318. data/spec/fixtures/a_consumer-a_provider-merged.json +0 -34
  319. data/spec/fixtures/a_consumer-a_provider.json +0 -22
  320. data/spec/fixtures/approvals/clean_incremental_dry_run.approved.json +0 -100
  321. data/spec/fixtures/approvals/docs_webhooks_executing_a_saved_webhook_options.approved.json +0 -20
  322. data/spec/fixtures/approvals/docs_webhooks_executing_a_saved_webhook_post.approved.json +0 -43
  323. data/spec/fixtures/approvals/docs_webhooks_executing_an_unsaved_webhook_options.approved.json +0 -20
  324. data/spec/fixtures/approvals/docs_webhooks_executing_an_unsaved_webhook_post.approved.json +0 -63
  325. data/spec/fixtures/approvals/docs_webhooks_logs_of_triggered_webhook_get.approved.json +0 -20
  326. data/spec/fixtures/approvals/docs_webhooks_logs_of_triggered_webhook_options.approved.json +0 -20
  327. data/spec/fixtures/approvals/docs_webhooks_pact_webhooks_get.approved.json +0 -45
  328. data/spec/fixtures/approvals/docs_webhooks_pact_webhooks_options.approved.json +0 -20
  329. data/spec/fixtures/approvals/docs_webhooks_triggered_webhooks_for_pact_publication_get.approved.json +0 -52
  330. data/spec/fixtures/approvals/docs_webhooks_triggered_webhooks_for_pact_publication_options.approved.json +0 -20
  331. data/spec/fixtures/approvals/docs_webhooks_triggered_webhooks_for_verification_publication_get.approved.json +0 -32
  332. data/spec/fixtures/approvals/docs_webhooks_triggered_webhooks_for_verification_publication_options.approved.json +0 -20
  333. data/spec/fixtures/approvals/docs_webhooks_webhook_get.approved.json +0 -74
  334. data/spec/fixtures/approvals/docs_webhooks_webhook_options.approved.json +0 -20
  335. data/spec/fixtures/approvals/docs_webhooks_webhook_put.approved.json +0 -77
  336. data/spec/fixtures/approvals/docs_webhooks_webhooks_for_a_provider_get.approved.json +0 -41
  337. data/spec/fixtures/approvals/docs_webhooks_webhooks_for_a_provider_options.approved.json +0 -20
  338. data/spec/fixtures/approvals/docs_webhooks_webhooks_for_consumer_and_provider_get.approved.json +0 -45
  339. data/spec/fixtures/approvals/docs_webhooks_webhooks_for_consumer_and_provider_options.approved.json +0 -20
  340. data/spec/fixtures/approvals/docs_webhooks_webhooks_for_consumer_get.approved.json +0 -41
  341. data/spec/fixtures/approvals/docs_webhooks_webhooks_for_consumer_options.approved.json +0 -20
  342. data/spec/fixtures/approvals/docs_webhooks_webhooks_get.approved.json +0 -45
  343. data/spec/fixtures/approvals/docs_webhooks_webhooks_options.approved.json +0 -20
  344. data/spec/fixtures/approvals/docs_webhooks_webhooks_post.approved.json +0 -78
  345. data/spec/fixtures/approvals/docs_webhooks_webhooks_status_get.approved.json +0 -79
  346. data/spec/fixtures/approvals/docs_webhooks_webhooks_status_options.approved.json +0 -20
  347. data/spec/fixtures/approvals/get_provider_pacts_for_verification.approved.json +0 -56
  348. data/spec/fixtures/approvals/matrix_integration_environment_spec.approved.json +0 -62
  349. data/spec/fixtures/approvals/matrix_integration_ignore_spec.approved.json +0 -124
  350. data/spec/fixtures/approvals/matrix_integration_spec.approved.json +0 -173
  351. data/spec/fixtures/approvals/modifiable_resources.approved.json +0 -105
  352. data/spec/fixtures/approvals/publish_contract_no_branch.approved.json +0 -165
  353. data/spec/fixtures/approvals/publish_contract_nothing_exists.approved.json +0 -156
  354. data/spec/fixtures/approvals/publish_contract_nothing_exists_with_webhook.approved.json +0 -156
  355. data/spec/fixtures/approvals/publish_contract_verification_already_exists.approved.json +0 -147
  356. data/spec/fixtures/approvals/publish_contract_with_validation_error.approved.json +0 -41
  357. data/spec/fixtures/approvals/publish_contracts_results_decorator.approved.json +0 -61
  358. data/spec/fixtures/certificate-invalid.pem +0 -29
  359. data/spec/fixtures/certificate.pem +0 -53
  360. data/spec/fixtures/certificates/cacert.pem +0 -21
  361. data/spec/fixtures/certificates/cert.pem +0 -20
  362. data/spec/fixtures/certificates/key.pem +0 -27
  363. data/spec/fixtures/certificates/self-signed.badssl.com.pem +0 -21
  364. data/spec/fixtures/consumer-provider.json +0 -25
  365. data/spec/fixtures/dashboard.json +0 -87
  366. data/spec/fixtures/expected.gv +0 -4
  367. data/spec/fixtures/foo-bar.json +0 -22
  368. data/spec/fixtures/invalid-publish-contract-body.json +0 -38
  369. data/spec/fixtures/renderer_pact.json +0 -34
  370. data/spec/fixtures/update_pacticipant.json +0 -5
  371. data/spec/fixtures/updated_pacticipant.json +0 -11
  372. data/spec/fixtures/verification.json +0 -11
  373. data/spec/fixtures/webhook_valid.json +0 -17
  374. data/spec/fixtures/webhook_valid_with_pacticipants.json +0 -23
  375. data/spec/integration/app_spec.rb +0 -209
  376. data/spec/integration/endpoints/group_spec.rb +0 -19
  377. data/spec/integration/pact_metdata_spec.rb +0 -105
  378. data/spec/integration/ui/index_spec.rb +0 -50
  379. data/spec/integration/ui/matrix_spec.rb +0 -36
  380. data/spec/integration/webhooks/certificate_spec.rb +0 -47
  381. data/spec/integration/webhooks/contract_publication_spec.rb +0 -68
  382. data/spec/integration/webhooks/contract_requiring_verification_published_spec.rb +0 -67
  383. data/spec/integration/webhooks/pact_publication_spec.rb +0 -51
  384. data/spec/integration/webhooks_documentation_spec.rb +0 -348
  385. data/spec/lib/pact/doc/generator_spec.rb +0 -80
  386. data/spec/lib/pact/doc/interaction_view_model_spec.rb +0 -232
  387. data/spec/lib/pact/doc/markdown/consumer_contract_renderer_spec.rb +0 -71
  388. data/spec/lib/pact/doc/markdown/index_renderer_spec.rb +0 -29
  389. data/spec/lib/pact_broker/api/contracts/environment_schema_spec.rb +0 -91
  390. data/spec/lib/pact_broker/api/contracts/pacticipant_schema_spec.rb +0 -46
  391. data/spec/lib/pact_broker/api/contracts/pacts_for_verification_json_query_schema_combinations_spec.rb +0 -87
  392. data/spec/lib/pact_broker/api/contracts/pacts_for_verification_json_query_schema_spec.rb +0 -358
  393. data/spec/lib/pact_broker/api/contracts/pacts_for_verification_query_string_schema_spec.rb +0 -97
  394. data/spec/lib/pact_broker/api/contracts/publish_contracts_schema_spec.rb +0 -127
  395. data/spec/lib/pact_broker/api/contracts/put_pact_params_contract_spec.rb +0 -133
  396. data/spec/lib/pact_broker/api/contracts/verification_contract_spec.rb +0 -112
  397. data/spec/lib/pact_broker/api/contracts/webhook_contract_spec.rb +0 -379
  398. data/spec/lib/pact_broker/api/decorators/dashboard_decorator_spec.rb +0 -94
  399. data/spec/lib/pact_broker/api/decorators/embedded_label_decorator_spec.rb +0 -34
  400. data/spec/lib/pact_broker/api/decorators/embedded_tag_decorator_spec.rb +0 -41
  401. data/spec/lib/pact_broker/api/decorators/embedded_version_decorator_spec.rb +0 -39
  402. data/spec/lib/pact_broker/api/decorators/extended_pact_decorator_spec.rb +0 -62
  403. data/spec/lib/pact_broker/api/decorators/integration_decorator_spec.rb +0 -86
  404. data/spec/lib/pact_broker/api/decorators/integrations_decorator_spec.rb +0 -29
  405. data/spec/lib/pact_broker/api/decorators/label_decorator_spec.rb +0 -42
  406. data/spec/lib/pact_broker/api/decorators/latest_pact_decorator_spec.rb +0 -25
  407. data/spec/lib/pact_broker/api/decorators/matrix_decorator_spec.rb +0 -259
  408. data/spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb +0 -23
  409. data/spec/lib/pact_broker/api/decorators/pact_decorator_spec.rb +0 -136
  410. data/spec/lib/pact_broker/api/decorators/pact_version_decorator_spec.rb +0 -61
  411. data/spec/lib/pact_broker/api/decorators/pact_webhooks_status_decorator_spec.rb +0 -138
  412. data/spec/lib/pact_broker/api/decorators/pacticipant_collection_decorator_spec.rb +0 -62
  413. data/spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb +0 -89
  414. data/spec/lib/pact_broker/api/decorators/pacts_for_verification_query_decorator_spec.rb +0 -175
  415. data/spec/lib/pact_broker/api/decorators/provider_pacts_decorator_spec.rb +0 -58
  416. data/spec/lib/pact_broker/api/decorators/publish_contracts_results_decorator_spec.rb +0 -53
  417. data/spec/lib/pact_broker/api/decorators/reason_decorator_spec.rb +0 -95
  418. data/spec/lib/pact_broker/api/decorators/relationships_csv_decorator_spec.rb +0 -28
  419. data/spec/lib/pact_broker/api/decorators/representable_pact_spec.rb +0 -29
  420. data/spec/lib/pact_broker/api/decorators/tag_decorator_spec.rb +0 -57
  421. data/spec/lib/pact_broker/api/decorators/tagged_pact_versions_decorator_spec.rb +0 -79
  422. data/spec/lib/pact_broker/api/decorators/triggered_webhook_decorator_spec.rb +0 -69
  423. data/spec/lib/pact_broker/api/decorators/triggered_webhooks_decorator_spec.rb +0 -28
  424. data/spec/lib/pact_broker/api/decorators/verifiable_pact_decorator_spec.rb +0 -94
  425. data/spec/lib/pact_broker/api/decorators/verifiable_pacts_decorator_spec.rb +0 -29
  426. data/spec/lib/pact_broker/api/decorators/verification_decorator_spec.rb +0 -81
  427. data/spec/lib/pact_broker/api/decorators/verification_summary_decorator_spec.rb +0 -65
  428. data/spec/lib/pact_broker/api/decorators/version_decorator_spec.rb +0 -121
  429. data/spec/lib/pact_broker/api/decorators/versions_decorator_spec.rb +0 -49
  430. data/spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb +0 -210
  431. data/spec/lib/pact_broker/api/decorators/webhook_execution_result_decorator_spec.rb +0 -128
  432. data/spec/lib/pact_broker/api/decorators/webhook_request_template_decorator_spec.rb +0 -78
  433. data/spec/lib/pact_broker/api/decorators/webhooks_decorator_spec.rb +0 -48
  434. data/spec/lib/pact_broker/api/middleware/basic_auth_spec.rb +0 -312
  435. data/spec/lib/pact_broker/api/middleware/configuration_spec.rb +0 -43
  436. data/spec/lib/pact_broker/api/pact_broker_urls_spec.rb +0 -221
  437. data/spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb +0 -141
  438. data/spec/lib/pact_broker/api/renderers/integrations_dot_renderer_spec.rb +0 -29
  439. data/spec/lib/pact_broker/api/resources/all_webhooks_spec.rb +0 -145
  440. data/spec/lib/pact_broker/api/resources/badge_spec.rb +0 -212
  441. data/spec/lib/pact_broker/api/resources/can_i_deploy_badge_spec.rb +0 -80
  442. data/spec/lib/pact_broker/api/resources/can_i_deploy_pacticipant_version_spec.rb +0 -31
  443. data/spec/lib/pact_broker/api/resources/can_i_deploy_spec.rb +0 -51
  444. data/spec/lib/pact_broker/api/resources/dashboard_spec.rb +0 -36
  445. data/spec/lib/pact_broker/api/resources/default_base_resource_approval_spec.rb +0 -60
  446. data/spec/lib/pact_broker/api/resources/default_base_resource_spec.rb +0 -224
  447. data/spec/lib/pact_broker/api/resources/error_response_body_generator_spec.rb +0 -69
  448. data/spec/lib/pact_broker/api/resources/group_spec.rb +0 -82
  449. data/spec/lib/pact_broker/api/resources/latest_pact_spec.rb +0 -80
  450. data/spec/lib/pact_broker/api/resources/latest_provider_pacts_spec.rb +0 -52
  451. data/spec/lib/pact_broker/api/resources/latest_verifications_for_consumer_version_spec.rb +0 -68
  452. data/spec/lib/pact_broker/api/resources/matrix_badge_spec.rb +0 -11
  453. data/spec/lib/pact_broker/api/resources/matrix_spec.rb +0 -42
  454. data/spec/lib/pact_broker/api/resources/pact_spec.rb +0 -178
  455. data/spec/lib/pact_broker/api/resources/pact_triggered_webhooks_spec.rb +0 -54
  456. data/spec/lib/pact_broker/api/resources/pacticipant_spec.rb +0 -60
  457. data/spec/lib/pact_broker/api/resources/pacticipant_webhooks_spec.rb +0 -238
  458. data/spec/lib/pact_broker/api/resources/pacticipants_spec.rb +0 -87
  459. data/spec/lib/pact_broker/api/resources/provider_pacts_for_verification_spec.rb +0 -116
  460. data/spec/lib/pact_broker/api/resources/provider_pacts_spec.rb +0 -75
  461. data/spec/lib/pact_broker/api/resources/released_version_spec.rb +0 -61
  462. data/spec/lib/pact_broker/api/resources/tag_spec.rb +0 -166
  463. data/spec/lib/pact_broker/api/resources/tagged_pact_versions_spec.rb +0 -96
  464. data/spec/lib/pact_broker/api/resources/triggered_webhook_logs_spec.rb +0 -32
  465. data/spec/lib/pact_broker/api/resources/verification_spec.rb +0 -87
  466. data/spec/lib/pact_broker/api/resources/verification_triggered_webhooks_spec.rb +0 -67
  467. data/spec/lib/pact_broker/api/resources/verifications_spec.rb +0 -135
  468. data/spec/lib/pact_broker/api/resources/webhook_execution_spec.rb +0 -92
  469. data/spec/lib/pact_broker/api/resources/webhook_spec.rb +0 -115
  470. data/spec/lib/pact_broker/app_basic_auth_spec.rb +0 -122
  471. data/spec/lib/pact_broker/app_spec.rb +0 -348
  472. data/spec/lib/pact_broker/badges/service_spec.rb +0 -348
  473. data/spec/lib/pact_broker/build_http_options_spec.rb +0 -47
  474. data/spec/lib/pact_broker/certificates/service_spec.rb +0 -80
  475. data/spec/lib/pact_broker/config/load_spec.rb +0 -110
  476. data/spec/lib/pact_broker/config/runtime_configuration_documentation_spec.rb +0 -30
  477. data/spec/lib/pact_broker/config/runtime_configuration_logging_methods_spec.rb +0 -22
  478. data/spec/lib/pact_broker/config/runtime_configuration_spec.rb +0 -71
  479. data/spec/lib/pact_broker/config/save_spec.rb +0 -100
  480. data/spec/lib/pact_broker/config/space_delimited_integer_list_spec.rb +0 -47
  481. data/spec/lib/pact_broker/config/space_delimited_string_list_spec.rb +0 -45
  482. data/spec/lib/pact_broker/configuration_spec.rb +0 -167
  483. data/spec/lib/pact_broker/contracts/service_spec.rb +0 -193
  484. data/spec/lib/pact_broker/db/clean_incremental_spec.rb +0 -120
  485. data/spec/lib/pact_broker/db/clean_old_spec.rb +0 -123
  486. data/spec/lib/pact_broker/db/clean_spec.rb +0 -153
  487. data/spec/lib/pact_broker/db/data_migrations/create_branches_spec.rb +0 -57
  488. data/spec/lib/pact_broker/db/data_migrations/migrate_webhook_headers_spec.rb +0 -78
  489. data/spec/lib/pact_broker/db/data_migrations/set_consumer_ids_for_pact_publications_spec.rb +0 -40
  490. data/spec/lib/pact_broker/db/data_migrations/set_interactions_counts_spec.rb +0 -38
  491. data/spec/lib/pact_broker/db/data_migrations/set_latest_version_sequence_value_spec.rb +0 -68
  492. data/spec/lib/pact_broker/db/data_migrations/set_pacticipant_main_branch_spec.rb +0 -41
  493. data/spec/lib/pact_broker/db/delete_overwritten_data_spec.rb +0 -161
  494. data/spec/lib/pact_broker/db/log_quietener_spec.rb +0 -52
  495. data/spec/lib/pact_broker/db/validate_encoding_spec.rb +0 -66
  496. data/spec/lib/pact_broker/deployments/deployed_version_service_spec.rb +0 -42
  497. data/spec/lib/pact_broker/deployments/deployed_version_spec.rb +0 -109
  498. data/spec/lib/pact_broker/deployments/environment_service_spec.rb +0 -58
  499. data/spec/lib/pact_broker/deployments/environment_spec.rb +0 -27
  500. data/spec/lib/pact_broker/diagnostic/resources/dependencies_spec.rb +0 -85
  501. data/spec/lib/pact_broker/diagnostic/resources/heartbeat_spec.rb +0 -34
  502. data/spec/lib/pact_broker/doc/controllers/app_spec.rb +0 -82
  503. data/spec/lib/pact_broker/doc/coverage_spec.rb +0 -39
  504. data/spec/lib/pact_broker/domain/group_spec.rb +0 -25
  505. data/spec/lib/pact_broker/domain/index_item_spec.rb +0 -24
  506. data/spec/lib/pact_broker/domain/order_versions_spec.rb +0 -84
  507. data/spec/lib/pact_broker/domain/pact_spec.rb +0 -27
  508. data/spec/lib/pact_broker/domain/tag_spec.rb +0 -134
  509. data/spec/lib/pact_broker/domain/verification_spec.rb +0 -133
  510. data/spec/lib/pact_broker/domain/version_spec.rb +0 -490
  511. data/spec/lib/pact_broker/domain/webhook_request_spec.rb +0 -196
  512. data/spec/lib/pact_broker/domain/webhook_spec.rb +0 -168
  513. data/spec/lib/pact_broker/errors/error_logger_spec.rb +0 -65
  514. data/spec/lib/pact_broker/errors_spec.rb +0 -54
  515. data/spec/lib/pact_broker/events/subscriber_spec.rb +0 -43
  516. data/spec/lib/pact_broker/feature_toggle_spec.rb +0 -80
  517. data/spec/lib/pact_broker/groups/service_spec.rb +0 -52
  518. data/spec/lib/pact_broker/hash_refinements_spec.rb +0 -63
  519. data/spec/lib/pact_broker/index/service_spec.rb +0 -400
  520. data/spec/lib/pact_broker/index/service_view_spec.rb +0 -144
  521. data/spec/lib/pact_broker/integrations/integration_spec.rb +0 -108
  522. data/spec/lib/pact_broker/integrations/service_spec.rb +0 -282
  523. data/spec/lib/pact_broker/labels/repository_spec.rb +0 -124
  524. data/spec/lib/pact_broker/labels/service_spec.rb +0 -28
  525. data/spec/lib/pact_broker/matrix/aggregated_row_spec.rb +0 -100
  526. data/spec/lib/pact_broker/matrix/can_i_deploy_query_schema_spec.rb +0 -72
  527. data/spec/lib/pact_broker/matrix/deployment_status_summary_spec.rb +0 -300
  528. data/spec/lib/pact_broker/matrix/every_row_spec.rb +0 -133
  529. data/spec/lib/pact_broker/matrix/head_row_spec.rb +0 -89
  530. data/spec/lib/pact_broker/matrix/integration_environment_spec.rb +0 -187
  531. data/spec/lib/pact_broker/matrix/integration_ignore_spec.rb +0 -238
  532. data/spec/lib/pact_broker/matrix/integration_spec.rb +0 -504
  533. data/spec/lib/pact_broker/matrix/parse_can_i_deploy_query_spec.rb +0 -77
  534. data/spec/lib/pact_broker/matrix/parse_query_spec.rb +0 -141
  535. data/spec/lib/pact_broker/matrix/quick_row_spec.rb +0 -74
  536. data/spec/lib/pact_broker/matrix/repository_dependency_spec.rb +0 -56
  537. data/spec/lib/pact_broker/matrix/repository_query_limit_spec.rb +0 -78
  538. data/spec/lib/pact_broker/matrix/repository_spec.rb +0 -888
  539. data/spec/lib/pact_broker/matrix/row_spec.rb +0 -74
  540. data/spec/lib/pact_broker/matrix/service_spec.rb +0 -200
  541. data/spec/lib/pact_broker/messages_spec.rb +0 -29
  542. data/spec/lib/pact_broker/metrics/service_spec.rb +0 -131
  543. data/spec/lib/pact_broker/pacticipants/find_potential_duplicate_pacticipant_names_spec.rb +0 -63
  544. data/spec/lib/pact_broker/pacticipants/generate_display_name_spec.rb +0 -39
  545. data/spec/lib/pact_broker/pacticipants/repository_spec.rb +0 -239
  546. data/spec/lib/pact_broker/pacticipants/service_spec.rb +0 -217
  547. data/spec/lib/pact_broker/pacts/build_verifiable_pact_notices_spec.rb +0 -75
  548. data/spec/lib/pact_broker/pacts/content_spec.rb +0 -447
  549. data/spec/lib/pact_broker/pacts/create_formatted_diff_spec.rb +0 -29
  550. data/spec/lib/pact_broker/pacts/diff_spec.rb +0 -99
  551. data/spec/lib/pact_broker/pacts/generate_interaction_sha_spec.rb +0 -45
  552. data/spec/lib/pact_broker/pacts/generate_sha_spec.rb +0 -92
  553. data/spec/lib/pact_broker/pacts/merger_spec.rb +0 -171
  554. data/spec/lib/pact_broker/pacts/metadata_spec.rb +0 -147
  555. data/spec/lib/pact_broker/pacts/pact_params_spec.rb +0 -111
  556. data/spec/lib/pact_broker/pacts/pact_publication_clean_selector_dataset_module_spec.rb +0 -97
  557. data/spec/lib/pact_broker/pacts/pact_publication_dataset_module_spec.rb +0 -499
  558. data/spec/lib/pact_broker/pacts/pact_publication_latest_verification_spec.rb +0 -29
  559. data/spec/lib/pact_broker/pacts/pact_publication_selector_dataset_module_spec.rb +0 -185
  560. data/spec/lib/pact_broker/pacts/pact_publication_spec.rb +0 -559
  561. data/spec/lib/pact_broker/pacts/pact_version_spec.rb +0 -343
  562. data/spec/lib/pact_broker/pacts/repository_find_for_currently_deployed_spec.rb +0 -124
  563. data/spec/lib/pact_broker/pacts/repository_find_for_currently_supported_releases_spec.rb +0 -159
  564. data/spec/lib/pact_broker/pacts/repository_find_for_verification_fallback_spec.rb +0 -87
  565. data/spec/lib/pact_broker/pacts/repository_find_for_verification_spec.rb +0 -380
  566. data/spec/lib/pact_broker/pacts/repository_find_wip_pact_versions_for_provider_branch_spec.rb +0 -282
  567. data/spec/lib/pact_broker/pacts/repository_find_wip_pact_versions_for_provider_spec.rb +0 -375
  568. data/spec/lib/pact_broker/pacts/repository_spec.rb +0 -1079
  569. data/spec/lib/pact_broker/pacts/selected_pact_spec.rb +0 -23
  570. data/spec/lib/pact_broker/pacts/selector_spec.rb +0 -77
  571. data/spec/lib/pact_broker/pacts/selectors_spec.rb +0 -30
  572. data/spec/lib/pact_broker/pacts/service_spec.rb +0 -355
  573. data/spec/lib/pact_broker/pacts/sort_content_spec.rb +0 -57
  574. data/spec/lib/pact_broker/pacts/squash_pacts_for_verification_spec.rb +0 -70
  575. data/spec/lib/pact_broker/pacts/verifiable_pact_messages_spec.rb +0 -253
  576. data/spec/lib/pact_broker/pacts/verifiable_pact_spec.rb +0 -0
  577. data/spec/lib/pact_broker/relationships/groupify_spec.rb +0 -43
  578. data/spec/lib/pact_broker/tags/repository_spec.rb +0 -144
  579. data/spec/lib/pact_broker/tags/service_spec.rb +0 -66
  580. data/spec/lib/pact_broker/ui/controllers/can_i_deploy_spec.rb +0 -26
  581. data/spec/lib/pact_broker/ui/controllers/clusters_spec.rb +0 -27
  582. data/spec/lib/pact_broker/ui/controllers/index_spec.rb +0 -132
  583. data/spec/lib/pact_broker/ui/view_models/index_item_spec.rb +0 -173
  584. data/spec/lib/pact_broker/ui/view_models/index_items_spec.rb +0 -35
  585. data/spec/lib/pact_broker/ui/view_models/matrix_deployed_version_spec.rb +0 -29
  586. data/spec/lib/pact_broker/ui/view_models/matrix_line_spec.rb +0 -41
  587. data/spec/lib/pact_broker/verifications/pseudo_branch_status_spec.rb +0 -56
  588. data/spec/lib/pact_broker/verifications/repository_spec.rb +0 -350
  589. data/spec/lib/pact_broker/verifications/sequence_spec.rb +0 -73
  590. data/spec/lib/pact_broker/verifications/service_spec.rb +0 -266
  591. data/spec/lib/pact_broker/verifications/summary_for_consumer_version_spec.rb +0 -72
  592. data/spec/lib/pact_broker/versions/abbreviate_number_spec.rb +0 -23
  593. data/spec/lib/pact_broker/versions/branch_service_spec.rb +0 -71
  594. data/spec/lib/pact_broker/versions/branch_version_repository_spec.rb +0 -81
  595. data/spec/lib/pact_broker/versions/branch_version_spec.rb +0 -27
  596. data/spec/lib/pact_broker/versions/parse_semantic_version_spec.rb +0 -42
  597. data/spec/lib/pact_broker/versions/repository_spec.rb +0 -302
  598. data/spec/lib/pact_broker/versions/service_spec.rb +0 -137
  599. data/spec/lib/pact_broker/webhooks/check_host_whitelist_spec.rb +0 -85
  600. data/spec/lib/pact_broker/webhooks/execution_configuration_spec.rb +0 -18
  601. data/spec/lib/pact_broker/webhooks/job_spec.rb +0 -188
  602. data/spec/lib/pact_broker/webhooks/pact_and_verification_parameters_spec.rb +0 -16
  603. data/spec/lib/pact_broker/webhooks/redact_logs_spec.rb +0 -60
  604. data/spec/lib/pact_broker/webhooks/render_spec.rb +0 -221
  605. data/spec/lib/pact_broker/webhooks/repository_spec.rb +0 -933
  606. data/spec/lib/pact_broker/webhooks/service_spec.rb +0 -184
  607. data/spec/lib/pact_broker/webhooks/status_spec.rb +0 -54
  608. data/spec/lib/pact_broker/webhooks/trigger_service_spec.rb +0 -461
  609. data/spec/lib/pact_broker/webhooks/triggered_webhook_spec.rb +0 -40
  610. data/spec/lib/pact_broker/webhooks/webhook_request_logger_spec.rb +0 -207
  611. data/spec/lib/pact_broker/webhooks/webhook_request_template_spec.rb +0 -227
  612. data/spec/lib/pact_broker/webhooks/webhook_spec.rb +0 -39
  613. data/spec/lib/rack/hal_browser/redirect_spec.rb +0 -63
  614. data/spec/lib/rack/pact_broker/add_pact_broker_version_header_spec.rb +0 -16
  615. data/spec/lib/rack/pact_broker/database_transaction_spec.rb +0 -77
  616. data/spec/lib/rack/pact_broker/invalid_uri_protection_spec.rb +0 -50
  617. data/spec/lib/rack/pact_broker/request_target_spec.rb +0 -69
  618. data/spec/lib/rack/pact_broker/set_base_url_spec.rb +0 -86
  619. data/spec/lib/rack/pact_broker/use_when_spec.rb +0 -49
  620. data/spec/lib/sequel/plugins/insert_ignore_spec.rb +0 -82
  621. data/spec/lib/sequel/plugins/upsert_spec.rb +0 -159
  622. data/spec/lib/webmachine/rack_adapter_monkey_patch_spec.rb +0 -49
  623. data/spec/migrations/20180201_create_head_matrix_spec.rb +0 -132
  624. data/spec/migrations/23_pact_versions_spec.rb +0 -77
  625. data/spec/migrations/24_populate_pact_contents_spec.rb +0 -22
  626. data/spec/migrations/34_latest_tagged_pacts_spec.rb +0 -84
  627. data/spec/migrations/34_pact_revisions_spec.rb +0 -82
  628. data/spec/migrations/41_migrate_execution_data_spec.rb +0 -109
  629. data/spec/migrations/42_delete_ophan_webhook_data_spec.rb +0 -98
  630. data/spec/migrations/44_add_provider_version_to_verification_spec.rb +0 -56
  631. data/spec/migrations/50_create_latest_matrix_spec.rb +0 -181
  632. data/spec/migrations/change_migration_strategy_spec.rb +0 -85
  633. data/spec/migrations/rollback_spec.rb +0 -8
  634. data/spec/service_consumers/hal_relation_proxy_app.rb +0 -61
  635. data/spec/service_consumers/pact_helper.rb +0 -61
  636. data/spec/service_consumers/provider_states_for_pact_broker_client.rb +0 -341
  637. data/spec/service_consumers/provider_states_for_pact_broker_client_2.rb +0 -36
  638. data/spec/service_consumers/provider_states_for_pact_ruby.rb +0 -158
  639. data/spec/spec_helper.rb +0 -65
  640. data/spec/support/approvals.rb +0 -55
  641. data/spec/support/database.rb +0 -9
  642. data/spec/support/database_cleaner.rb +0 -44
  643. data/spec/support/documentation.rb +0 -64
  644. data/spec/support/fixture_helpers.rb +0 -10
  645. data/spec/support/fixture_pact.rb +0 -34
  646. data/spec/support/foo-bar.json +0 -34
  647. data/spec/support/generated_index.md +0 -4
  648. data/spec/support/generated_markdown.md +0 -55
  649. data/spec/support/interaction_view_model.json +0 -63
  650. data/spec/support/interaction_view_model_with_terms.json +0 -50
  651. data/spec/support/logging.rb +0 -6
  652. data/spec/support/markdown_pact.json +0 -48
  653. data/spec/support/markdown_pact_v3.json +0 -44
  654. data/spec/support/markdown_pact_with_html.json +0 -27
  655. data/spec/support/markdown_pact_with_markdown_chars_in_names.json +0 -11
  656. data/spec/support/metadata_test_server.rb +0 -40
  657. data/spec/support/migration_helpers.rb +0 -16
  658. data/spec/support/rack_helpers.rb +0 -20
  659. data/spec/support/rspec_match_hash.rb +0 -26
  660. data/spec/support/rspec_matchers.rb +0 -9
  661. data/spec/support/shared_context.rb +0 -32
  662. data/spec/support/shared_examples_for_responses.rb +0 -96
  663. data/spec/support/simplecov.rb +0 -23
  664. data/spec/support/ssl_pact_broker_server.rb +0 -46
  665. data/spec/support/ssl_webhook_server.rb +0 -39
  666. data/spec/support/test_data_builder.rb +0 -3
  667. data/spec/support/verification_job.rb +0 -37
  668. data/spec/support/warning_silencer.rb +0 -10
  669. data/spec/support/webhook_endpoint_middleware.rb +0 -22
  670. data/tasks/audit.rake +0 -6
  671. data/tasks/database/annotate.rb +0 -48
  672. data/tasks/database/table_dependency_calculator.rb +0 -8
  673. data/tasks/database.rb +0 -161
  674. data/tasks/db.rake +0 -147
  675. data/tasks/development.rake +0 -52
  676. data/tasks/docker_database.rb +0 -26
  677. data/tasks/pact.rake +0 -16
  678. data/tasks/release.rake +0 -6
  679. data/tasks/rspec.rake +0 -32
  680. data/tasks/test_db.rake +0 -32
  681. data/vendor/hal-browser/.gitignore +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4932100e3772127c1bccbb90c5db0e943678d14577bf163e90e61a0cd32f8685
4
- data.tar.gz: 9b136a90d19d213f7a28c10ad518dabf0a974be80e11f6d06e199584bef2ca28
3
+ metadata.gz: a41b90582f2bdd3705172c79b28f01ca1bf9db3c2a32aa221baf164315017d74
4
+ data.tar.gz: 3e3c6263edf2440b0fd1003f4a4bc03a4b81df3f85953a56e2dae23bd2b95fa2
5
5
  SHA512:
6
- metadata.gz: d6820acb97cc28b5a94e7ae939b0ee5c87e96e626956c721b19484407771735fa33f07ae61bf3d4e4cab3bb17176d348a804715a670e925ffb47d5ece07efccc
7
- data.tar.gz: 947e0f04cd880ee4dec65eceaf1bd0d82c0975338bcf0ed1efe309f3716b70d3e666be7b36814ce0382fcf462a0cf38156b22611332ee56135622cdbf6c4ef0e
6
+ metadata.gz: 0fdf1ae5f33491587a8a26f730976089a91a763376974f4703df46317b64e9814d2d4c56319c5417ebcad4485b79b9ec3d152175b4470d8021b7e27f9ce6ef6d
7
+ data.tar.gz: 7a02341d2cd0f63a7168b2d437f4b10346d82243dc0b624af686d74de645c4f611deb756ecd9076eb226666af38600bd6448c8abcb58633f4db10c8a5d5ed468
data/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ <a name="v2.90.0"></a>
2
+ ### v2.90.0 (2021-11-12)
3
+
4
+ #### Features
5
+
6
+ * do not let clean task delete currently deployed or currently released+supported versions ([b05f0b67](/../../commit/b05f0b67))
7
+ * allow webhook certificates to be configured in the pact_broker.yml file ([7c60c955](/../../commit/7c60c955))
8
+
9
+ #### Bug Fixes
10
+
11
+ * handle conflict check for pacts where the interactions are missing in one or the other ([71844f0f](/../../commit/71844f0f))
12
+ * fix error that occurs in some versions of Sqlite when running 20210702_drop_unused_columns_from_deployed_versions.rb ([0daa4459](/../../commit/0daa4459))
13
+ * correct logic when redacting database URL without a password ([30d66cf7](/../../commit/30d66cf7))
14
+ * set resolved environment for environment selectors ([f02474b7](/../../commit/f02474b7))
15
+
16
+ * **deps**
17
+ * upgrade to bootstrap v4.6.1 ([0433107c](/../../commit/0433107c))
18
+
1
19
  <a name="v2.89.1"></a>
2
20
  ### v2.89.1 (2021-10-28)
3
21
 
@@ -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,10 @@
1
+ require_relative "../ddl_statements/all_verifications"
2
+
3
+ Sequel.migration do
4
+ up do
5
+ create_or_replace_view(:all_verifications, all_verifications_v2(self))
6
+ end
7
+
8
+ down do
9
+ end
10
+ 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
@@ -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
@@ -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
- cert_arr = certificate.content.split(/(-----END [^\-]+-----)/).each_slice(2).map(&:join).map(&:strip).select{|s| !s.empty?}
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
@@ -52,6 +52,7 @@ module PactBroker
52
52
  webhook_scheme_whitelist: ["https"],
53
53
  webhook_host_whitelist: [],
54
54
  disable_ssl_verification: false,
55
+ webhook_certificates: [],
55
56
  user_agent: "Pact Broker v#{PactBroker::VERSION}",
56
57
  )
57
58
 
@@ -174,6 +175,14 @@ module PactBroker
174
175
  super(value_to_string_array(features, "features").collect(&:downcase))
175
176
  end
176
177
 
178
+ def webhook_certificates= webhook_certificates
179
+ if webhook_certificates.is_a?(Array)
180
+ super(webhook_certificates.collect(&:symbolize_keys))
181
+ elsif !webhook_certificates.nil?
182
+ raise_validation_error("webhook_certificates must be an array")
183
+ end
184
+ end
185
+
177
186
  def warning_error_classes
178
187
  warning_error_class_names.collect do | class_name |
179
188
  begin
@@ -38,8 +38,12 @@ module PactBroker
38
38
  if value && name.to_s.end_with?("_url")
39
39
  begin
40
40
  uri = URI(value)
41
- uri.password = "*****"
42
- uri.to_s
41
+ if uri.password
42
+ uri.password = "*****"
43
+ uri.to_s
44
+ else
45
+ value
46
+ end
43
47
  rescue StandardError
44
48
  "*****"
45
49
  end
@@ -0,0 +1,40 @@
1
+ require "pact_broker/db/data_migrations/helpers"
2
+
3
+ module PactBroker
4
+ module DB
5
+ module DataMigrations
6
+ class MigrateIntegrations
7
+ extend Helpers
8
+
9
+ def self.call(connection)
10
+ self_join = {
11
+ Sequel[:pact_publications][:consumer_id] => Sequel[:existing_integrations][:consumer_id],
12
+ Sequel[:pact_publications][:provider_id] => Sequel[:existing_integrations][:provider_id]
13
+ }
14
+
15
+ missing_integrations = connection
16
+ .from(:pact_publications)
17
+ .select(
18
+ Sequel[:pact_publications][:consumer_id],
19
+ Sequel[:consumer][:name].as(:consumer_name),
20
+ Sequel[:pact_publications][:provider_id],
21
+ Sequel[:provider][:name].as(:provider_name),
22
+ Sequel[:consumer][:created_at]
23
+ )
24
+ .distinct
25
+ .left_outer_join(:integrations, self_join, { :table_alias => :existing_integrations })
26
+ .join(:pacticipants, { :id => :consumer_id }, { :table_alias => :consumer, implicit_qualifier: :pact_publications })
27
+ .join(:pacticipants, { :id => :provider_id }, { :table_alias => :provider, implicit_qualifier: :pact_publications })
28
+ .where(Sequel[:existing_integrations][:provider_id] => nil)
29
+
30
+ connection
31
+ .from(:integrations)
32
+ .insert(
33
+ [:consumer_id, :consumer_name, :provider_id, :provider_name, :created_at],
34
+ missing_integrations
35
+ )
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -27,6 +27,7 @@ module PactBroker
27
27
  DataMigrations::SetConsumerVersionOrderForPactPublications.call(database_connection)
28
28
  DataMigrations::SetExtraColumnsForTags.call(database_connection)
29
29
  DataMigrations::CreateBranches.call(database_connection)
30
+ DataMigrations::MigrateIntegrations.call(database_connection)
30
31
  end
31
32
  end
32
33
  end
@@ -102,6 +102,8 @@ Webhooks can be created to match events of certain set of [consumers or provider
102
102
 
103
103
  `contract_content_changed:` triggered when the content of the contract, or tags applied to the contract have changed since the previous publication. If `base_equality_only_on_content_that_affects_verification_results` is set to `true` in the configuration (the default), any changes to whitespace, ordering of keys, or the ordering of the `interactions` or `messages` will be ignored, and will not trigger this event. It is recommended to trigger a provider verification build for this event.
104
104
 
105
+ `contract_requiring_verification_published:` when a pact is published, triggered once for each unique provider version that is either the latest from the main branch of the provider, or is currently deployed or released.
106
+
105
107
  `provider_verification_published:` triggered whenever a provider publishes a verification result.
106
108
 
107
109
  `provider_verification_succeeded:` triggered whenever a provider publishes a successful verification result.
@@ -127,6 +129,7 @@ The following variables may be used in the request path, parameters or body, and
127
129
  * `${pactbroker.bitbucketVerificationStatus}`: the verification status using the correct keywords for posting to the the [Bitbucket commit status API](https://developer.atlassian.com/server/bitbucket/how-tos/updating-build-status-for-commits/).
128
130
  * `${pactbroker.gitlabVerificationStatus}`: the verification status using the correct keywords for posting to the the [Gitlab Commits API](https://docs.gitlab.com/ee/api/commits.html#post-the-build-status-to-a-commit).
129
131
  * `${pactbroker.verificationResultUrl}`: the URL to the relevant verification result.
132
+ * `${pactbroker.providerVersionDescriptions}`: The descriptions of the provider version(s) for which the contract_requiring_verification_published webhook has been triggered. Only populated for the contract_requiring_verification_published event.
130
133
 
131
134
  Example usage:
132
135
 
@@ -143,6 +146,26 @@ Example usage:
143
146
  }
144
147
  }
145
148
 
149
+ #### Pacticipant versions used in the template parameters
150
+
151
+ The consumer version and provider version will be populated from different sources depending on which event has been triggered,
152
+ and how it has been triggered.
153
+
154
+ ##### contract published/changed
155
+
156
+ * *Consumer version*: The consumer version the pact is published with.
157
+ * *Provider version*: This is the provider version of the latest verification for this pact content from the main branch of the provider, if it exists. Otherwise, it is the overall latest provider version that has verified the pact content. If there is none, it will be empty.
158
+
159
+ ##### contract requiring verification published
160
+
161
+ * *Consumer version*: The consumer version the pact is published with.
162
+ * *Provider version*: A webhook will be triggered for each unique provider version that is either the latest from the main branch of the provider, or is currently deployed or released.
163
+
164
+ ##### provider verification published/failed/succeeded
165
+
166
+ * *Consumer version*: If the pact was verified using the URL passed through from the webhook, then the consumer version will be the one from the pact publication that triggered the webhook. If the result was from the provider verification task, then a webhook will be triggered for each unique consumer version identified by the consumer version selectors that selected that pact content.
167
+ * *Provider version*: The provider version that the verification was published with.
168
+
146
169
  <a name="whitelist"></a>
147
170
  ### Webhook Whitelist
148
171
 
@@ -103,6 +103,8 @@ end
103
103
  # Referenced By:
104
104
  # branches | branches_pacticipant_id_fkey | (pacticipant_id) REFERENCES pacticipants(id) ON DELETE CASCADE
105
105
  # currently_deployed_version_ids | currently_deployed_version_ids_pacticipant_id_fkey | (pacticipant_id) REFERENCES pacticipants(id) ON DELETE CASCADE
106
+ # integrations | integrations_consumer_id_foreign_key | (consumer_id) REFERENCES pacticipants(id) ON DELETE CASCADE
107
+ # integrations | integrations_provider_id_foreign_key | (provider_id) REFERENCES pacticipants(id) ON DELETE CASCADE
106
108
  # labels | labels_pacticipant_id_fkey | (pacticipant_id) REFERENCES pacticipants(id)
107
109
  # latest_pact_publication_ids_for_consumer_versions | latest_pact_publication_ids_for_consumer_versi_consumer_id_fkey | (consumer_id) REFERENCES pacticipants(id) ON DELETE CASCADE
108
110
  # latest_pact_publication_ids_for_consumer_versions | latest_pact_publication_ids_for_consumer_versi_provider_id_fkey | (provider_id) REFERENCES pacticipants(id) ON DELETE CASCADE
@@ -6,8 +6,8 @@ require "pact_broker/webhooks/webhook"
6
6
 
7
7
  module PactBroker
8
8
  module Integrations
9
- class Integration < Sequel::Model
10
- set_primary_key [:consumer_id, :provider_id]
9
+ class Integration < Sequel::Model(Sequel::Model.db[:integrations].select(:id, :consumer_id, :provider_id))
10
+ plugin :insert_ignore, identifying_columns: [:consumer_id, :provider_id]
11
11
  associate(:many_to_one, :consumer, :class => "PactBroker::Domain::Pacticipant", :key => :consumer_id, :primary_key => :id)
12
12
  associate(:many_to_one, :provider, :class => "PactBroker::Domain::Pacticipant", :key => :provider_id, :primary_key => :id)
13
13
  associate(:one_to_one, :latest_verification, :class => "PactBroker::Verifications::LatestVerificationForConsumerAndProvider", key: [:consumer_id, :provider_id], primary_key: [:consumer_id, :provider_id])
@@ -18,7 +18,7 @@ module PactBroker
18
18
  # Update: now we have pagination, we should probably filter the pacts by consumer/provider id.
19
19
  LATEST_PACT_EAGER_LOADER = proc do |eo_opts|
20
20
  eo_opts[:rows].each do |integration|
21
- integration.associations[:latest_pact] = []
21
+ integration.associations[:latest_pact] = nil
22
22
  end
23
23
 
24
24
  PactBroker::Pacts::PactPublication.overall_latest.each do | pact |
@@ -53,12 +53,24 @@ module PactBroker
53
53
  end
54
54
  end)
55
55
 
56
+ def self.compare_by_last_action_date a, b
57
+ if b.latest_pact_or_verification_publication_date && a.latest_pact_or_verification_publication_date
58
+ b.latest_pact_or_verification_publication_date <=> a.latest_pact_or_verification_publication_date
59
+ elsif b.latest_pact_or_verification_publication_date
60
+ 1
61
+ elsif a.latest_pact_or_verification_publication_date
62
+ -1
63
+ else
64
+ a <=> b
65
+ end
66
+ end
67
+
56
68
  def verification_status_for_latest_pact
57
69
  @verification_status_for_latest_pact ||= PactBroker::Verifications::PseudoBranchStatus.new(latest_pact, latest_pact&.latest_verification)
58
70
  end
59
71
 
60
72
  def latest_pact_or_verification_publication_date
61
- [latest_pact.created_at, latest_verification_publication_date].compact.max
73
+ [latest_pact&.created_at, latest_verification_publication_date].compact.max
62
74
  end
63
75
 
64
76
  def latest_verification_publication_date
@@ -66,16 +78,28 @@ module PactBroker
66
78
  end
67
79
 
68
80
  def <=>(other)
69
- [consumer.name.downcase, provider.name.downcase] <=> [other.consumer.name.downcase, other.provider.name.downcase]
81
+ [consumer_name.downcase, provider_name.downcase] <=> [other.consumer_name.downcase, other.provider_name.downcase]
82
+ end
83
+
84
+ def consumer_name
85
+ consumer.name
86
+ end
87
+
88
+ def provider_name
89
+ provider.name
70
90
  end
71
91
  end
72
92
  end
73
93
  end
74
94
 
75
95
  # Table: integrations
76
- # Primary Key: (consumer_id, provider_id)
77
96
  # Columns:
78
- # consumer_id | integer |
79
- # consumer_name | text |
80
- # provider_id | integer |
81
- # provider_name | text |
97
+ # id | integer | PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY
98
+ # consumer_id | integer | NOT NULL
99
+ # provider_id | integer | NOT NULL
100
+ # Indexes:
101
+ # integrations_pkey | PRIMARY KEY btree (id)
102
+ # integrations_consumer_id_provider_id_unique | UNIQUE btree (consumer_id, provider_id)
103
+ # Foreign key constraints:
104
+ # integrations_consumer_id_foreign_key | (consumer_id) REFERENCES pacticipants(id) ON DELETE CASCADE
105
+ # integrations_provider_id_foreign_key | (provider_id) REFERENCES pacticipants(id) ON DELETE CASCADE
@@ -0,0 +1,22 @@
1
+ require "pact_broker/integrations/integration"
2
+
3
+ module PactBroker
4
+ module Integrations
5
+ class Repository
6
+ def create_for_pact(consumer_id, provider_id)
7
+ if Integration.where(consumer_id: consumer_id, provider_id: provider_id).empty?
8
+ Integration.new(
9
+ consumer_id: consumer_id,
10
+ provider_id: provider_id,
11
+ created_at: Sequel.datetime_class.now
12
+ ).insert_ignore
13
+ end
14
+ nil
15
+ end
16
+
17
+ def delete(consumer_id, provider_id)
18
+ Integration.where(consumer_id: consumer_id, provider_id: provider_id).delete
19
+ end
20
+ end
21
+ end
22
+ end
@@ -29,7 +29,7 @@ module PactBroker
29
29
  .eager(latest_pact: [:latest_verification, :pact_version])
30
30
  .eager(:latest_verification)
31
31
  .all
32
- .sort { | a, b| b.latest_pact_or_verification_publication_date <=> a.latest_pact_or_verification_publication_date }
32
+ .sort { | a, b| Integration.compare_by_last_action_date(a, b) }
33
33
  end
34
34
 
35
35
  def self.delete(consumer_name, provider_name)
@@ -41,7 +41,7 @@ module PactBroker
41
41
  pact_service.delete_all_pact_versions_between(consumer_name, and: provider_name)
42
42
  webhook_repository.delete_by_consumer_and_provider(consumer, provider)
43
43
  version_repository.delete_orphan_versions(consumer, provider)
44
-
44
+ integration_repository.delete(consumer.id, provider.id)
45
45
  pacticipant_service.delete_if_orphan(consumer)
46
46
  pacticipant_service.delete_if_orphan(provider) unless consumer == provider
47
47
  end
@@ -34,7 +34,7 @@ en:
34
34
  consumerVersionTags: The list of tag names for the most recent consumer version associated with the pact content, separated by ", "
35
35
  consumerVersionBranch: The repository branch associated with the consumer version
36
36
  providerVersionTags: The list of tag names for the provider version associated with the verification result, separated by ", ".
37
- providerVersionDescriptions: The descriptions of the provider version(s) for which the contract_requiring_verification_published webhook has been triggered.
37
+ providerVersionDescriptions: The descriptions of the provider version(s) for which the contract_requiring_verification_published webhook has been triggered. Only populated for the contract_requiring_verification_published event.
38
38
  providerVersionBranch: The repository branch associated with the provider version
39
39
  consumerLabels: The list of labels for the consumer associated with the pact content, separated by ", ".
40
40
  providerLabels: The list of labels for the provider associated with the pact content, separated by ", ".
@@ -46,7 +46,6 @@ en:
46
46
  gitlabVerificationStatus: The verification status using the correct keywords for posting to the Gitlab Commits API. See https://docs.gitlab.com/ee/api/commits.html#post-the-build-status-to-a-commit
47
47
  eventName: The name of the event that triggered the webhook
48
48
  buildUrl: The URL of the build that published the resources that have triggered the webhook (currently only supported for contracts published using the 'all in one' endpoint).
49
- currentlyDeployedProviderVersionNumber: The version number of the currently deployed provider version (when used in a template, the webhook will be triggered once for each currently deployed provider version)
50
49
  no_webhooks_enabled_for_event: No enabled webhooks found for the detected events
51
50
  webhook_triggered_for_event: Webhook %{webhook_description} triggered for event %{event_name}.
52
51
  triggered_webhook_see_logs: View logs at %{url}
@@ -77,9 +77,14 @@ module PactBroker
77
77
  ).save
78
78
  end
79
79
 
80
+ def delete(pacticipant)
81
+ pacticipant.destroy
82
+ end
83
+
80
84
  def pacticipant_names
81
85
  PactBroker::Domain::Pacticipant.select(:name).order(:name).collect(&:name)
82
86
  end
87
+
83
88
  def delete_if_orphan(pacticipant)
84
89
  if PactBroker::Domain::Version.where(pacticipant: pacticipant).empty? &&
85
90
  PactBroker::Pacts::PactPublication.where(provider: pacticipant).or(consumer: pacticipant).empty? &&
@@ -79,7 +79,7 @@ module PactBroker
79
79
  def self.delete(name)
80
80
  pacticipant = find_pacticipant_by_name name
81
81
  webhook_service.delete_all_webhhook_related_objects_by_pacticipant(pacticipant)
82
- pacticipant.destroy
82
+ pacticipant_repository.delete(pacticipant)
83
83
  end
84
84
 
85
85
  def self.delete_if_orphan(pacticipant)
@@ -9,10 +9,14 @@ module PactBroker
9
9
  def conflict? original_json, additional_json
10
10
  original, additional = [original_json, additional_json].map{|str| JSON.parse(str, PACT_PARSING_OPTIONS) }
11
11
 
12
- additional["interactions"].any? do |new_interaction|
13
- original["interactions"].any? do |original_interaction|
14
- same_description_and_state?(original_interaction, new_interaction) &&
15
- !same_request_properties?(original_interaction["request"], new_interaction["request"])
12
+ if original["interactions"].nil? || additional["interactions"].nil?
13
+ true
14
+ else
15
+ additional["interactions"].any? do |new_interaction|
16
+ original["interactions"].any? do |original_interaction|
17
+ same_description_and_state?(original_interaction, new_interaction) &&
18
+ !same_request_properties?(original_interaction["request"], new_interaction["request"])
19
+ end
16
20
  end
17
21
  end
18
22
  end
@@ -111,7 +111,7 @@ module PactBroker
111
111
  end
112
112
 
113
113
  def create_selected_pact(pact_publication, selector)
114
- resolved_selector = if selector.currently_deployed? || selector.currently_supported?
114
+ resolved_selector = if selector.currently_deployed? || selector.currently_supported? || selector.in_environment?
115
115
  environment = environment_service.find_by_name(pact_publication.values.fetch(:environment_name))
116
116
  selector.resolve_for_environment(pact_publication.consumer_version, environment, pact_publication.values[:target])
117
117
  else
@@ -37,6 +37,7 @@ module PactBroker
37
37
  end
38
38
 
39
39
  def create params
40
+ integration_repository.create_for_pact(params.fetch(:consumer_id), params.fetch(:provider_id))
40
41
  pact_version = find_or_create_pact_version(
41
42
  params.fetch(:consumer_id),
42
43
  params.fetch(:provider_id),
@@ -47,6 +47,11 @@ module PactBroker
47
47
  PactBroker::Versions::BranchVersionRepository.new
48
48
  end
49
49
 
50
+ def integration_repository
51
+ require "pact_broker/integrations/repository"
52
+ PactBroker::Integrations::Repository.new
53
+ end
54
+
50
55
  extend self
51
56
  end
52
57
  end