Próbuję napisać test dla metody PUT
, który sprawdzi czy zostanie zwrócony błąd 401 Unauthorized
kiedy niezautoryzowany użytkownik wyśle zapytanie. Ta metoda sendRequestAsUnauthorizedUser()
robi JSON'a z przekazanego obiektu i nie dodaje header'u Authorization
.
@Test
void shouldReturnErrorWhenUnauthorizedUserUpdatesHisProfileData() {
// given
AppUserProfileEditDTO newProfileData = createNewProfileData(
"Testowy", "Użytkownik", "2000-01-01", "Testy Wielkie", "Testowy biogram"
);
// when
ResponseEntity<Map<String, String>> response = restTemplate.exchange(
"/api/v1/users/me/profile",
PUT,
sendRequestAsUnauthorizedUser(newProfileData),
new ParameterizedTypeReference<>() {}
);
// then
assertThat(response.getStatusCode()).isEqualTo(UNAUTHORIZED);
}
Przy odpalaniu testu dostaję taki wyjątek:
org.springframework.web.client.ResourceAccessException: I/O error on PUT request for "http://localhost:59495/api/v1/users/me/profile": cannot retry due to server authentication, in streaming mode; nested exception is java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode
Jak przekazuję null
zamiast wywoływania tej metody sendRequestAsUnauthorizedUser()
to leci ten sam wyjątek. Co robię nie tak i jak poprawnie napisać taki test?