Обновление сеанса HTTP в тесте службы GWT с помощью Arquillian - PullRequest
1 голос
/ 01 марта 2012

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

...