Как сделать пробный тест для OAUTH Spring Boot - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу создать тестовый пример с 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());
}

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете просто смоделировать AuthService и вставить этот макет в контроллер, например:

@RunWith(SpringJUnit4ClassRunner.class)
public class AuthControllerTest {

    @Mock
    private AuthService authService;

    @InjectMocks
    private AuthController controller;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testAuth() {
        Auth authMock = Mockito.mock(Auth.class);
        Mockito.when(authService.auth(Mockito.any(Auth.class)).thenReturn(auth));
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...