litmus_paper 0.5.0 → 0.6.0

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.
@@ -27,6 +27,7 @@ module LitmusPaper
27
27
  uri = URI.parse(@uri)
28
28
  request = Net::HTTP.const_get(@method.capitalize).new(uri.normalize.path)
29
29
  request.set_form_data({})
30
+ request.basic_auth(uri.user, uri.password) if uri.user || uri.password
30
31
 
31
32
  connection = Net::HTTP.new(uri.host, uri.port)
32
33
  connection.open_timeout = @timeout
@@ -1,3 +1,3 @@
1
1
  module LitmusPaper
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -39,6 +39,30 @@ describe LitmusPaper::Dependency::HTTP do
39
39
  end
40
40
  end
41
41
 
42
+ context "basic auth" do
43
+ it "uses the basic auth credentials provided in the URL" do
44
+ check = LitmusPaper::Dependency::HTTP.new("http://admin:admin@127.0.0.1:9294/basic_auth")
45
+ check.should be_available
46
+ end
47
+
48
+ it "works with blank password" do
49
+ check = LitmusPaper::Dependency::HTTP.new("http://justadmin:@127.0.0.1:9294/basic_auth_without_password")
50
+ check.should be_available
51
+ end
52
+
53
+ it "works with blank user" do
54
+ check = LitmusPaper::Dependency::HTTP.new("http://:justpassword@127.0.0.1:9294/basic_auth_without_user")
55
+ check.should be_available
56
+ end
57
+ end
58
+
59
+ context "special characters in path" do
60
+ it "works with a URI encoded slash" do
61
+ check = LitmusPaper::Dependency::HTTP.new("http://admin:admin@127.0.0.1:9294/return_next_path_segment/%2F", :content => '/')
62
+ check.should be_available
63
+ end
64
+ end
65
+
42
66
  it "is true when response is 200" do
43
67
  check = LitmusPaper::Dependency::HTTP.new("#{@url}/status/200")
44
68
  check.should be_available
@@ -25,7 +25,40 @@ class HttpTestServer < Sinatra::Base
25
25
  text 200, "Woke up after #{params.inspect} seconds"
26
26
  end
27
27
 
28
+ get '/basic_auth' do
29
+ requires_basic_auth!('admin', 'admin')
30
+ "Welcome, authenticated client"
31
+ end
32
+
33
+ get '/basic_auth_without_password' do
34
+ requires_basic_auth!('justadmin', '')
35
+ "Welcome, authenticated client"
36
+ end
37
+
38
+ get '/basic_auth_without_user' do
39
+ requires_basic_auth!('', 'justpassword')
40
+ "Welcome, authenticated client"
41
+ end
42
+
43
+ get '/return_next_path_segment/:something' do
44
+ params[:something]
45
+ end
46
+
28
47
  def text(response_code, body, headers ={})
29
48
  [response_code, { "Content-Type" => "text/plain" }.merge(headers), body]
30
49
  end
50
+
51
+ helpers do
52
+ def requires_basic_auth!(user, pass)
53
+ unless authorized?(user, pass)
54
+ response['WWW-Authenticate'] = %(Basic realm="Restricted Area")
55
+ throw(:halt, [401, "Not authorized\n"])
56
+ end
57
+ end
58
+
59
+ def authorized?(user, pass)
60
+ @auth ||= Rack::Auth::Basic::Request.new(request.env)
61
+ @auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == [user, pass]
62
+ end
63
+ end
31
64
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: litmus_paper
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 5
8
+ - 6
9
9
  - 0
10
- version: 0.5.0
10
+ version: 0.6.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Braintreeps
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-08-13 00:00:00 -05:00
18
+ date: 2012-08-21 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency