mirror of
https://github.com/thoughtbot/capybara-webkit
synced 2023-03-27 23:22:28 -04:00
fix spell
move header specs to driver_spec
This commit is contained in:
parent
ee1388e329
commit
818f654e4e
8 changed files with 68 additions and 72 deletions
|
@ -681,4 +681,57 @@ describe Capybara::Driver::Webkit do
|
|||
subject.find("//p").first.text.should == "success"
|
||||
end
|
||||
end
|
||||
|
||||
context "custom header" do
|
||||
before(:all) do
|
||||
@app = lambda do |env|
|
||||
body = <<-HTML
|
||||
<html><body>
|
||||
<p id="user-agent">#{env['HTTP_USER_AGENT']}</p>
|
||||
<p id="x-capybara-webkit-header">#{env['HTTP_X_CAPYBARA_WEBKIT_HEADER']}</p>
|
||||
<p id="accept">#{env['HTTP_ACCEPT']}</p>
|
||||
<a href="/">/</a>
|
||||
</body></html>
|
||||
HTML
|
||||
[200,
|
||||
{ 'Content-Type' => 'text/html', 'Content-Length' => body.length.to_s },
|
||||
[body]]
|
||||
end
|
||||
end
|
||||
|
||||
before do
|
||||
subject.header('user-agent', 'capybara-webkit/custom-user-agent')
|
||||
subject.header('x-capybara-webkit-header', 'x-capybara-webkit-header')
|
||||
subject.header('accept', 'text/html')
|
||||
subject.visit('/')
|
||||
end
|
||||
|
||||
it "can set user_agent" do
|
||||
subject.find('id("user-agent")').first.text.should == 'capybara-webkit/custom-user-agent'
|
||||
subject.evaluate_script('navigator.userAgent').should == 'capybara-webkit/custom-user-agent'
|
||||
end
|
||||
|
||||
it "keep user_agent in next page" do
|
||||
subject.find("//a").first.click
|
||||
subject.find('id("user-agent")').first.text.should == 'capybara-webkit/custom-user-agent'
|
||||
subject.evaluate_script('navigator.userAgent').should == 'capybara-webkit/custom-user-agent'
|
||||
end
|
||||
|
||||
it "can set custom header" do
|
||||
subject.find('id("x-capybara-webkit-header")').first.text.should == 'x-capybara-webkit-header'
|
||||
end
|
||||
|
||||
it "can set Accept header" do
|
||||
subject.find('id("accept")').first.text.should == 'text/html'
|
||||
end
|
||||
|
||||
it "can reset all custom header" do
|
||||
subject.reset!
|
||||
subject.visit('/')
|
||||
subject.find('id("user-agent")').first.text.should_not == 'capybara-webkit/custom-user-agent'
|
||||
subject.evaluate_script('navigator.userAgent').should_not == 'capybara-webkit/custom-user-agent'
|
||||
subject.find('id("x-capybara-webkit-header")').first.text.should be_empty
|
||||
subject.find('id("accept")').first.text.should_not == 'text/html'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -79,61 +79,6 @@ describe Capybara::Session do
|
|||
subject.click_button('ボタン')
|
||||
end
|
||||
end
|
||||
context "custom header" do
|
||||
before(:all) do
|
||||
@app = lambda do |env|
|
||||
body = <<-HTML
|
||||
<html><body>
|
||||
<pre>#{env['HTTP_USER_AGENT']}</pre>
|
||||
<pre>#{env['HTTP_X_CAPYBARA_WEBKIT_HEADER']}</pre>
|
||||
<pre>#{env['HTTP_ACCEPT']}</pre>
|
||||
<a href="/">/</a>
|
||||
</body></html>
|
||||
HTML
|
||||
[200,
|
||||
{ 'Content-Type' => 'text/html', 'Content-Length' => body.length.to_s },
|
||||
[body]]
|
||||
end
|
||||
end
|
||||
|
||||
it "can set user_agent" do
|
||||
subject.driver.header('user-agent', 'capybara-webkit/custom-user-agent')
|
||||
subject.visit('/')
|
||||
subject.should have_content('capybara-webkit/custom-user-agent')
|
||||
subject.should be_true subject.driver.evaluate_script('navigator.userAgent').eql?('capybara-webkit/custom-user-agent')
|
||||
end
|
||||
|
||||
it "reset default user_agent" do
|
||||
subject.visit('/')
|
||||
subject.should have_content('Mozilla/5.0')
|
||||
subject.should be_true subject.driver.evaluate_script('navigator.userAgent').start_with?('Mozilla/5.0')
|
||||
end
|
||||
it "keep user_agent in next page" do
|
||||
subject.driver.header('user-agent', 'capybara-webkit/custom-user-agent')
|
||||
subject.visit('/')
|
||||
subject.click_link('/')
|
||||
subject.should have_content('capybara-webkit/custom-user-agent')
|
||||
subject.should be_true subject.evaluate_script('navigator.userAgent').eql?('capybara-webkit/custom-user-agent')
|
||||
end
|
||||
|
||||
it "can set custom header" do
|
||||
subject.driver.header('x-capybara-webkit-header', 'x-capybara-webkit-spec')
|
||||
subject.visit('/')
|
||||
subject.should have_content('x-capybara-webkit-spec')
|
||||
end
|
||||
|
||||
it "does not keep custom header" do
|
||||
subject.visit('/')
|
||||
subject.should_not have_content('x-capybara-webkit-spec')
|
||||
end
|
||||
|
||||
it "can set Accept" do
|
||||
subject.driver.header('accept', 'application/xhtml+xml')
|
||||
subject.visit('/')
|
||||
subject.should have_content('application/xhtml+xml')
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe Capybara::Session, "with TestApp" do
|
||||
|
|
|
@ -8,11 +8,11 @@ Header::Header(WebPage *page, QObject *parent) : Command(page, parent) {
|
|||
void Header::start(QStringList &arguments) {
|
||||
QString key = arguments[0];
|
||||
QString value = arguments[1];
|
||||
NetworkAccessManager* nam = qobject_cast<NetworkAccessManager*>(page()->networkAccessManager());
|
||||
NetworkAccessManager* networkAccessManager = qobject_cast<NetworkAccessManager*>(page()->networkAccessManager());
|
||||
if (key.toLower().replace("-", "_") == "user_agent") {
|
||||
page()->setUserAgent(value);
|
||||
} else {
|
||||
nam->addHeader(key, value);
|
||||
networkAccessManager->addHeader(key, value);
|
||||
}
|
||||
emit finished(new Response(true));
|
||||
}
|
||||
|
|
|
@ -6,14 +6,14 @@
|
|||
NetworkAccessManager::NetworkAccessManager(QObject *parent):QNetworkAccessManager(parent) {
|
||||
}
|
||||
|
||||
QNetworkReply* NetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &req, QIODevice * outgoingData = 0) {
|
||||
QNetworkRequest new_req(req);
|
||||
QNetworkReply* NetworkAccessManager::createRequest(QNetworkAccessManager::Operation oparation, const QNetworkRequest &request, QIODevice * outgoingData = 0) {
|
||||
QNetworkRequest new_request(request);
|
||||
QHashIterator<QString, QString> item(m_headers);
|
||||
while (item.hasNext()) {
|
||||
item.next();
|
||||
new_req.setRawHeader(item.key().toAscii(), item.value().toAscii());
|
||||
new_request.setRawHeader(item.key().toAscii(), item.value().toAscii());
|
||||
}
|
||||
return QNetworkAccessManager::createRequest(op, new_req, outgoingData);
|
||||
return QNetworkAccessManager::createRequest(oparation, new_request, outgoingData);
|
||||
};
|
||||
|
||||
void NetworkAccessManager::addHeader(QString key, QString value) {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
class NetworkAccessManager : public QNetworkAccessManager {
|
||||
|
||||
Q_OBJECT
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
NetworkAccessManager(QObject *parent = 0);
|
||||
|
|
|
@ -8,13 +8,11 @@ Visit::Visit(WebPage *page, QObject *parent) : Command(page, parent) {
|
|||
|
||||
void Visit::start(QStringList &arguments) {
|
||||
QUrl requestedUrl = QUrl(arguments[0]);
|
||||
QNetworkRequest req;
|
||||
req.setUrl(requestedUrl);
|
||||
page()->currentFrame()->setUrl(QUrl(requestedUrl));
|
||||
if(requestedUrl.hasFragment()) {
|
||||
// workaround for https://bugs.webkit.org/show_bug.cgi?id=32723
|
||||
req.setUrl(QUrl(requestedUrl));
|
||||
page()->currentFrame()->setUrl(QUrl(requestedUrl));
|
||||
}
|
||||
page()->currentFrame()->load(req);
|
||||
}
|
||||
|
||||
void Visit::loadFinished(bool success) {
|
||||
|
|
|
@ -26,15 +26,15 @@ WebPage::WebPage(QObject *parent) : QWebPage(parent) {
|
|||
}
|
||||
|
||||
QString WebPage::userAgentForUrl(const QUrl &url ) const {
|
||||
if (!m_user_agent.isEmpty()) {
|
||||
return m_user_agent;
|
||||
if (!m_userAgent.isEmpty()) {
|
||||
return m_userAgent;
|
||||
} else {
|
||||
return QWebPage::userAgentForUrl(url);
|
||||
}
|
||||
}
|
||||
|
||||
void WebPage::setUserAgent(QString ua) {
|
||||
m_user_agent = ua;
|
||||
void WebPage::setUserAgent(QString userAgent) {
|
||||
m_userAgent = userAgent;
|
||||
}
|
||||
|
||||
void WebPage::frameCreated(QWebFrame * frame) {
|
||||
|
|
|
@ -9,7 +9,7 @@ class WebPage : public QWebPage {
|
|||
QVariant invokeCapybaraFunction(QString &name, QStringList &arguments);
|
||||
QString failureString();
|
||||
QString userAgentForUrl(const QUrl &url ) const;
|
||||
void setUserAgent(QString ua);
|
||||
void setUserAgent(QString userAgent);
|
||||
|
||||
public slots:
|
||||
bool shouldInterruptJavaScript();
|
||||
|
@ -27,7 +27,7 @@ class WebPage : public QWebPage {
|
|||
|
||||
private:
|
||||
QString m_capybaraJavascript;
|
||||
QString m_user_agent;
|
||||
QString m_userAgent;
|
||||
bool m_loading;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue