提问者:小点点

测试HTTP响应内容类型不包含空格时的org.apache.http.entity.ContentType


我正在为授权服务器编写一个测试,测试oauth响应的内容类型是JSON。授权服务器使用的是< code > spring-security-oauth 2 2 . 0 . 1 . 4 . release ,我的JUnit测试使用的是< code >放心2.9.0。

@Test
public void testTokenEndpoint() throws Exception {
    // Client Credentials Grant
    ResponseBody clientCredentialsGrantResponseBody =
            given(this.spec)
                .authentication().basic(VALID_CLIENT_ID, VALID_CLIENT_SECRET)
                .queryParameter("grant_type", CLIENT_CREDENTIALS_GRANT)
                .queryParameter("username", VALID_USERNAME)
                .queryParameter("password", VALID_PASSWORD)
                .queryParameter("scope", VALID_SCOPES)
            .when()
                .post(OAUTH_TOKEN_ENDPOINT)
            .then()
                .assertThat().contentType(is(ContentType.APPLICATION_JSON.toString()))
            .extract().response().body();
}

当我运行这个测试时,我遇到了这个失败。

java.lang.AssertionError: 1 expectation failed.
Expected content-type is "application/json; charset=UTF-8" doesn't match actual content-type "application/json;charset=UTF-8".

因此,<code>org.apache.http.entity的值。ContentType</code>在类型和字符集之间包含一个空格,但授权服务器响应内容类型不包含。

现在我可以通过这样做来解决这个问题

.assertThat().contentType(is(ContentType.APPLICATION_JSON.toString().replace(" ", "")))

但是我觉得一定有更好的办法。

是否有一个没有空格的内容类型枚举可以使用?授权服务器是否可以配置为在内容类型中包含空格?


共1个答案

匿名用户

你可以尝试使用Spring的以下类:

看起来实现中没有空间。