问题标签 [pact-broker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
160 浏览

functional-testing - 我可以使用 Pact 代理进行功能测试吗?

我有一个接收请求、生成电子邮件、将电子邮件保存到消息队列(由其他微服务发送)并返回 httpStatus.Ok 的服务。我想测试是否会针对不同的请求生成相关的电子邮件。

根据合同测试与功能测试 ,我的测试是功能性的,而不是合同测试。(如果我的服务会将电子邮件内容作为 api 响应返回,那么使用 Pact 进行合同测试肯定是合适的)。

我有一个使用 Pact 基础设施进行此类功能测试的想法,特别是
1.将请求和预期生成的电子邮件保存到 Pact Broker
2.在提供者验证测试中提交请求并使用预期的电子邮件验证生成的电子邮件。

在这样的功能测试中使用 Pact 有意义吗?
有谁知道类似用法的例子?
任何替代技术(最好在 .Net Core 中)进行类似测试?

我也在考虑 https://github.com/approvals/ApprovalTests.Net,但 Pact 基础设施更吸引我。

相关说明:Pact 通常适用于 http 请求/响应,但 Pact V3(尚未由 PackNet实现)为通过事件流和消息队列进行通信的服务引入了消息。一个描述消息协定合同测试的示例是 https://dius.com.au/2017/09/22/contract-testing-serverless-and-asynchronous-applications/Pact 为 MessageQueue 引用的:MessageQueues 的示例提供程序测试

0 投票
2 回答
1497 浏览

maven - 使用带有路径的契约代理

我正试图让我的契约经纪人在我的环境中工作。我在https://mydomain/pactbroker(图片;dius/pactbroker)下的 K8S 中运行了代理。我可以使用 maven 插件(发布)发送给代理。但是,当我尝试验证时出现错误;对路径“/”的请求失败,响应为“HTTP/1.1 401 Unauthorized”

有人可以帮我吗?

补充信息(欧洲中部时间 6 月 18 日 12:52):

当试图浏览日志时,它似乎试图通过路径“/”获取 HAL 根信息。然而回应; [WARNING] Could not fetch the root HAL document

当我启用 PreEmptive Authentication 时,我可以看到在 [WARNING] Using preemptive basic authentication with the pact broker at https://mydomain没有路径的情况下会发出类似警告。

0 投票
1 回答
149 浏览

maven - Pact Broker 的数据库支持

我们计划实施自定义 Pact Broker 并将其作为我们自己的应用程序在我们的工作场所实施,而不是使用任何现有的 docker 映像。

我知道 Pact Broker 建议与 PostgreSQL 一起使用并且还支持 MySQL,但只是想了解 Pact Broker 是否也支持 Oracle DB 作为其存储源之一?如果是的话,你能指出我正确的方向吗?

0 投票
1 回答
85 浏览

asp.net-core - 如何在构建 .net 核心时发布协议合同?

显然,这对于带有 Gradle 的 Java 应用程序是可能的。

我不想运行一些单独的脚本来发布我的 .net 核心应用程序的契约合同。

我如何在 期间发布我的协议合同dotnet build

这可能超出了我的问题范围,但我也可以通过这种方式将合同发布到 s3 吗?

0 投票
1 回答
309 浏览

url-rewriting - 在 Kubernetes 和 Istio 中使用 Pact-Broker 背后的反向代理和 URL 重写

我使用以下部署在本地 Kubernetes 集群中部署了pact-broker docker 映像(最新版本)。

为 istio 入口控制器配置了一个虚拟服务

契约经纪人 api 工作正常。我成功地将协议发布到https://my-domain.com/pactbroker/pacts/provider/test-provider/consumer/test-consumer/version/1.0.0

问题出在契约经纪人 UI 上。请求https://my-domain.com/pactbroker时,响应不完整。资源指向根目录。

HAL-Browser 也有类似的问题:

URI 模板中的引用未显示 uri 前缀“pactbroker”

我必须做些什么才能使其正常工作。

0 投票
1 回答
261 浏览

pact - 事件驱动应用程序的协议流

虽然 Pact 支持消息测试,但我发现“Pact Nirvana”中推荐的流程与我理解的事件驱动应用程序需要的流程不太匹配。

假设我们有一个Order management service和一个Shipping management serviceShipping服务发出ShippingPreparedEventOrder服务接收的s 。

如果我们删除了 中的一个字段ShippingPreparedEvent,我希望首先对 Order 服务进行更改,以便它停止读取旧字段。部署它。然后在Shipping服务中进行更改并部署它。这样,服务不会有任何停机时间。

但是,我相信 Pact 会期望首先部署Shipping服务(它是事件的提供者),以便在部署消费者之前可以验证合同。在这种情况下,首先部署提供者会破坏我的消费者。

这种情况能以某种方式避免吗?我错过了什么吗?

只是为了提供更多上下文,我们可以在此链接中看到不同的更改将需要不同的部署顺序。https://docs.confluent.io/current/schema-registry/avro.html#summary 我不会使用 Kafka 或 Avro,但我相信我的流程会类似。

非常感谢。

0 投票
1 回答
459 浏览

amazon-web-services - 如何保护 Pact Broker、消费者和提供者之间的通信

我们计划在我们的项目中实施 CDC,Pact 被视为主要候选者。目前,我正在开发一个 POC,以通过与 GitLab 的 CI/CD 集成来设置端到端流程。我有几个与身份验证/授权/安全相关的问题。

  1. 消费者 - Pact Broker:这里的消费者是外部合作伙伴。我认为客户端证书是一种选择。对于可用选项,我无法在 Web 上找到太多文档或信息。Pact 代理将托管在 AWS 中。我们可以把它放在网关后面吗?

  2. Pact Broker 和 Provider:这两个组件都是我们基础架构的一部分。在这种情况下,我知道我们将生成一个 GitLab 触发器令牌,它将作为未来请求的一部分传递给 Provider 管道。我们每次都将使用相同的令牌。

您能否建议两种情况下可用的选项,以使通信更加安全。

提前致谢。

0 投票
1 回答
41 浏览

pact-broker - 如何从 Pact-broker 备份现有的 Pact 合约?

有没有办法从 PactBroker 下载所有协议及其历史记录?我想下载所有具有任何历史记录的契约,然后上传到新的契约经纪人服务器。有没有办法做到这一点?我没有看到这方面的文档。

谢谢

0 投票
1 回答
43 浏览

testing - Pact CDC:定期从 Broker 清理旧的消费者和提供者版本

我在本地建立了一个包代理,并运行了几次消费者和提供者的迭代。几天来验证的契约列表现在已经达到了100个。

我正在寻找清除超过 15 天的合同和验证结果的选项。

有没有办法批量清理合同?这可以像 Broker 中的 cron 作业一样设置吗?

我们可以为合同和验证结果设置保留期限吗?

0 投票
1 回答
169 浏览

java - PactBroker 抛出 java.net.ConnectException:操作超时(连接超时)

我有一个托管在https://mytestbroker.com的协议代理服务器。我可以浏览经纪人页面。

当我运行mvn test时,合同测试失败并出现连接超时错误。