authentication_test.php

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 145 行

PHP
145
字号
<?php
// $Id: authentication_test.php 1505 2007-04-30 23:39:59Z lastcraft $
require_once(dirname(__FILE__) . '/../autorun.php');
require_once(dirname(__FILE__) . '/../authentication.php');
require_once(dirname(__FILE__) . '/../http.php');
Mock::generate('SimpleHttpRequest');

class TestOfRealm extends UnitTestCase {
    
    function testWithinSameUrl() {
        $realm = &new SimpleRealm(
                'Basic',
                new SimpleUrl('http://www.here.com/path/hello.html'));
        $this->assertTrue($realm->isWithin(
                new SimpleUrl('http://www.here.com/path/hello.html')));
    }
    
    function testInsideWithLongerUrl() {
        $realm = &new SimpleRealm(
                'Basic',
                new SimpleUrl('http://www.here.com/path/'));
        $this->assertTrue($realm->isWithin(
                new SimpleUrl('http://www.here.com/path/hello.html')));
    }
    
    function testBelowRootIsOutside() {
        $realm = &new SimpleRealm(
                'Basic',
                new SimpleUrl('http://www.here.com/path/'));
        $this->assertTrue($realm->isWithin(
                new SimpleUrl('http://www.here.com/path/more/hello.html')));
    }
    
    function testOldNetscapeDefinitionIsOutside() {
        $realm = &new SimpleRealm(
                'Basic',
                new SimpleUrl('http://www.here.com/path/'));
        $this->assertFalse($realm->isWithin(
                new SimpleUrl('http://www.here.com/pathmore/hello.html')));
    }
    
    function testInsideWithMissingTrailingSlash() {
        $realm = &new SimpleRealm(
                'Basic',
                new SimpleUrl('http://www.here.com/path/'));
        $this->assertTrue($realm->isWithin(
                new SimpleUrl('http://www.here.com/path')));
    }
    
    function testDifferentPageNameStillInside() {
        $realm = &new SimpleRealm(
                'Basic',
                new SimpleUrl('http://www.here.com/path/hello.html'));
        $this->assertTrue($realm->isWithin(
                new SimpleUrl('http://www.here.com/path/goodbye.html')));
    }
    
    function testNewUrlInSameDirectoryDoesNotChangeRealm() {
        $realm = &new SimpleRealm(
                'Basic',
                new SimpleUrl('http://www.here.com/path/hello.html'));
        $realm->stretch(new SimpleUrl('http://www.here.com/path/goodbye.html'));
        $this->assertTrue($realm->isWithin(
                new SimpleUrl('http://www.here.com/path/index.html')));
        $this->assertFalse($realm->isWithin(
                new SimpleUrl('http://www.here.com/index.html')));
    }
    
    function testNewUrlMakesRealmTheCommonPath() {
        $realm = &new SimpleRealm(
                'Basic',
                new SimpleUrl('http://www.here.com/path/here/hello.html'));
        $realm->stretch(new SimpleUrl('http://www.here.com/path/there/goodbye.html'));
        $this->assertTrue($realm->isWithin(
                new SimpleUrl('http://www.here.com/path/here/index.html')));
        $this->assertTrue($realm->isWithin(
                new SimpleUrl('http://www.here.com/path/there/index.html')));
        $this->assertTrue($realm->isWithin(
                new SimpleUrl('http://www.here.com/path/index.html')));
        $this->assertFalse($realm->isWithin(
                new SimpleUrl('http://www.here.com/index.html')));
        $this->assertFalse($realm->isWithin(
                new SimpleUrl('http://www.here.com/paths/index.html')));
        $this->assertFalse($realm->isWithin(
                new SimpleUrl('http://www.here.com/pathindex.html')));
    }
}

class TestOfAuthenticator extends UnitTestCase {
    
    function testNoRealms() {
        $request = &new MockSimpleHttpRequest();
        $request->expectNever('addHeaderLine');
        $authenticator = &new SimpleAuthenticator();
        $authenticator->addHeaders($request, new SimpleUrl('http://here.com/'));
    }
    
    function &createSingleRealm() {
        $authenticator = &new SimpleAuthenticator();
        $authenticator->addRealm(
                new SimpleUrl('http://www.here.com/path/hello.html'),
                'Basic',
                'Sanctuary');
        $authenticator->setIdentityForRealm('www.here.com', 'Sanctuary', 'test', 'secret');
        return $authenticator;
    }
    
    function testOutsideRealm() {
        $request = &new MockSimpleHttpRequest();
        $request->expectNever('addHeaderLine');
        $authenticator = &$this->createSingleRealm();
        $authenticator->addHeaders(
                $request,
                new SimpleUrl('http://www.here.com/hello.html'));
    }
    
    function testWithinRealm() {
        $request = &new MockSimpleHttpRequest();
        $request->expectOnce('addHeaderLine');
        $authenticator = &$this->createSingleRealm();
        $authenticator->addHeaders(
                $request,
                new SimpleUrl('http://www.here.com/path/more/hello.html'));
    }
    
    function testRestartingClearsRealm() {
        $request = &new MockSimpleHttpRequest();
        $request->expectNever('addHeaderLine');
        $authenticator = &$this->createSingleRealm();
        $authenticator->restartSession();
        $authenticator->addHeaders(
                $request,
                new SimpleUrl('http://www.here.com/hello.html'));
    }
    
    function testDifferentHostIsOutsideRealm() {
        $request = &new MockSimpleHttpRequest();
        $request->expectNever('addHeaderLine');
        $authenticator = &$this->createSingleRealm();
        $authenticator->addHeaders(
                $request,
                new SimpleUrl('http://here.com/path/hello.html'));
    }
}
?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?