Транспортир - Слушайте навигацию пользователя - PullRequest
1 голос
/ 06 марта 2020

В настоящее время я тестирую сквозную функциональность для проекта Angular 2+ с использованием Protractor.

Моя проблема возникает, когда пользователь должен войти в систему с внешним провайдером. В приложении есть кнопка, которая перенаправляет пользователя на внешний вход, и, если пользователь успешно вошел в систему, провайдер возвращает пользователя в приложение с токеном и angular обрабатывает сеанс.

Пример:

  1. Пользователь в http://example.com нажимает кнопку «Войти».
  2. Приложение перенаправляет пользователя на http://authproviderexample.com/login.
  3. Пользователь должен войти в систему с именем пользователя и паролем.
  4. Если все верно, поставщик аутентификации перенаправляет пользователя в приложение с токеном сеанса http://example.com/login?token=ABCDEFG123456789
  5. Приложение обрабатывает токен, чтобы пользователь вошел в систему.

Я хочу пропустить этот внешний вход в систему и «смоделировать» его, чтобы я мог проверить, перенаправляет ли мое приложение внешний и правильно ли обрабатывает токен. , Таким образом, мои тесты приложений не зависят от внешнего провайдера входа в систему.

В некотором смысле я хочу перехватить навигацию, чтобы я мог сказать Angular: если пользователь перенаправлен на "http://authproviderexample.com/login"вместо этого перенаправьте его на" http://example.com/login?token=ABCDEFG123456789 ". Я буду хранить постоянный токен, чтобы я мог войти, не лежа во внешнем сервисе.

1 Ответ

2 голосов
/ 06 марта 2020

почему бы вам не сделать что-то простое, как это

async function login(username, password) {
    await loginButton.click();
    if (await browser.getCurrentUrl() === "http://authproviderexample.com/login") {
        await browser.get("http://example.com/login?token=ABCDEFG123456789")
        return 
    } else {
        // else logic
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...