我想通过 pact-jvm 测试我的授权服务。在我的请求中,我通过帖子发送了一个 html-body,包括一些用于验证用户的元数据 - 包括他的用户名,并且也在我使用 Http Basic Auth 的标头中发送。从配置文件中读取用户名+密码后,我在 JUnit-Test 中使用 @TargetRequestFilter 在我的测试类中添加标题。这是因为应用程序在不同的层上运行。每层都有另一个用户名+密码组合。该协议应该适用于每一层。此外,当用户更改时,我只想对配置文件进行少量更改。它包含用户名、密码、主机名、端口和协议。
问题是:我需要根据配置文件的内容来操作请求的 html-body 以匹配我在测试类中设置的标头,而无需每次都创建新的 pact 文件。
所以我的问题是:有没有办法从 JUnit 类中操纵我期望(通过协议)的 html-body 的选择性部分?
也许还有另一种方法可以解决我还没有看到的问题。
提前致谢!
为清楚起见,请求示例:
<body>
<soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:body>
<ns2:authevalrequest1
xmlns:ns2="http://authgroup/authBRS/specification/ServiceView/AuthProvider/authBRS/">
<inputmetadata> <version>V_1_0_0</version> <metadataentry>
<key>US</key> <value>some_username</value> </metadataentry> <metadataentry>
<key>MA</key> <value>some_user_id</value> </metadataentry> </inputmetadata>
<request> <attrs> <type>String</type> <values>
<value>some_user_id</value> </values> <xacml>urn:oasis:names:tc:xacml:1.0:subject:subject-id</xacml>
</attrs> <attrs> <type>String</type> <values> <value>00</value>
</values> <xacml>http://thisisaservice.com/resource/dataRES</xacml>
</attrs> <attrs> <type>String</type> <values> <value>abc</value>
</values> <xacml>http://thisisaservice.com/subject/authprofilename</xacml>
</attrs> <attrs> <type>String</type> <values> <value>importData</value>
</values> <xacml>http://thisisaservice.com/resource/CompanyfunctionRES</xacml> </attrs>
</request>
</ns2:authevalrequest1>
</soap:body>
</soap:envelope>
</body>
我无法更改提供者或消费者。我只是来做验证工作的。
编辑:也许我忘了说......我想让响应体匹配(实际和预期),没问题。但我需要根据我的配置文件修改请求的 html 正文。