当 HTTP 响应内容类型不包含 space 时测试 org.apache.http.entity.ContentType
Testing org.apache.http.entity.ContentType when the HTTP response content type doesn't contain a space
我正在为授权服务器编写测试,测试 oauth 响应的内容类型是否为 JSON。授权服务器正在使用 spring-security-oauth2 2.0.1.4.RELEASE
而我的 JUnit 测试正在使用 rest-assured 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".
所以org.apache.http.entity.ContentType
的值在类型和字符集之间包含一个space,但是授权服务器响应内容类型没有。
现在我可以通过
来解决这个问题
.assertThat().contentType(is(ContentType.APPLICATION_JSON.toString().replace(" ", "")))
但我觉得一定有更好的方法。
是否有我可以使用的没有 space 的内容类型枚举?可以将授权服务器配置为在内容类型中包含 space 吗?
您可以尝试使用 Spring 中的以下 class:org.springframework.http.MediaType
好像没有spacein the implementation.
我正在为授权服务器编写测试,测试 oauth 响应的内容类型是否为 JSON。授权服务器正在使用 spring-security-oauth2 2.0.1.4.RELEASE
而我的 JUnit 测试正在使用 rest-assured 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".
所以org.apache.http.entity.ContentType
的值在类型和字符集之间包含一个space,但是授权服务器响应内容类型没有。
现在我可以通过
来解决这个问题.assertThat().contentType(is(ContentType.APPLICATION_JSON.toString().replace(" ", "")))
但我觉得一定有更好的方法。
是否有我可以使用的没有 space 的内容类型枚举?可以将授权服务器配置为在内容类型中包含 space 吗?
您可以尝试使用 Spring 中的以下 class:org.springframework.http.MediaType
好像没有spacein the implementation.