私はSpring MVCコントローラのユニットテストを設定しており、Spring MVCテストフレームワークを利用しようとしています。私のコントローラー内の各エンドポイントについて、指定された権限を持つユーザーだけがアクセスできるようにしたいと考えています。私の問題は、カスタムのUser実装を使用して、これを回避するmockMvcツールを使用するときにクラスキャスト例外を取得することです。私は何とか自分のカスタム・ユーザー・プリンシパルを指定するには、上記のステートメントを微調整したいSpringセキュリティユニットテスト - MockMvcはカスタムユーザでテストを実行します
mockMvc.perform(MockMvcRequestBuilders.get(path).with(user("user").authorities(authorities)))
.andExpect(status().isOk())
.andExpect(authenticated().withUsername("user"));
:各リクエストに対して
は、私はそれがこのような何かを見て期待しています。以下のSpringのuserメソッドを参照してください。私の最初の考えは、クラスUserRequestPostProcessor
をオーバーライドし、標準のSpring Securityユーザーの代わりに私のカスタムユーザータイプを使用するように調整するが、このクラスはfinalと宣言され、サブクラス化することはできません。既定の動作を上書きし、カスタムユーザータイプを使用するサポートはありますか?私が見たものから、
public static UserRequestPostProcessor user(String username) {
return new UserRequestPostProcessor(username);
}
、私は認証に私のカスタムユーザープリンシパルを設定することができるように@WithSecurityContextと私のテストに注釈を付けるための候補としています。ここで私の懸念は、私は各メソッドの1人のユーザーをテストすることに限定され、これは私がしようとしているもののために拡大しないということです。
複数のカスタムユーザーが行ったリクエストをテストするにはどうすればよいですか?私はこれを行うには、2つの方法を知っ