File: TestAuthContainer.php

package info (click to toggle)
php-auth 1.6.2-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze, wheezy
  • size: 480 kB
  • ctags: 764
  • sloc: php: 3,296; xml: 952; makefile: 65; sql: 4
file content (133 lines) | stat: -rw-r--r-- 4,782 bytes parent folder | download
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
require_once 'PHPUnit/Framework/TestCase.php';
require_once 'Auth.php';

class TestAuthContainer extends PHPUnit_Framework_TestCase
{

    // Abstract
    function getContainer() {}
    function getExtraOptions() {}

    function setUp()
    {
        $this->container =& $this->getContainer();
        $this->user = 'joe';
        $this->pass = 'doe';
        $this->opt = 'VeryCoolUser';
        // Nedded since lazy loading of container was introduced
        $this->container->_auth_obj =& new Auth(&$this);

        $opt = $this->getExtraOptions();
        // Add the default user to be used for some testing
        $this->container->addUser($opt['username'], $opt['passwd']);
    }

    function tearDown()
    {
        $opt = $this->getExtraOptions();
        // Remove default user
        $this->container->removeUser($opt['username']);
    }

    function testListUsers()
    {

        $users = $this->container->listUsers();
        if (AUTH_METHOD_NOT_SUPPORTED === $users) {
            $this->markTestSkipped('This operation is not supported by '.get_class($this->container));
        }

        $opt = $this->getExtraOptions();
        $this->assertTrue(is_array($users[0]), 'First array element from result was not an array');
        $this->assertTrue($users[0]['username'] == $opt['username'], sprintf('First username was not equal to default username "%s" ', $opt['username']));
    }

    function testAddUser()
    {
        $cb = count($this->container->listUsers());
        $res = $this->container->addUser($this->user, $this->pass, $this->opt);
        if (AUTH_METHOD_NOT_SUPPORTED === $res) {
            $this->markTestSkipped("This operation is not supported by ".get_class($this->container));
        }

        if (PEAR::isError($res)) {
            $error = $res->getMessage().' ['.$res->getUserInfo().']';
        } else {
            $error = '';
        }
        $this->assertTrue(!PEAR::isError($res), 'error:'.$error);
        $ca = count($this->container->listUsers());
        $users = $this->container->listUsers();
        $last_username = $users[$ca-1]['username'];
        $this->assertTrue( ($cb === $ca-1) , sprintf('Count of users before (%s) and after (%s) does not differ by one', $cb, $ca));
        $this->assertTrue( $this->container->fetchData($this->user, $this->pass) , sprintf('Could not verify with the newly created user %s',$this->user));

        // Remove the user we just added, assumes removeUser works
        $this->container->removeUser($this->user);
    }

    function testFetchData()
    {
        $opt = $this->getExtraOptions();
        $fetch_res = $this->container->fetchData($opt['username'], $opt['passwd']);
        if (AUTH_METHOD_NOT_SUPPORTED === $fetch_res) {
            $this->markTestSkipped("This operation is not supported by ".get_class($this->container));
        }

        $this->assertTrue($fetch_res,sprintf('Could not verify with the default username (%s) and passwd (%s)', $opt['username'], $opt['passwd']));

        // Test for fail fetchData
        $opt = $this->getExtraOptions();
        $this->assertFalse(
            $this->container->fetchData(md5($opt['username']), $opt['passwd']),
            "fetchData returned true with invalid username and pass"
        );

    }


    /**
     * Tjis test depends on add user & remove user to work
     */
    function testFetchDataSpaceInPassword()
    {
        $user = uniqid('user');
        $pass = 'Some Pass ';

        $res = $this->container->addUser($user, $pass, array());
        if (AUTH_METHOD_NOT_SUPPORTED === $res) {
            $this->markTestSkipped("This operation is not supported by ".get_class($this->container));
        }

        $fetch_res = $this->container->fetchData($user, $pass);
        if (AUTH_METHOD_NOT_SUPPORTED === $fetch_res) {
            $this->markTestSkipped("This operation is not supported by ".get_class($this->container));
        }

        $this->assertTrue($fetch_res, 'Could not verify user with space password');

        $remove_res = $this->container->removeUser($user);
    }




    function testRemoveUser()
    {
        // Add a user to be removed when testing removeUuser method
        // Assume add user works
        $this->container->addUser('for_remove', 'for_remove');
        $cb = count($this->container->listUsers());
        $remove_res = $this->container->removeUser('for_remove');
        if (AUTH_METHOD_NOT_SUPPORTED === $remove_res) {
            $this->markTestSkipped("This operation is not supported by ".get_class($this->container));
        }

        $ca = count($this->container->listUsers());
        $this->assertTrue($cb === $ca+1, sprintf('Could not remove user "%s", count before:%s count after:%s ', 'for_remove', $cb, $ca));
    }

}

?>