Я пытаюсь протестировать приложение, защищенное сертификатом, поэтому у меня есть фильтр, помещающий сертификат в сеанс 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()
не проходит, потому что серверный код ищет сертификат, который был бы в сеансе в обычном потоке входа в систему.
Можно ли обновить HTTP-сессию в тесте Arquillian?
В этом случае я легко могу в своем методе initClient()
добавить фиктивный сертификат в сеанс.