Spring MVC コントローラーの単体テストをセットアップしており、Spring MVC テスト フレームワークを活用しようとしています。コントローラーの各エンドポイントに対して、指定された権限を持つユーザーのみがアクセスできるようにしたいと考えています。私の問題は、カスタムの User 実装を使用し、これを回避するための mockMvc ツールを使用すると、クラス キャスト例外が発生することです。
リクエストごとに、次のようになると思います。
mockMvc.perform(MockMvcRequestBuilders.get(path).with(user("user").authorities(authorities)))
.andExpect(status().isOk())
.andExpect(authenticated().withUsername("user"));
上記のステートメントを微調整して、カスタム ユーザー プリンシパルを指定したいと思います。以下のSpringのユーザーメソッドを参照してください。私が最初に考えたのは、クラスをオーバーライドしてUserRequestPostProcessor
微調整し、標準の Spring Security ユーザーの代わりにカスタム ユーザー タイプを使用することでしたが、このクラスは final として宣言されており、サブクラス化できません。デフォルトの動作をオーバーライドし、カスタム ユーザー タイプを使用するためのサポートはありますか??
public static UserRequestPostProcessor user(String username) {
return new UserRequestPostProcessor(username);
}
私が見てきたことから、認証でカスタム ユーザー プリンシパルを設定できるように、 @WithSecurityContextでテストに注釈を付ける候補です。ここでの私の懸念は、メソッドごとに 1 人のユーザーをテストすることに制限されることであり、これは私がやろうとしていることに対応していません。
複数のカスタム ユーザーによるリクエストをテストするにはどうすればよいですか?