我正在为授权服务器编写一个测试,测试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(" ", "")))
但是我觉得一定有更好的办法。
是否有一个没有空格的内容类型枚举可以使用?授权服务器是否可以配置为在内容类型中包含空格?
你可以尝试使用Spring的以下类:
看起来实现中没有空间。