oauth 응답의 컨텐츠 유형이 JSON인지 테스트하는 인증 서버에 대한 테스트를 작성하고 있습니다. 인증 서버는 spring-security-oauth2 2.0.1.4.RELEASE
이고 JUnit 테스트는 rest-assured 2.9.0
입니다.HTTP 응답 컨텐츠 유형에 공백이 포함되지 않은 경우 org.apache.http.entity.ContentType 테스트
@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
의 값이 유형과 캐릭터 세트 사이에 공백이 포함 된이 실패로 인사를하지만, 인증 서버 응답 콘텐츠 형식하지 않는거야 .
지금은
.assertThat().contentType(is(ContentType.APPLICATION_JSON.toString().replace(" ", "")))
을 수행하여이 문제를 얻을 수 그러나 나는 더 나은 방법이 있어야합니다 생각합니다.
공백이없는 콘텐츠 유형 열거 형을 사용할 수 있습니까? 컨텐츠 서버에 공간을 포함하도록 권한 서버를 구성 할 수 있습니까?
그런 열거 형이 있다고 생각하지 않습니다.하지만 테스트에서 contentType을 비교하는 데 'toString'을 사용해서는 안됩니다. 그러나 그것은 내 감정 일뿐입니다. 그리고 나는 또한 그것을 올바르게하는 법을 아직 모릅니다! –
@JorgeCampos 필자는'toString'에 대해 동의하지만, 사용하지 않을 때는 따옴표 대신 꺾쇠 괄호가 사용되며 '예상되는 content-type은이 실제 내용 유형 "application/json; charset = UTF-8"과 일치하지 않으며 문제가 될지 확실하지 않았습니다. –
zero01alpha
예. HTTP 프로토콜의 속성이므로 값 대신 속성을 검사 할 방법이 있어야합니다. –