xref: /dokuwiki/_test/tests/inc/auth_password.test.php (revision f2ae886abc5bb17b10e0313506b7bdf1f84f5726)
1*f2ae886aSAndreas Gohr<?php
2*f2ae886aSAndreas Gohr
3*f2ae886aSAndreas Gohrrequire_once DOKU_INC.'inc/init.php';
4*f2ae886aSAndreas Gohrrequire_once DOKU_INC.'inc/auth.php';
5*f2ae886aSAndreas Gohr
6*f2ae886aSAndreas Gohrclass auth_password_test extends PHPUnit_Framework_TestCase {
7*f2ae886aSAndreas Gohr
8*f2ae886aSAndreas Gohr    // hashes for the password foo$method, using abcdefgh as salt
9*f2ae886aSAndreas Gohr    var $passes = array(
10*f2ae886aSAndreas Gohr        'smd5'  => '$1$abcdefgh$SYbjm2AEvSoHG7Xapi8so.',
11*f2ae886aSAndreas Gohr        'apr1'  => '$apr1$abcdefgh$C/GzYTF4kOVByYLEoD5X4.',
12*f2ae886aSAndreas Gohr        'md5'   => '8fa22d62408e5351553acdd91c6b7003',
13*f2ae886aSAndreas Gohr        'sha1'  => 'b456d3b0efd105d613744ffd549514ecafcfc7e1',
14*f2ae886aSAndreas Gohr        'ssha'  => '{SSHA}QMHG+uC7bHNYKkmoLbNsNI38/dJhYmNk',
15*f2ae886aSAndreas Gohr        'lsmd5' => '{SMD5}HGbkPrkWgy9KgcRGWlrsUWFiY2RlZmdo',
16*f2ae886aSAndreas Gohr        'crypt' => 'ablvoGr1hvZ5k',
17*f2ae886aSAndreas Gohr        'mysql' => '4a1fa3780bd6fd55',
18*f2ae886aSAndreas Gohr        'my411' => '*e5929347e25f82e19e4ebe92f1dc6b6e7c2dbd29',
19*f2ae886aSAndreas Gohr        'kmd5'  => 'a579299436d7969791189acadd86fcb716',
20*f2ae886aSAndreas Gohr        'pmd5'  => '$P$abcdefgh1RC6Fd32heUzl7EYCG9uGw.',
21*f2ae886aSAndreas Gohr        'hmd5'  => '$H$abcdefgh1ZbJodHxmeXVAhEzTG7IAp.',
22*f2ae886aSAndreas Gohr        'djangomd5'  => 'md5$abcde$d0fdddeda8cd92725d2b54148ac09158',
23*f2ae886aSAndreas Gohr        'djangosha1' => 'sha1$abcde$c8e65a7f0acc9158843048a53dcc5a6bc4d17678',
24*f2ae886aSAndreas Gohr    );
25*f2ae886aSAndreas Gohr
26*f2ae886aSAndreas Gohr
27*f2ae886aSAndreas Gohr    function test_cryptPassword(){
28*f2ae886aSAndreas Gohr        foreach($this->passes as $method => $hash){
29*f2ae886aSAndreas Gohr            $info = "testing method $method";
30*f2ae886aSAndreas Gohr            $this->assertEquals(auth_cryptPassword('foo'.$method, $method,'abcdefgh12345678912345678912345678'),
31*f2ae886aSAndreas Gohr                $hash, $info);
32*f2ae886aSAndreas Gohr        }
33*f2ae886aSAndreas Gohr    }
34*f2ae886aSAndreas Gohr
35*f2ae886aSAndreas Gohr    function test_verifyPassword(){
36*f2ae886aSAndreas Gohr        foreach($this->passes as $method => $hash){
37*f2ae886aSAndreas Gohr            $info = "testing method $method";
38*f2ae886aSAndreas Gohr            $this->assertTrue(auth_verifyPassword('foo'.$method, $hash), $info);
39*f2ae886aSAndreas Gohr        }
40*f2ae886aSAndreas Gohr    }
41*f2ae886aSAndreas Gohr
42*f2ae886aSAndreas Gohr    function test_verifySelf(){
43*f2ae886aSAndreas Gohr        foreach($this->passes as $method => $hash){
44*f2ae886aSAndreas Gohr            $info = "testing method $method";
45*f2ae886aSAndreas Gohr            $hash = auth_cryptPassword('foo'.$method,$method);
46*f2ae886aSAndreas Gohr            $this->assertTrue(auth_verifyPassword('foo'.$method, $hash), $info);
47*f2ae886aSAndreas Gohr        }
48*f2ae886aSAndreas Gohr    }
49*f2ae886aSAndreas Gohr
50*f2ae886aSAndreas Gohr    function test_bcrypt_self(){
51*f2ae886aSAndreas Gohr        $hash = auth_cryptPassword('foobcrypt','bcrypt');
52*f2ae886aSAndreas Gohr        $this->assertTrue(auth_verifyPassword('foobcrypt',$hash));
53*f2ae886aSAndreas Gohr    }
54*f2ae886aSAndreas Gohr
55*f2ae886aSAndreas Gohr    function test_verifyPassword_fixedbcrypt(){
56*f2ae886aSAndreas Gohr        $this->assertTrue(auth_verifyPassword('foobcrypt','$2a$12$uTWercxbq4sjp2xAzv3we.ZOxk51m5V/Bv5bp2H27oVFJl5neFQoC'));
57*f2ae886aSAndreas Gohr    }
58*f2ae886aSAndreas Gohr
59*f2ae886aSAndreas Gohr    function test_verifyPassword_nohash(){
60*f2ae886aSAndreas Gohr        $this->assertTrue(auth_verifyPassword('foo','$1$$n1rTiFE0nRifwV/43bVon/'));
61*f2ae886aSAndreas Gohr    }
62*f2ae886aSAndreas Gohr
63*f2ae886aSAndreas Gohr    function test_verifyPassword_fixedpmd5(){
64*f2ae886aSAndreas Gohr        $this->assertTrue(auth_verifyPassword('test12345','$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0'));
65*f2ae886aSAndreas Gohr        $this->assertTrue(auth_verifyPassword('test12345','$H$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0'));
66*f2ae886aSAndreas Gohr    }
67*f2ae886aSAndreas Gohr
68*f2ae886aSAndreas Gohr}
69*f2ae886aSAndreas Gohr
70*f2ae886aSAndreas Gohr//Setup VIM: ex: et ts=4 :
71