source: trunk/server/www/vendors/simpletest/test/authentication_test.php @ 6

Last change on this file since 6 was 6, checked in by sander, 11 years ago

Added SimpleTest? test framework

File size: 5.5 KB
Line 
1<?php
2// $Id: authentication_test.php 1505 2007-04-30 23:39:59Z lastcraft $
3require_once(dirname(__FILE__) . '/../autorun.php');
4require_once(dirname(__FILE__) . '/../authentication.php');
5require_once(dirname(__FILE__) . '/../http.php');
6Mock::generate('SimpleHttpRequest');
7
8class TestOfRealm extends UnitTestCase {
9   
10    function testWithinSameUrl() {
11        $realm = &new SimpleRealm(
12                'Basic',
13                new SimpleUrl('http://www.here.com/path/hello.html'));
14        $this->assertTrue($realm->isWithin(
15                new SimpleUrl('http://www.here.com/path/hello.html')));
16    }
17   
18    function testInsideWithLongerUrl() {
19        $realm = &new SimpleRealm(
20                'Basic',
21                new SimpleUrl('http://www.here.com/path/'));
22        $this->assertTrue($realm->isWithin(
23                new SimpleUrl('http://www.here.com/path/hello.html')));
24    }
25   
26    function testBelowRootIsOutside() {
27        $realm = &new SimpleRealm(
28                'Basic',
29                new SimpleUrl('http://www.here.com/path/'));
30        $this->assertTrue($realm->isWithin(
31                new SimpleUrl('http://www.here.com/path/more/hello.html')));
32    }
33   
34    function testOldNetscapeDefinitionIsOutside() {
35        $realm = &new SimpleRealm(
36                'Basic',
37                new SimpleUrl('http://www.here.com/path/'));
38        $this->assertFalse($realm->isWithin(
39                new SimpleUrl('http://www.here.com/pathmore/hello.html')));
40    }
41   
42    function testInsideWithMissingTrailingSlash() {
43        $realm = &new SimpleRealm(
44                'Basic',
45                new SimpleUrl('http://www.here.com/path/'));
46        $this->assertTrue($realm->isWithin(
47                new SimpleUrl('http://www.here.com/path')));
48    }
49   
50    function testDifferentPageNameStillInside() {
51        $realm = &new SimpleRealm(
52                'Basic',
53                new SimpleUrl('http://www.here.com/path/hello.html'));
54        $this->assertTrue($realm->isWithin(
55                new SimpleUrl('http://www.here.com/path/goodbye.html')));
56    }
57   
58    function testNewUrlInSameDirectoryDoesNotChangeRealm() {
59        $realm = &new SimpleRealm(
60                'Basic',
61                new SimpleUrl('http://www.here.com/path/hello.html'));
62        $realm->stretch(new SimpleUrl('http://www.here.com/path/goodbye.html'));
63        $this->assertTrue($realm->isWithin(
64                new SimpleUrl('http://www.here.com/path/index.html')));
65        $this->assertFalse($realm->isWithin(
66                new SimpleUrl('http://www.here.com/index.html')));
67    }
68   
69    function testNewUrlMakesRealmTheCommonPath() {
70        $realm = &new SimpleRealm(
71                'Basic',
72                new SimpleUrl('http://www.here.com/path/here/hello.html'));
73        $realm->stretch(new SimpleUrl('http://www.here.com/path/there/goodbye.html'));
74        $this->assertTrue($realm->isWithin(
75                new SimpleUrl('http://www.here.com/path/here/index.html')));
76        $this->assertTrue($realm->isWithin(
77                new SimpleUrl('http://www.here.com/path/there/index.html')));
78        $this->assertTrue($realm->isWithin(
79                new SimpleUrl('http://www.here.com/path/index.html')));
80        $this->assertFalse($realm->isWithin(
81                new SimpleUrl('http://www.here.com/index.html')));
82        $this->assertFalse($realm->isWithin(
83                new SimpleUrl('http://www.here.com/paths/index.html')));
84        $this->assertFalse($realm->isWithin(
85                new SimpleUrl('http://www.here.com/pathindex.html')));
86    }
87}
88
89class TestOfAuthenticator extends UnitTestCase {
90   
91    function testNoRealms() {
92        $request = &new MockSimpleHttpRequest();
93        $request->expectNever('addHeaderLine');
94        $authenticator = &new SimpleAuthenticator();
95        $authenticator->addHeaders($request, new SimpleUrl('http://here.com/'));
96    }
97   
98    function &createSingleRealm() {
99        $authenticator = &new SimpleAuthenticator();
100        $authenticator->addRealm(
101                new SimpleUrl('http://www.here.com/path/hello.html'),
102                'Basic',
103                'Sanctuary');
104        $authenticator->setIdentityForRealm('www.here.com', 'Sanctuary', 'test', 'secret');
105        return $authenticator;
106    }
107   
108    function testOutsideRealm() {
109        $request = &new MockSimpleHttpRequest();
110        $request->expectNever('addHeaderLine');
111        $authenticator = &$this->createSingleRealm();
112        $authenticator->addHeaders(
113                $request,
114                new SimpleUrl('http://www.here.com/hello.html'));
115    }
116   
117    function testWithinRealm() {
118        $request = &new MockSimpleHttpRequest();
119        $request->expectOnce('addHeaderLine');
120        $authenticator = &$this->createSingleRealm();
121        $authenticator->addHeaders(
122                $request,
123                new SimpleUrl('http://www.here.com/path/more/hello.html'));
124    }
125   
126    function testRestartingClearsRealm() {
127        $request = &new MockSimpleHttpRequest();
128        $request->expectNever('addHeaderLine');
129        $authenticator = &$this->createSingleRealm();
130        $authenticator->restartSession();
131        $authenticator->addHeaders(
132                $request,
133                new SimpleUrl('http://www.here.com/hello.html'));
134    }
135   
136    function testDifferentHostIsOutsideRealm() {
137        $request = &new MockSimpleHttpRequest();
138        $request->expectNever('addHeaderLine');
139        $authenticator = &$this->createSingleRealm();
140        $authenticator->addHeaders(
141                $request,
142                new SimpleUrl('http://here.com/path/hello.html'));
143    }
144}
145?>
Note: See TracBrowser for help on using the repository browser.