GWT RequestBuilder завершается с SSL-соединениями (в тестах). Зачем? Есть ли обходные пути? - PullRequest
1 голос
/ 31 мая 2011

Я пытаюсь подключиться к (локальной) веб-службе, используя GWT RequestBuilder с безопасным соединением (SSL), но соединение не установлено ... Когда я подключаюсь с помощью простого HTTP-соединения, все работает нормально.

Некоторые подробности

  • все работает нормально, когда я использую браузер для просмотра страниц,
  • Я использую автоматически подписанный SSL-сертификат на локальном компьютере,
  • тесты не пройдены, поскольку фактический код ответа (responseCode) не задан,
  • тесты работают нормально, если я использую простое соединение HTTP (без SSL).

Код

package com.example.services;

import com.google.gwt.http.client.*;

import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.Timer;

public class RequestBuilderTest extends GWTTestCase {
    private static String SERVER_URL = "https://127.0.0.1/api";
    private static final int ASSERT_DELAY_IN_MS = 15000;
    private static final int TEST_DURATION_IN_MS = 20000;
    private int statusCode;

    public void testGet() throws Exception {
        new RequestBuilder(RequestBuilder.GET, SERVER_URL).sendRequest(null, new RequestCallback() {
            public void onError(Request request, Throwable e) {
                fail(e.getMessage());
            }

            public void onResponseReceived(Request request, Response response) {
                statusCode = response.getStatusCode();
            }
        });

        delayTestFinish(TEST_DURATION_IN_MS);
        new Timer() {
            @Override
            public void run() {
                assertEquals(Response.SC_OK, statusCode);
                finishTest();
            }
        }.schedule(ASSERT_DELAY_IN_MS);
    }

    @Override
    public String getModuleName() {
        return "com.example.services.RequestBuilder";
    }
}

Результаты

  • пройден тест с SERVER_URL = "http://127.0.0.1/api";
  • Сбой теста с SERVER_URL =" https://127.0.0.1/api";
    Thisтрассировка стека для junit:

    junit.framework.AssertionFailedError: Удаленный тест завершился неудачно, 127.0.0.1 ожидается = 200 фактический = 0

Любые идеи почто может быть не так и как я могу заставить тесты работать с SSL?

EDIT

Как я могу заставить тесты работать в безопасном режиме?Я использую eclipse ... Я попытался установить некоторые "Аргументы программы" в "Запуск конфигурации" (для тестов junit), но они не работают ... Вот аргументы:

-noserver -startupUrl https://192.168.8.147/com.example.services.RequestBuilderTest.JUnit/ -bindAddress 0.0.0.0

Будет ли лучше, если я просто отключу SSL на сервере?Эти тесты предназначены для запуска на сервере непрерывной интеграции, и я хотел протестировать их с помощью SSL.

1 Ответ

1 голос
/ 31 мая 2011

Похоже, вы столкнулись с проблемой политики того же происхождения . Встраивание URL в приложение подобным образом по своей сути ненадежно. Вместо этого используйте GWT.getModuleBaseUrl().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...