Spring Security、JUnit: @Before で作成されたユーザーの @WithUserDetails 質問する

Spring Security、JUnit: @Before で作成されたユーザーの @WithUserDetails 質問する

Spring MockMVC を使用した JUnit テストでは、Spring Security ユーザーとして認証する方法が 2 つあります。@WithMockUser提供された資格情報を使用してダミー ユーザーを作成し、@WithUserDetailsユーザー名を取得して、UserDetailsカスタムUserDetailsService( UserDetailsServiceImpl) を使用して正しいカスタム実装に解決します。

私の場合、UserDetailsServiceデータベースからユーザーをロードします。使用したいユーザーは、@Beforeテスト スイートのメソッドに挿入されました。

しかし、my ではUserDetailsServiceImplユーザーが見つかりません。

私の では@Before、次のようにユーザーを挿入します。

User u = new User();
u.setEMail("[email protected]");
u = userRepository.save(u);

そしてUserDetailsServiceImpl、:

public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    User user = this.userRepository.findOneByEMail(username);

    if (user == null)
        throw new UsernameNotFoundException(String.format("No user found with username '%s'.", username));
    return user;
}

で作成されたアカウントを使用するにはどうすればよいです@Before@WithUserDetails?

ベストアンサー1

@WithUserDetails残念ながら、を簡単に行うことはできません。Spring アノテーションは、でメソッドを実行する前に Spring セキュリティ コンテキスト テスト リスナーを呼び出す@Beforeためです。@WithUserDetailssetUp@Before

ここはhttps://stackoverflow.com/a/38282258/1814524ちょっとしたコツとあなたの質問への答え。

おすすめ記事