Как настроить фиктивный локальный сервер в транспортире, чтобы он был заполнителем для другого локального сервера на другом порту? - PullRequest
0 голосов
/ 13 января 2020

Сценарий:

Я пытаюсь протестировать сценарий, в котором я предоставляю токен своему браузеру Chromium в качестве повара ie. К сожалению, я не могу добавить его в params, потому что мне нужно, чтобы метод был совместим с не локальными хостами GET.

Когда я использую browser.driver.get('http://localhost:3000), браузер пытается перенаправить на localhost:3001. Поскольку повар ie еще не существует, он не может загрузить страницу. (Я специально не запускал сервер 3001.)

Затем я пытаюсь добавить повара ie с browser.manage().addCookie({ name: 'siteJwt', value: jwtToken, domain: 'localhost' }), но получаю ошибку InvalidCookieDomainError: invalid cookie domain.

I ' Мне бы хотелось настроить мои тесты транспортировщика на простом сервере hello world на порту 3001, чтобы приложение могло правильно перенаправить на этот порт, и я могу добавить cook ie и проверить перенаправление.

Код:

describe('Test - ', function() {

    const util = require('./testUtil.js');

    var siteUrl = 'http://localhost:3000';
    var domainName = 'localhost';
    var landingUrl = 'http://localhost:3001';

    browser.ignoreSynchronization = true;

    var jwtToken = 'boblkja-lsdkfj-lasdkjfhioasjdhfijuahsoifuhaosiuhfoiahfiuhsaoiuhf';

    beforeEach(function() {
        browser.waitForAngular();
    });

    /**
     * Logging in by manually by setting the JWT Token cookie.
     */
    it('T1', function() {
        browser.driver.get(siteUrl).then(function() {
            browser.manage().addCookie({ name: 'siteJwt', value: jwtToken, domain: domainName });
        })
        browser.get(siteUrl);
        ...
    });
});

Ошибка:

  Message:
    Failed: invalid cookie domain
      (Session info: headless chrome=79.0.3945.117)
      (Driver info: chromedriver=79.0.3945.16 (93fcc21110c10dbbd49bbff8f472335360e31d05-refs/branch-heads/3945@{#262}),platform=Windows NT 10.0.17763 x86_64)
  Stack:
    InvalidCookieDomainError: invalid cookie domain
      (Session info: headless chrome=79.0.3945.117)
      (Driver info: chromedriver=79.0.3945.16 (93fcc21110c10dbbd49bbff8f472335360e31d05-refs/branch-heads/3945@{#262}),platform=Windows NT 10.0.17763 x86_64)
        at Object.checkLegacyResponse (C:\Install\node-v12.13.1-win-x64\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:546:15)
        at parseHttpResponse (C:\Install\node-v12.13.1-win-x64\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:509:13)
        at C:\Install\node-v12.13.1-win-x64\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:441:30
        at processTicksAndRejections (internal/process/task_queues.js:93:5)
    From: Task: WebDriver.manage().addCookie(siteJwt=**********;domain=localhost)
        at Driver.schedule (C:\Install\node-v12.13.1-win-x64\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:807:17)
        at Options.addCookie (C:\Install\node-v12.13.1-win-x64\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:1243:25)

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Попробуйте установить домен 127.0.0.1 вместо localhost. Также попробуйте добавить .localhost вместо только localhost. Дайте мне знать, если это работает :)

Здесь - документация для addCook ie для получения дополнительной информации.

0 голосов
/ 13 января 2020

Чтобы решить эту проблему, я запустил фиктивный сервер в начале теста транспортира.

Чтобы создать сервер, все, что вам нужно сделать, это:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.write('Hello World!');
  res.end();
}).listen(3001);

Вы можно легко изменить его на html и прочитать файл так:

    const http = require('http');
    const fs = require('fs');

    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/html; charset=UTF-8'});
      res.write(fs.readFileSync('mock/server/mockLanding.html', 'utf8'));
      res.end();
    }).listen(3001);
...