2017-12-13 20 views
1

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(" ", ""))) 

을 수행하여이 문제를 얻을 수 그러나 나는 더 나은 방법이 있어야합니다 생각합니다.

공백이없는 콘텐츠 유형 열거 형을 사용할 수 있습니까? 컨텐츠 서버에 공간을 포함하도록 권한 서버를 구성 할 수 있습니까?

+1

그런 열거 형이 있다고 생각하지 않습니다.하지만 테스트에서 contentType을 비교하는 데 'toString'을 사용해서는 안됩니다. 그러나 그것은 내 감정 일뿐입니다. 그리고 나는 또한 그것을 올바르게하는 법을 아직 모릅니다! –

+0

@JorgeCampos 필자는'toString'에 대해 동의하지만, 사용하지 않을 때는 따옴표 대신 꺾쇠 괄호가 사용되며 '예상되는 content-type은 이 실제 내용 유형 "application/json; charset = UTF-8"과 일치하지 않으며 문제가 될지 확실하지 않았습니다. – zero01alpha

+0

예. HTTP 프로토콜의 속성이므로 값 대신 속성을 검사 할 방법이 있어야합니다. –

답변

1

당신은 봄에서 다음 클래스를 사용하여 시도 할 수 있습니다 : 공백 in the implementation이없는 것처럼 org.springframework.http.MediaType

것 같습니다.