日別アーカイブ: 2012年5月6日

MockitoでAbstractクラスの実メソッドを呼び出す方法

UnitテストでMockitoを使用していて、Abstractメソッドの実メソッドを呼び出す方法が分からなかったのでその方法をメモ。

すっごく簡単で、mockオブジェクトを生成する際の引数にMockito.CALLS_REAL_METHODSをつけるだけで生成されたAbstractのmockオブジェクトの実メソッドが呼ばれるようになる。


@Test
public void test_OK_リクエストのリモートユーザにログインユーザIDがセットされていること() {
try {
AbstractXXXXAction action = mock(AbstractXXXXAction.class, Mockito.CALLS_REAL_METHODS);
...
// 認証OKになること
Assert.assertEquals(true, action.verifyUserIdIfOkSetSession(req)); ←ここで実メソッドを呼び出してテストしている
...
} catch(Exception e) {
e.printStackTrace();
Assert.fail("予期しないExceptionがスローされました");
}
}

JBOSSでのBasic認証の方法について

 

開発環境でBasic認証を使用するために、久しぶりに設定したら場所が全然思い出せなかったのでメモ。

使用したバージョンは
JBoss :5.1.0(ここで取得:http://www.jboss.org/jbossas/downloads/)

web.xmlの設定

<security-constraint>
<web-resource-collection>
<web-resource-name>プロジェクトリソース名</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>プロジェクトロール名</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method> ←BASIC認証用
</login-config>
<security-role>
<role-name>プロジェクトロール名</role-name>
</security-role>

定義する順番があるので、それを守らないとEclipse上でエラーが出る。
定義の順番まで覚えていないので、よくエラーが出て怒られてしまう。

jboss-web.xmlの設定

<jboss-web>

<security-domain>java:/jaas/プロジェクトレルム名</security-domain>
….
</jboss-web>

プロジェクトレルム名は、login-config.xmlを記載する際にも使用する

{JBOSS_HOME}/server/default/conf/login-config.xmlの設定

下記の記載をプロジェクト用に追加する。

<application-policy name=”プロジェクトレルム名”>
<authentication>
<login-module code=”org.jboss.security.auth.spi.UsersRolesLoginModule” flag=”required”>
<module-option name=”usersProperties”>props/hoge-users.properties</module-option>
<module-option name=”rolesProperties”>props/hoge-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>

上記で記載したプロパティファイルを下記のディレクトリに作成し、中身をプロジェクト内で使用するBasic認証用に記載する。

{JBOSS_HOME}/server/default/conf/props/hoge-roles.propertiesの設定

ユーザ名=プロジェクトロール名

プロジェクトロール名は、web.xmlで記載したロール名を記載する

{JBOSS_HOME}/server/default/conf/props/hoge-users.propertiesの設定

ユーザ名=パスワード

後は、HttpServletRequestのgetRemoteUser()から認証に成功したユーザ名が取得できる