Spring Boot, тестирование контроллера с секретным токеном, как? - PullRequest
0 голосов
/ 07 июля 2019

В моем микросервисе у меня есть загрузочный контроллер Spring, который также получает токен аутентификации из заголовка http-запроса и отправляет его на другой микросервис для проверки:

@Autowired
private AuthService authService;

@GetMapping(path = "/find", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
@Timed
@CrossOrigin
public ResponseEntity<?> find(
        @RequestParam(name = "contactId", required = true) final Long contactId,
        @RequestHeader(name = "secret-token", required = true) String token
) {

    boolean checkTokenValidationFromAuthServer = authService.checkTokenValidationFromAuthServer(token);

    if (!checkTokenValidationFromAuthServer) {
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("token is invalid");
    }

    return ResponseEntity.status(HttpStatus.OK).body("Your contact here!");
}

Служба аутентификации должна быть такой

@Service
@Component
public class AuthService {

    public boolean checkTokenValidationFromAuthServer(String token){
        //make rest call to auth microservice
        //validate token, return false, or true

        return false;
    }
}

Базовый тест всегда будет неудачным, потому что я из теста не знаю секретного токена, хочу издеваться или не допустить проверки контроллера:

@RunWith(SpringRunner.class)
@SpringBootTest
public class PoolApplicationTests {

    @Autowired
    private PoolController controller;

    @Test
    public void controllerInitializedCorrectly() {
        assertThat(controller).isNotNull();
    }

    @Test
    public void testCall() {

        ResponseEntity<?> find = controller.find(1L, "token");

        assertThat(find.getStatusCode()).isEqualTo(200);
    }
}

Я не знаю, какая стратегия для этого наилучшаявиды дел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...