File: digest_credentials_test.rb

package info (click to toggle)
ruby-httpauth 0.2.1%2Bgh-1
  • links: PTS, VCS
  • area: main
  • in suites: buster, jessie, jessie-kfreebsd, stretch
  • size: 192 kB
  • ctags: 127
  • sloc: ruby: 925; makefile: 2
file content (85 lines) | stat: -rw-r--r-- 4,595 bytes parent folder | download | duplicates (3)
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
$LOAD_PATH.unshift File.dirname(__FILE__)
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'

require 'test_helper'
require 'httpauth/digest'

class DigestCredentialsTest < Test::Unit::TestCase
  fixtures :credentials

  def setup
    remove_tmpdir
    create_tmpdir
  end

  def test_empty_initialization_from_header
    assert_raise HTTPAuth::UnwellformedHeader do
      HTTPAuth::Digest::Credentials.from_header nil, :tmpdir => tmpdir
    end
    assert_raise HTTPAuth::UnwellformedHeader do
      HTTPAuth::Digest::Credentials.from_header '', :tmpdir => tmpdir
    end
  end

  def test_initialization_from_header
    directives = HTTPAuth::Digest::Utils.encode_directives(@@credentials[:from_marcel], :credentials)
    credentials = HTTPAuth::Digest::Credentials.from_header directives, :tmpdir => tmpdir
    assert_equal @@credentials[:from_marcel][:username], credentials.username
    assert_equal @@credentials[:from_marcel][:realm], credentials.realm
  end

  def test_validate
    directives = HTTPAuth::Digest::Utils.encode_directives(@@credentials[:from_safari2], :credentials)
    credentials = HTTPAuth::Digest::Credentials.from_header directives, :tmpdir => tmpdir
    assert credentials.validate(:method => 'GET', :password => 'secret')

    directives = HTTPAuth::Digest::Utils.encode_directives(@@credentials[:from_safari2], :credentials)
    credentials = HTTPAuth::Digest::Credentials.from_header directives, :tmpdir => tmpdir
    assert credentials.validate(:method => 'GET', :digest => '659ac260760c38dce4d67663b74a71d2')

    directives = HTTPAuth::Digest::Utils.encode_directives(@@credentials[:from_safari2], :credentials)
    credentials = HTTPAuth::Digest::Credentials.from_header directives, :tmpdir => tmpdir
    assert !credentials.validate(:method => 'GET', :digest => '659ac260760c38dce4d67663b74')

    directives = HTTPAuth::Digest::Utils.encode_directives(@@credentials[:from_thijs], :credentials)
    credentials = HTTPAuth::Digest::Credentials.from_header directives, :tmpdir => tmpdir
    assert !credentials.validate(:method => 'GET', :password => 'secret')

    directives = HTTPAuth::Digest::Utils.encode_directives(@@credentials[:from_thijs], :credentials)
    credentials = HTTPAuth::Digest::Credentials.from_header directives, :tmpdir => tmpdir
    assert credentials.validate(:method => 'GET', :password => 'wrong')

    directives = HTTPAuth::Digest::Utils.encode_directives(@@credentials[:from_safari], :credentials)
    credentials = HTTPAuth::Digest::Credentials.from_header directives, :tmpdir => tmpdir
    assert !credentials.validate(:method => 'GET', :password => 'wrong')

    directives = HTTPAuth::Digest::Utils.encode_directives(@@credentials[:from_safari], :credentials)
    credentials = HTTPAuth::Digest::Credentials.from_header directives, :tmpdir => tmpdir
    assert credentials.validate(:method => 'GET', :password => 'secret')

    directives = HTTPAuth::Digest::Utils.encode_directives(@@credentials[:from_mustafa], :credentials)
    credentials = HTTPAuth::Digest::Credentials.from_header directives, :tmpdir => tmpdir
    assert credentials.validate(:method => 'GET', :password => 'Circle Of Life')

    directives = HTTPAuth::Digest::Utils.encode_directives(@@credentials[:from_safari], :credentials)
    credentials = HTTPAuth::Digest::Credentials.from_header directives, :tmpdir => tmpdir
    assert credentials.validate(:method => 'GET', :password => 'secret')
  end

  def test_from_blank
    credentials = HTTPAuth::Digest::Credentials.new :nc => 1,
                                                    :uri => '/',
                                                    :opaque => '0cf3b80a175d023ce40e7ad878dd4a2b',
                                                    :realm => 'Admin pages',
                                                    :nonce => 'MjAwNi0wOS0wNCAxNDoxNTo1Nzo2MjcyNDA6NDJmZDNjY2NiNzQ3ZjU1MDlhNTIyYTI1MWI1MTkzZm',
                                                    :algorithm => 'MD5',
                                                    :username => 'admin',
                                                    :digest => '659ac260760c38dce4d67663b74a71d2',
                                                    :method => 'GET',
                                                    :response => '5e7bbe24dac88a1936edf1a89cae6168',
                                                    :cnonce => '30b49be53eab919d',
                                                    :qop => 'auth',
                                                    :stale => false
    assert credentials.validate({})
  end
end