mirror of
https://github.com/thoughtbot/capybara-webkit
synced 2023-03-27 23:22:28 -04:00
New windows should respect ignore_ssl_errors
This commit is contained in:
parent
f80125e6cb
commit
8f8c95d980
6 changed files with 28 additions and 15 deletions
|
@ -1,8 +1,7 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
require 'self_signed_ssl_cert'
|
require 'self_signed_ssl_cert'
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
require 'capybara/driver/webkit/browser'
|
require 'capybara/driver/webkit'
|
||||||
require 'capybara/driver/webkit/connection'
|
|
||||||
require 'socket'
|
require 'socket'
|
||||||
require 'base64'
|
require 'base64'
|
||||||
|
|
||||||
|
@ -62,6 +61,18 @@ describe Capybara::Driver::Webkit::Browser do
|
||||||
it 'accepts a self-signed certificate if configured to do so' do
|
it 'accepts a self-signed certificate if configured to do so' do
|
||||||
browser_ignore_ssl_err.visit "https://#{@host}:#{@port}/"
|
browser_ignore_ssl_err.visit "https://#{@host}:#{@port}/"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "doesn't accept a self-signed certificate in a new window by default" do
|
||||||
|
browser.execute_script("window.open('about:blank')")
|
||||||
|
browser.window_focus(browser.get_window_handles.last)
|
||||||
|
lambda { browser.visit "https://#{@host}:#{@port}/" }.should raise_error
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'accepts a self-signed certificate in a new window if configured to do so' do
|
||||||
|
browser_ignore_ssl_err.execute_script("window.open('about:blank')")
|
||||||
|
browser_ignore_ssl_err.window_focus(browser_ignore_ssl_err.get_window_handles.last)
|
||||||
|
browser_ignore_ssl_err.visit "https://#{@host}:#{@port}/"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "skip image loading" do
|
context "skip image loading" do
|
||||||
|
|
|
@ -7,7 +7,7 @@ IgnoreSslErrors::IgnoreSslErrors(WebPageManager *manager, QStringList &arguments
|
||||||
}
|
}
|
||||||
|
|
||||||
void IgnoreSslErrors::start() {
|
void IgnoreSslErrors::start() {
|
||||||
page()->ignoreSslErrors();
|
manager()->setIgnoreSslErrors(true);
|
||||||
emit finished(new Response(true));
|
emit finished(new Response(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,14 +10,14 @@
|
||||||
#include <QUuid>
|
#include <QUuid>
|
||||||
|
|
||||||
WebPage::WebPage(WebPageManager *manager, QObject *parent) : QWebPage(parent) {
|
WebPage::WebPage(WebPageManager *manager, QObject *parent) : QWebPage(parent) {
|
||||||
|
m_loading = false;
|
||||||
m_manager = manager;
|
m_manager = manager;
|
||||||
|
m_uuid = QUuid::createUuid().toString();
|
||||||
|
|
||||||
setForwardUnsupportedContent(true);
|
setForwardUnsupportedContent(true);
|
||||||
loadJavascript();
|
loadJavascript();
|
||||||
setUserStylesheet();
|
setUserStylesheet();
|
||||||
|
|
||||||
m_loading = false;
|
|
||||||
m_ignoreSslErrors = false;
|
|
||||||
this->setCustomNetworkAccessManager();
|
this->setCustomNetworkAccessManager();
|
||||||
|
|
||||||
connect(this, SIGNAL(loadStarted()), this, SLOT(loadStarted()));
|
connect(this, SIGNAL(loadStarted()), this, SLOT(loadStarted()));
|
||||||
|
@ -31,8 +31,6 @@ WebPage::WebPage(WebPageManager *manager, QObject *parent) : QWebPage(parent) {
|
||||||
resetWindowSize();
|
resetWindowSize();
|
||||||
|
|
||||||
settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
|
settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
|
||||||
|
|
||||||
m_uuid = QUuid::createUuid().toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebPage::resetWindowSize() {
|
void WebPage::resetWindowSize() {
|
||||||
|
@ -219,14 +217,10 @@ void WebPage::replyFinished(QNetworkReply *reply) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebPage::handleSslErrorsForReply(QNetworkReply *reply, const QList<QSslError> &errors) {
|
void WebPage::handleSslErrorsForReply(QNetworkReply *reply, const QList<QSslError> &errors) {
|
||||||
if (m_ignoreSslErrors)
|
if (m_manager->ignoreSslErrors())
|
||||||
reply->ignoreSslErrors(errors);
|
reply->ignoreSslErrors(errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebPage::ignoreSslErrors() {
|
|
||||||
m_ignoreSslErrors = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void WebPage::setSkipImageLoading(bool skip) {
|
void WebPage::setSkipImageLoading(bool skip) {
|
||||||
settings()->setAttribute(QWebSettings::AutoLoadImages, !skip);
|
settings()->setAttribute(QWebSettings::AutoLoadImages, !skip);
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@ class WebPage : public QWebPage {
|
||||||
void setCustomNetworkAccessManager();
|
void setCustomNetworkAccessManager();
|
||||||
bool render(const QString &fileName);
|
bool render(const QString &fileName);
|
||||||
virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
|
virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
|
||||||
void ignoreSslErrors();
|
|
||||||
void setSkipImageLoading(bool skip);
|
void setSkipImageLoading(bool skip);
|
||||||
QString consoleMessages();
|
QString consoleMessages();
|
||||||
void resetConsoleMessages();
|
void resetConsoleMessages();
|
||||||
|
@ -61,7 +60,6 @@ class WebPage : public QWebPage {
|
||||||
void setUserStylesheet();
|
void setUserStylesheet();
|
||||||
int m_lastStatus;
|
int m_lastStatus;
|
||||||
QString m_pageHeaders;
|
QString m_pageHeaders;
|
||||||
bool m_ignoreSslErrors;
|
|
||||||
QStringList m_consoleMessages;
|
QStringList m_consoleMessages;
|
||||||
QString m_uuid;
|
QString m_uuid;
|
||||||
WebPageManager *m_manager;
|
WebPageManager *m_manager;
|
||||||
|
|
|
@ -33,3 +33,11 @@ void WebPageManager::emitPageFinished(bool success) {
|
||||||
if (currentPage() == sender())
|
if (currentPage() == sender())
|
||||||
emit pageFinished(success);
|
emit pageFinished(success);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebPageManager::setIgnoreSslErrors(bool value) {
|
||||||
|
m_ignoreSslErrors = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WebPageManager::ignoreSslErrors() {
|
||||||
|
return m_ignoreSslErrors;
|
||||||
|
}
|
||||||
|
|
|
@ -14,7 +14,9 @@ class WebPageManager : public QObject {
|
||||||
QListIterator<WebPage *> iterator();
|
QListIterator<WebPage *> iterator();
|
||||||
void setCurrentPage(WebPage *);
|
void setCurrentPage(WebPage *);
|
||||||
WebPage *currentPage();
|
WebPage *currentPage();
|
||||||
WebPage *createPage(QObject *);
|
WebPage *createPage(QObject *parent);
|
||||||
|
void setIgnoreSslErrors(bool);
|
||||||
|
bool ignoreSslErrors();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void emitPageFinished(bool);
|
void emitPageFinished(bool);
|
||||||
|
|
Loading…
Reference in a new issue