Merge branch 'status-fix' of https://github.com/os0x/capybara-webkit
This commit is contained in:
commit
457957b61a
|
@ -79,6 +79,52 @@ describe Capybara::Session do
|
|||
subject.click_button('ボタン')
|
||||
end
|
||||
end
|
||||
|
||||
context "response headers with status code" do
|
||||
before(:all) do
|
||||
@app = lambda do |env|
|
||||
params = ::Rack::Utils.parse_query(env['QUERY_STRING'])
|
||||
if params["img"] == "true"
|
||||
body = 'not found'
|
||||
return [404, { 'Content-Type' => 'image/gif', 'Content-Length' => body.length.to_s }, [body]]
|
||||
end
|
||||
body = <<-HTML
|
||||
<html>
|
||||
<body>
|
||||
<img src="?img=true">
|
||||
</body>
|
||||
</html>
|
||||
HTML
|
||||
[200,
|
||||
{ 'Content-Type' => 'text/html', 'Content-Length' => body.length.to_s, 'X-Capybara' => 'WebKit'},
|
||||
[body]]
|
||||
end
|
||||
end
|
||||
|
||||
it "should get status code" do
|
||||
subject.visit '/'
|
||||
subject.status_code.should == 200
|
||||
end
|
||||
|
||||
it "should reset status code" do
|
||||
subject.visit '/'
|
||||
subject.status_code.should == 200
|
||||
subject.reset!
|
||||
subject.status_code.should == 0
|
||||
end
|
||||
|
||||
it "should get response headers" do
|
||||
subject.visit '/'
|
||||
subject.response_headers['X-Capybara'].should == 'WebKit'
|
||||
end
|
||||
|
||||
it "should reset response headers" do
|
||||
subject.visit '/'
|
||||
subject.response_headers['X-Capybara'].should == 'WebKit'
|
||||
subject.reset!
|
||||
subject.response_headers['X-Capybara'].should == nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe Capybara::Session, "with TestApp" do
|
||||
|
|
|
@ -11,8 +11,9 @@ void Reset::start(QStringList &arguments) {
|
|||
page()->triggerAction(QWebPage::Stop);
|
||||
page()->currentFrame()->setHtml("<html><body></body></html>");
|
||||
page()->networkAccessManager()->setCookieJar(new QNetworkCookieJar());
|
||||
page()->setNetworkAccessManager(new NetworkAccessManager());
|
||||
page()->setCustomNetworkAccessManager();
|
||||
page()->setUserAgent(NULL);
|
||||
page()->resetResponseHeaders();
|
||||
emit finished(new Response(true));
|
||||
}
|
||||
|
||||
|
|
|
@ -9,10 +9,7 @@ WebPage::WebPage(QObject *parent) : QWebPage(parent) {
|
|||
setUserStylesheet();
|
||||
|
||||
m_loading = false;
|
||||
|
||||
NetworkAccessManager *manager = new NetworkAccessManager();
|
||||
this->setNetworkAccessManager(manager);
|
||||
connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));
|
||||
this->setCustomNetworkAccessManager();
|
||||
|
||||
connect(this, SIGNAL(loadStarted()), this, SLOT(loadStarted()));
|
||||
connect(this, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool)));
|
||||
|
@ -20,6 +17,12 @@ WebPage::WebPage(QObject *parent) : QWebPage(parent) {
|
|||
this, SLOT(frameCreated(QWebFrame *)));
|
||||
}
|
||||
|
||||
void WebPage::setCustomNetworkAccessManager() {
|
||||
NetworkAccessManager *manager = new NetworkAccessManager();
|
||||
this->setNetworkAccessManager(manager);
|
||||
connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));
|
||||
}
|
||||
|
||||
void WebPage::loadJavascript() {
|
||||
QResource javascript(":/capybara.js");
|
||||
if (javascript.isCompressed()) {
|
||||
|
@ -168,8 +171,9 @@ QString WebPage::getLastAttachedFileName() {
|
|||
}
|
||||
|
||||
void WebPage::replyFinished(QNetworkReply *reply) {
|
||||
if (reply->url() == this->currentFrame()->url()) {
|
||||
QStringList headers;
|
||||
lastStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
m_lastStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
QList<QByteArray> list = reply->rawHeaderList();
|
||||
|
||||
int length = list.size();
|
||||
|
@ -178,10 +182,16 @@ void WebPage::replyFinished(QNetworkReply *reply) {
|
|||
}
|
||||
|
||||
m_pageHeaders = headers.join("\n");
|
||||
}
|
||||
}
|
||||
|
||||
int WebPage::getLastStatus() {
|
||||
return lastStatus;
|
||||
return m_lastStatus;
|
||||
}
|
||||
|
||||
void WebPage::resetResponseHeaders() {
|
||||
m_lastStatus = 0;
|
||||
m_pageHeaders = QString();
|
||||
}
|
||||
|
||||
QString WebPage::pageHeaders() {
|
||||
|
|
|
@ -11,6 +11,8 @@ class WebPage : public QWebPage {
|
|||
QString userAgentForUrl(const QUrl &url ) const;
|
||||
void setUserAgent(QString userAgent);
|
||||
int getLastStatus();
|
||||
void resetResponseHeaders();
|
||||
void setCustomNetworkAccessManager();
|
||||
bool render(const QString &fileName);
|
||||
virtual bool extension (Extension extension, const ExtensionOption *option=0, ExtensionReturn *output=0);
|
||||
|
||||
|
@ -38,7 +40,7 @@ class WebPage : public QWebPage {
|
|||
QString getLastAttachedFileName();
|
||||
void loadJavascript();
|
||||
void setUserStylesheet();
|
||||
int lastStatus;
|
||||
int m_lastStatus;
|
||||
QString m_pageHeaders;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue