私はSpringアプリケーションを単体テストしようとしています。 Spring Securityを使用して、コントローラのユニットテストを行うためにSecurityContextを偽装するのに困っています。 リクエストスコープでファクトリメソッドでオートワイヤリングする
は、私は、次の質問が見つかりました: Unit testing with Spring Securityを、私は私のWebアプリでの作業(この時点では第二の回答)、「コミュニティのwiki」答えを持ってしようとしています。
私は主に、私は次の注釈しているドリブン者協会を使用:
MainController.java
@Controller
public class MainController {
private User currentUser;
@Autowired
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public void setCurrentUser(User currentUser) {
this.currentUser = currentUser;
}
...
}
UserFactory.java
@Component
public class UserFactory {
@Bean
public User getUserDetails() {
Authentication a = SecurityContextHolder.getContext().getAuthentication();
if (a == null) {
return null;
} else {
return (User) a.getPrincipal();
}
}
}
User.java
public class User implements UserDetails {
private long userId;
private String username;
private String password;
private boolean enabled;
private ArrayList<GrantedAuthority> authorities;
public User() {
}
...
}
getUserDetails()メソッドが呼び出されないようで、UserFactoryが一度も使用されないという問題があります。 (私はSystem.out.printlnを試してみましたが、デバッガを試しました)
MainControllerが実行時または要求時に配線されていないというエラーはありません。
属性currentUserはnullであるようです。 problem in Spring session scope bean with AOP
それは私の最初の春のWebアプリで、過酷なことしないでください。
は、私も自分のニーズに合ったものを見つけることなく、この質問を見渡しました。 :)
あなたは正しいです、それは今働いています。どうもありがとうございます ! :) –