私がしたいこと: RestAssuredを使用してエンドポイントをテストしたいと思います。キーは、エンドポイントがログインしているユーザーだけに利用可能であることです。ログインするには、カスタムのsuccessHandlerを使用してスプリングセキュリティのデフォルトエンドポイントを使用しています。ランダムトークンを設定してデータベースに保存し、 -トークン"。私はバックエンドでセッションを作成していません。セキュリティで保護されたエンドポイントにアクセスする場合、フロントエンドは「User-Token」ヘッダーを付けてコールします。それから私はデータベースをチェックインするためにトークンを使用しています。各トークンは異なり、ランダムです。また、私はトークンのための春のセキュリティのものを使用しません。今私はこの動作をテストしたい。RestAssured testing、get user token
技術:すべてのまず、私はトークンを取得する方法が本当にわからない:は働いていない何& Reduxの、春ブーツ、RestAssured、JUnitの、Tomcatの
を反応します。私は、それを手作業でデータベースにいくつかのテストユーザーに強制することができますが、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はnullです。それはメソッド変数ではなくクラス変数として宣言されており、それはStringです。
ユーザーのトークンを取得して、トークンが必要なエンドポイントをテストするにはどうすればよいですか。