Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
require_once 'PHPUnit/Framework/TestCase.php';
3
require_once 'Auth.php';
4
 
5
class TestAuthContainer extends PHPUnit_Framework_TestCase
6
{
7
 
8
    // Abstract
9
    function &getContainer() {}
10
    function &getExtraOptions() {}
11
 
12
    function setUp()
13
    {
14
        $this->container =& $this->getContainer();
15
        $this->user = 'joe';
16
        $this->pass = 'doe';
17
        $this->opt = 'VeryCoolUser';
18
        // Nedded since lazy loading of container was introduced
19
        $this->container->_auth_obj =& new Auth(&$this);
20
 
21
        $opt = $this->getExtraOptions();
22
        // Add the default user to be used for some testing
23
        $this->container->addUser($opt['username'], $opt['passwd']);
24
    }
25
 
26
    function tearDown()
27
    {
28
        $opt = $this->getExtraOptions();
29
        // Remove default user
30
        $this->container->removeUser($opt['username']);
31
    }
32
 
33
    function testListUsers()
34
    {
35
 
36
        $users = $this->container->listUsers();
37
        if (AUTH_METHOD_NOT_SUPPORTED === $users) {
38
            $this->markTestSkipped('This operation is not supported by '.get_class($this->container));
39
        }
40
 
41
        $opt = $this->getExtraOptions();
42
        $this->assertTrue(is_array($users[0]), 'First array element from result was not an array');
43
        $this->assertTrue($users[0]['username'] == $opt['username'], sprintf('First username was not equal to default username "%s" ', $opt['username']));
44
    }
45
 
46
    function testAddUser()
47
    {
48
        $cb = count($this->container->listUsers());
49
        $res = $this->container->addUser($this->user, $this->pass, $this->opt);
50
        if (AUTH_METHOD_NOT_SUPPORTED === $res) {
51
            $this->markTestSkipped("This operation is not supported by ".get_class($this->container));
52
        }
53
 
54
        if (PEAR::isError($res)) {
55
            $error = $res->getMessage().' ['.$res->getUserInfo().']';
56
        } else {
57
            $error = '';
58
        }
59
        $this->assertTrue(!PEAR::isError($res), 'error:'.$error);
60
        $ca = count($this->container->listUsers());
61
        $users = $this->container->listUsers();
62
        $last_username = $users[$ca-1]['username'];
63
        $this->assertTrue( ($cb === $ca-1) , sprintf('Count of users before (%s) and after (%s) does not differ by one', $cb, $ca));
64
        $this->assertTrue( $this->container->fetchData($this->user, $this->pass) , sprintf('Could not verify with the newly created user %s',$this->user));
65
 
66
        // Remove the user we just added, assumes removeUser works
67
        $this->container->removeUser($this->user);
68
    }
69
 
70
    function testFetchData()
71
    {
72
        $opt = $this->getExtraOptions();
73
        $fetch_res = $this->container->fetchData($opt['username'], $opt['passwd']);
74
        if (AUTH_METHOD_NOT_SUPPORTED === $fetch_res) {
75
            $this->markTestSkipped("This operation is not supported by ".get_class($this->container));
76
        }
77
 
78
        $this->assertTrue($fetch_res,sprintf('Could not verify with the default username (%s) and passwd (%s)', $opt['username'], $opt['passwd']));
79
 
80
        // Test for fail fetchData
81
        $opt = $this->getExtraOptions();
82
        $this->assertFalse(
83
            $this->container->fetchData(md5($opt['username']), $opt['passwd']),
84
            "fetchData returned true with invalid username and pass"
85
        );
86
 
87
    }
88
 
89
 
90
    /**
91
     * Tjis test depends on add user & remove user to work
92
     */
93
    function testFetchDataSpaceInPassword()
94
    {
95
        $user = uniqid('user');
96
        $pass = 'Some Pass ';
97
 
98
        $res = $this->container->addUser($user, $pass, array());
99
        if (AUTH_METHOD_NOT_SUPPORTED === $res) {
100
            $this->markTestSkipped("This operation is not supported by ".get_class($this->container));
101
        }
102
 
103
        $fetch_res = $this->container->fetchData($user, $pass);
104
        if (AUTH_METHOD_NOT_SUPPORTED === $fetch_res) {
105
            $this->markTestSkipped("This operation is not supported by ".get_class($this->container));
106
        }
107
 
108
        $this->assertTrue($fetch_res, 'Could not verify user with space password');
109
 
110
        $remove_res = $this->container->removeUser($user);
111
    }
112
 
113
 
114
 
115
 
116
    function testRemoveUser()
117
    {
118
        // Add a user to be removed when testing removeUuser method
119
        // Assume add user works
120
        $this->container->addUser('for_remove', 'for_remove');
121
        $cb = count($this->container->listUsers());
122
        $remove_res = $this->container->removeUser('for_remove');
123
        if (AUTH_METHOD_NOT_SUPPORTED === $remove_res) {
124
            $this->markTestSkipped("This operation is not supported by ".get_class($this->container));
125
        }
126
 
127
        $ca = count($this->container->listUsers());
128
        $this->assertTrue($cb === $ca+1, sprintf('Could not remove user "%s", count before:%s count after:%s ', 'for_remove', $cb, $ca));
129
    }
130
 
131
}
132
 
133
?>