bbc-capybara-mechanize 0.3.8 → 0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,6 +21,9 @@ class Capybara::Mechanize::Browser < Capybara::RackTest::Browser
|
|
21
21
|
if driver.options[:user_agent]
|
22
22
|
@agent.user_agent = driver.options[:user_agent]
|
23
23
|
end
|
24
|
+
if driver.options[:username] and driver.options[:password]
|
25
|
+
@agent.basic_auth(driver.options[:username], driver.options[:password])
|
26
|
+
end
|
24
27
|
if driver.options[:proxy] && !driver.options[:proxy].empty?
|
25
28
|
proxy = nil
|
26
29
|
begin
|
@@ -38,6 +41,10 @@ class Capybara::Mechanize::Browser < Capybara::RackTest::Browser
|
|
38
41
|
super
|
39
42
|
end
|
40
43
|
|
44
|
+
def auth(username, password)
|
45
|
+
@agent.basic_auth(username, password)
|
46
|
+
end
|
47
|
+
|
41
48
|
def reset_host!
|
42
49
|
@last_remote_host = nil
|
43
50
|
@last_request_remote = nil
|
@@ -2,6 +2,22 @@ require 'capybara/spec/test_app'
|
|
2
2
|
|
3
3
|
class ExtendedTestApp < TestApp#< Sinatra::Base
|
4
4
|
set :environment, :production # so we don't get debug info that makes our test pass!
|
5
|
+
|
6
|
+
helpers do
|
7
|
+
|
8
|
+
def protected!
|
9
|
+
unless authorized?
|
10
|
+
response['WWW-Authenticate'] = %(Basic realm="Restricted Area")
|
11
|
+
throw(:halt, [401, "Not authorized\n"])
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def authorized?
|
16
|
+
@auth ||= Rack::Auth::Basic::Request.new(request.env)
|
17
|
+
@auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['admin', 'password']
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
5
21
|
|
6
22
|
get %r{/redirect_to/(.*)} do
|
7
23
|
redirect params[:captures]
|
@@ -34,7 +50,11 @@ class ExtendedTestApp < TestApp#< Sinatra::Base
|
|
34
50
|
post '/request_info/*' do
|
35
51
|
current_request_info
|
36
52
|
end
|
37
|
-
|
53
|
+
|
54
|
+
get '/basic_auth/' do
|
55
|
+
protected!
|
56
|
+
%{Successfully authenticated}
|
57
|
+
end
|
38
58
|
|
39
59
|
private
|
40
60
|
|
@@ -71,4 +71,27 @@ describe Capybara::Session do
|
|
71
71
|
@session.body.should include("Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3")
|
72
72
|
end
|
73
73
|
end
|
74
|
+
|
75
|
+
context "Basic HTTP Auth" do
|
76
|
+
|
77
|
+
before do
|
78
|
+
@session = Capybara::Session.new(:mechanize, TestApp)
|
79
|
+
@session.driver.options[:respect_data_method] = true
|
80
|
+
Capybara.default_host = 'http://www.local.com'
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should allow basic authentication to be setup" do
|
84
|
+
@session.driver.options[:username] = "admin"
|
85
|
+
@session.driver.options[:password] = "password"
|
86
|
+
@session.visit("#{REMOTE_TEST_URL}/basic_auth/")
|
87
|
+
@session.body.should include("Successfully authenticated")
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should allow basic authentication via auth method" do
|
91
|
+
@session.driver.browser.auth("admin", "password")
|
92
|
+
@session.visit("#{REMOTE_TEST_URL}/basic_auth/")
|
93
|
+
@session.body.should include("Successfully authenticated")
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
74
97
|
end
|
metadata
CHANGED
@@ -5,9 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
|
10
|
-
version: 0.3.8
|
8
|
+
- 4
|
9
|
+
version: "0.4"
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Jeroen van Dijk
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date: 2012-03-
|
18
|
+
date: 2012-03-22 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|