File: test_fake_authentication.rb

package info (click to toggle)
ruby-fakeweb 1.3.0%2Bgit20170806%2Bdfsg1-1.1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 380 kB
  • sloc: ruby: 2,057; sh: 24; makefile: 3
file content (92 lines) | stat: -rw-r--r-- 3,760 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
require 'test_helper'

class TestFakeAuthentication < Test::Unit::TestCase

  def test_register_uri_with_authentication
    FakeWeb.register_uri(:get, 'http://user:pass@mock/test_example.txt', :body => "example")
    assert FakeWeb.registered_uri?(:get, 'http://user:pass@mock/test_example.txt')
  end

  def test_register_uri_with_authentication_doesnt_trigger_without
    FakeWeb.register_uri(:get, 'http://user:pass@mock/test_example.txt', :body => "example")
    assert !FakeWeb.registered_uri?(:get, 'http://mock/test_example.txt')
  end

  def test_register_uri_with_authentication_doesnt_trigger_with_incorrect_credentials
    FakeWeb.register_uri(:get, 'http://user:pass@mock/test_example.txt', :body => "example")
    assert !FakeWeb.registered_uri?(:get, 'http://user:wrong@mock/test_example.txt')
  end

  def test_unauthenticated_request
    FakeWeb.register_uri(:get, 'http://mock/auth.txt', :body => 'unauthorized')
    http = Net::HTTP.new('mock', 80)
    req = Net::HTTP::Get.new('/auth.txt')
    assert_equal 'unauthorized', http.request(req).body
  end

  def test_authenticated_request
    FakeWeb.register_uri(:get, 'http://user:pass@mock/auth.txt', :body => 'authorized')
    http = Net::HTTP.new('mock',80)
    req = Net::HTTP::Get.new('/auth.txt')
    req.basic_auth 'user', 'pass'
    assert_equal 'authorized', http.request(req).body
  end

  def test_authenticated_request_where_only_userinfo_differs
    FakeWeb.register_uri(:get, 'http://user:pass@mock/auth.txt', :body => 'first user')
    FakeWeb.register_uri(:get, 'http://user2:pass@mock/auth.txt', :body => 'second user')
    http = Net::HTTP.new('mock')
    req = Net::HTTP::Get.new('/auth.txt')
    req.basic_auth 'user2', 'pass'
    assert_equal 'second user', http.request(req).body
  end

  def test_basic_auth_support_is_transparent_to_oauth
    FakeWeb.register_uri(:get, "http://sp.example.com/protected", :body => "secret")

    # from http://oauth.net/core/1.0/#auth_header
    auth_header = <<-HEADER
      OAuth realm="http://sp.example.com/",
            oauth_consumer_key="0685bd9184jfhq22",
            oauth_token="ad180jjd733klru7",
            oauth_signature_method="HMAC-SHA1",
            oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
            oauth_timestamp="137131200",
            oauth_nonce="4572616e48616d6d65724c61686176",
            oauth_version="1.0"
    HEADER
    auth_header.gsub!(/\s+/, " ").strip!

    http = Net::HTTP.new("sp.example.com", 80)
    response = nil
    http.start do |request|
      response = request.get("/protected", {"authorization" => auth_header})
    end
    assert_equal "secret", response.body
  end

  def test_basic_auth_when_userinfo_contains_allowed_unencoded_characters
    FakeWeb.register_uri(:get, "http://roses&hel1o,(+$):so;longs=@example.com", :body => "authorized")
    http = Net::HTTP.new("example.com")
    request = Net::HTTP::Get.new("/")
    request.basic_auth("roses&hel1o,(+$)", "so;longs=")
    assert_equal "authorized", http.request(request).body
  end

  def test_basic_auth_when_userinfo_contains_encoded_at_sign
    FakeWeb.register_uri(:get, "http://user%40example.com:secret@example.com", :body => "authorized")
    http = Net::HTTP.new("example.com")
    request = Net::HTTP::Get.new("/")
    request.basic_auth("user@example.com", "secret")
    assert_equal "authorized", http.request(request).body
  end

  def test_basic_auth_when_userinfo_contains_allowed_encoded_characters
    FakeWeb.register_uri(:get, "http://us%20er:sec%20%2F%2Fret%3F@example.com", :body => "authorized")
    http = Net::HTTP.new("example.com")
    request = Net::HTTP::Get.new("/")
    request.basic_auth("us er", "sec //ret?")
    assert_equal "authorized", http.request(request).body
  end

end