証明書で保護されたアプリケーションをテストしようとしているため、サーブレットの前の HTTP セッションに証明書を配置するフィルターがあります。
これは GWT アプリケーションなので、gwt-syncproxyと Arquillian を使用しています。
@RunWith(Arquillian.class)
public class TestLiveLoginService {
@Deployment
public static WebArchive createDeployment() {
return ShrinkWrap
.create(WebArchive.class, "launcher.war")
.addPackages(true, "com.mycompany.launcher")
.addAsResource("resources/logback.xml")
.addAsWebInfResource("resources/web.xml")
.merge(ShrinkWrap
.create(ExplodedImporter.class, "resources.war")
.importDirectory("war/launcher")
.as(WebArchive.class));
}
private static LoginService rpcService;
@Before
@RunAsClient
public void initClient() {
rpcService = (LoginService) SyncProxy.newProxyInstance(
LoginService.class, "http://localhost/launcher/", "login");
}
@Test
@RunAsClient
public void testLogin1() throws ServerException {
User result = rpcService.login(new User.Builder(
"user", "password").build());
assertTrue((result != null));
}
}
testLogin1()
サーバーコードが通常のログインフローでセッションにある証明書を探しているため、私のテストは失敗しています。
Arquillian テストで HTTP セッションを更新することは可能ですか? この場合、私のinitClient()
方法で、セッションにモック証明書を簡単に追加できます。