내가 원하는 작업 : RestAssured를 사용하여 끝점을 테스트하고 싶습니다. 핵심은 로그인 한 사용자 만 엔드 포인트를 사용할 수 있다는 것입니다. 로그인을 위해 저는 임의의 토큰을 설정하고 사용자 정의 successHandler를 사용하여 스프링 보안 기본 엔드 포인트를 사용하고 데이터베이스에 저장하고 헤더 "User -토큰". 나는 백엔드에서 세션을 만들지 않을거야. 보안 된 끝점에 액세스하려면 프런트 엔드가 "User-Token"헤더를 사용하여 호출합니다. 그런 다음 토큰을 사용하여 데이터베이스를 체크인합니다. 각 토큰은 다르고 임의적입니다. 또한 나는 토큰에 스프링 보안을 사용하지 않는다. 이제이 동작을 테스트하고 싶습니다.RestAssured 테스트, 토큰 가져 오기
기술 : 작동하지 않습니다 무엇 & 돌아 오는 봄 부팅, RestAssured, JUnit을, 톰캣
반작용 : 모든 첫째, 나는 토큰을 얻는 방법을 정말 모르겠어요. 나는 일부 테스트 사용자에게 직접 데이터베이스를 강제로 적용 할 수 있다는 것을 의미하지만 AFAIK는 나쁜 습관입니다. 나는 문서를 읽고 약 auth().form
에 관해서 우연히 만난다. 그러나 아래에는 최상의 접근 방식이 아니며 웹 페이지는 완전히 백엔드와 분리되어 있습니다 (have to made to the server in order to retrieve the webpage with the login details
). 그럼에도 불구하고 접근 방법을 시도했지만 작동하지 않았습니다.
@Before
public void LogInUser(){
String loginUrl = "http://localhost:8080/login";
userToken =
given().auth().form("username","password").
when().get(loginUrl).getHeader("User-Token");
System.out.println(userToken);
}
그래서 나는 어쩌면 내가 전혀 인증()을 필요로하지 않는다는 것을 생각 - 내가 그렇게 충분해야 데이터를 엔드 포인트 자체를 호출 세션이 필요하지 않습니다. 나는 데이터가 백엔드 프런트 엔드에서 전달하는 방법을 확인하고이했다 :
Form Data: username=something&password=something
@Before
public void LogInUser(){
String loginUrl = "http://localhost:8080/login";
userToken =
given().parameter("username=oliwka&password=jakies")
.when().get(loginUrl).getHeader("User-Token");
System.out.println(userToken);
}
을 그리고 그것을 통과하는 동안에, UserToken은 Principal null입니다. 메서드 변수가 아닌 클래스 변수로 선언되었으며 String입니다.
사용자 토큰을 얻고 토큰이 필요한 내 끝점을 테스트하려면 어떻게해야합니까?