кипарис - ошибка 403 при посещении основного сайта - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь cy.visit () моего одностраничного приложения, которое требует, чтобы мой сертификат, загруженный в браузер, работал правильно. При запуске теста происходит сбой с ошибкой 403. Есть ужасный обходной путь, когда я открываю новую вкладку в окне браузера Cypress / Chrome и перехожу прямо к моему веб-приложению, которое предлагает мне выбрать свой сертификат несколько раз, а затем загружает страницу. Если я затем перезагружаю тест, он каким-то образом сохраняет выбранные мной сертификаты и сразу переходит на страницу и запускает тесты. Если он должен выполнить второй cy.visit (), как в цикле before или beforeEach, он возвращает ошибку 403. Кажется, что запросы сертификата нарушают тесты, когда он запускает браузер Cypress / Chrome, так как он обычно запрашивает выбор сертификата. Поскольку это происходит автоматически, запрос никогда не происходит, и сертификат не отправляется / не загружается и т. Д., И происходит 403.

Кто-нибудь сталкивался с этим и придумал лучшее решение, чем мой обходной путь?

1 Ответ

0 голосов
/ 12 января 2019
httpProxy.createProxyServer({
target: {
protocol: 'https:',
host: 'my-domain-name',
port: 443,
pfx: fs.readFileSync('path/to/certificate.p12'),
passphrase: 'password', },
changeOrigin: true,
}).listen(4440);

Решение:

Добавьте прокси-сервер http и добавьте PKI к исходящим запросам, скажем, вы настроили прокси для прослушивания localhost: 4440, так что теперь вы делаете cy.visit (http://localhost:4440). Прокси-сервер перенаправляет запрос visit () к хосту: «my-domain-name» и добавляет PKI.

По какой-то причине, что бы Cypress ни делал под капотом, браузер Cypress не может загружать / пересылать сертификат PKI. Возможно, вам также понадобится установить сертификат на ваш исполняющий сервер db, используя cert utils https://www.systutorials.com/docs/linux/man/1-certutil/. Электронный браузер CY автоматически загрузит сертификат, установленный на базу данных, поэтому важно, чтобы у вас были только сертификаты, иметь права доступа к тестируемому приложению. Все это можно сделать в Ansible, если вы хотите работать в конвейере CI. Это была тяжелая работа, в которой участвовали некоторые командные усилия и отличный разработчик, которому нравится участвовать в тестировании. Cypress, как оказалось, стоил всех усилий, так что вряд ли вы надеетесь, что вы пересмотрите использование, если вы еще не решили его до сих пор.

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