0

我想通过 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 正文。

4

1 回答 1

0

这里的问题是您正在尝试验证 XML,Pact 目前不支持开箱即用,因为我们使用 JSON 进行所有验证。您可以做的只是使用字符串验证器或正则表达式验证器,但是,如果您的字符串中的任何内容发生更改(如空格),您的测试可能无法验证。

此时,您需要自己创建一种将输出模板化为字符串以验证交互的方法。我们已经研究过支持 XML,但几乎没有什么兴趣。

于 2017-11-28T03:34:34.880 回答