LoginSignup
0

More than 5 years have passed since last update.

Apache Shiro + Arquillian

Posted at

Java の認証フレームワーク Apache Shiro と テスティングフレームワークの Arquillian を組み合わせたテストに関して、Github にサンプルが上がっていたのでメモ。

ポイントは以下のようなクラスを用意するところです。

SecurityFacade
@Singleton
public class SecurityFacade {

    Logger logger = LoggerFactory.getLogger(SecurityFacade.class);
    private SecurityManager securityManager;

    @PostConstruct
    public void init() {
        final String iniFile = "classpath:shiro.ini";
        logger.info("Initializing Shiro INI SecurityManager using " + iniFile);
        securityManager = new IniSecurityManagerFactory(iniFile).getInstance();
        SecurityUtils.setSecurityManager(securityManager);
    }

    /*
     * テストケースでインジェクションできるように、subject という名前で Produces
     */
    @Produces
    @Named("subject")
    public Subject getSubject() {
        return SecurityUtils.getSubject();
    }
}

テストケースはこんな感じ。

SecurityTest
@RunWith(Arquillian.class)
public class SecurityTest {

    /*
     * 必要なクラスや設定ファイル(beans.xml等)をデプロイ
     */
    @Deployment
    public static WebArchive deployment() {
        return RESTDeployment.deployment();
    } 

    /*
     * subject をインジェクション
     */
    @Inject
    private Subject subject;

    /**
     * ユーザ認証が必要なテスト
     */
    @Test
    public void should_test_after_loggedIn() {
        subject.login(new UsernamePasswordToken("test1", "test1"));
        // 以降、テストの中身
    }
}

サンプルでは、インターセプター等も利用しているので他の面も参考になります。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0