Я хочу создать тестовый пример с Mock for Spring Boot, но я не могу подключиться к серверу авторизации:
Мой контроллер:
public class AuthController {
@Autowired
private AuthService authService;
@Autowired
private TokenStore tokenStore;
@PostMapping(value = Constants.LOGIN_URL,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
public Auth login(@RequestBody Auth login, OAuth2Authentication auth) throws ApiException {
Auth result = authService.auth(login);
final OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails) auth.getDetails();
result.setAccessToken(details.getTokenValue());
final OAuth2AccessToken accessToken = tokenStore.readAccessToken(details.getTokenValue());
result.setTtl(accessToken.getExpiresIn());
return result;
}
Это мой тест, но принятьошибка NullPointer, может быть потому, что в методе есть параметр (OAuth2Authentication auth), и я не знаю, как поставить это в тест:
@Before
public void setup() {
mockMvc = MockMvcBuilders.standaloneSetup(controller)
.apply(documentationConfiguration(this.jUnitRestDocumentation))
.setCustomArgumentResolvers(new AuthenticationPrincipalArgumentResolver()).build();
}
@Test
public void getLogin() throws Exception, ApiException {
Auth authMock = Mockito.mock(Auth.class);
Mockito.when(service.auth(Mockito.any(Auth.class))).thenReturn(authMock);
String requestBody = "{" +
"\"username\":" + "\"YENNIFER\"" +
",\"nid\":" + "\"13991676\"" +
",\"password\":" + "\"password\"" +
",\"email\":" + "\"cervecera.artesanal@gmail.com\"" +
"}";
mockMvc.perform(MockMvcRequestBuilders.post("/api/v1/auth/login")
.contentType(MediaType.APPLICATION_JSON)
.content(requestBody))
.andExpect(status().isOk());
}