summaryrefslogtreecommitdiff
path: root/tests/test_tools/simpletest/authentication.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_tools/simpletest/authentication.php')
-rw-r--r--tests/test_tools/simpletest/authentication.php237
1 files changed, 0 insertions, 237 deletions
diff --git a/tests/test_tools/simpletest/authentication.php b/tests/test_tools/simpletest/authentication.php
deleted file mode 100644
index 86b68402..00000000
--- a/tests/test_tools/simpletest/authentication.php
+++ /dev/null
@@ -1,237 +0,0 @@
-<?php
- /**
- * Base include file for SimpleTest
- * @package SimpleTest
- * @subpackage WebTester
- * @version $Id: authentication.php 1532 2006-12-01 12:28:55Z xue $
- */
- /**
- * include http class
- */
- require_once(dirname(__FILE__) . '/http.php');
-
- /**
- * Represents a single security realm's identity.
- * @package SimpleTest
- * @subpackage WebTester
- */
- class SimpleRealm {
- protected $_type;
- protected $_root;
- protected $_username;
- protected $_password;
-
- /**
- * Starts with the initial entry directory.
- * @param string $type Authentication type for this
- * realm. Only Basic authentication
- * is currently supported.
- * @param SimpleUrl $url Somewhere in realm.
- * @access public
- */
- function SimpleRealm($type, $url) {
- $this->_type = $type;
- $this->_root = $url->getBasePath();
- $this->_username = false;
- $this->_password = false;
- }
-
- /**
- * Adds another location to the realm.
- * @param SimpleUrl $url Somewhere in realm.
- * @access public
- */
- function stretch($url) {
- $this->_root = $this->_getCommonPath($this->_root, $url->getPath());
- }
-
- /**
- * Finds the common starting path.
- * @param string $first Path to compare.
- * @param string $second Path to compare.
- * @return string Common directories.
- * @access private
- */
- function _getCommonPath($first, $second) {
- $first = explode('/', $first);
- $second = explode('/', $second);
- for ($i = 0; $i < min(count($first), count($second)); $i++) {
- if ($first[$i] != $second[$i]) {
- return implode('/', array_slice($first, 0, $i)) . '/';
- }
- }
- return implode('/', $first) . '/';
- }
-
- /**
- * Sets the identity to try within this realm.
- * @param string $username Username in authentication dialog.
- * @param string $username Password in authentication dialog.
- * @access public
- */
- function setIdentity($username, $password) {
- $this->_username = $username;
- $this->_password = $password;
- }
-
- /**
- * Accessor for current identity.
- * @return string Last succesful username.
- * @access public
- */
- function getUsername() {
- return $this->_username;
- }
-
- /**
- * Accessor for current identity.
- * @return string Last succesful password.
- * @access public
- */
- function getPassword() {
- return $this->_password;
- }
-
- /**
- * Test to see if the URL is within the directory
- * tree of the realm.
- * @param SimpleUrl $url URL to test.
- * @return boolean True if subpath.
- * @access public
- */
- function isWithin($url) {
- if ($this->_isIn($this->_root, $url->getBasePath())) {
- return true;
- }
- if ($this->_isIn($this->_root, $url->getBasePath() . $url->getPage() . '/')) {
- return true;
- }
- return false;
- }
-
- /**
- * Tests to see if one string is a substring of
- * another.
- * @param string $part Small bit.
- * @param string $whole Big bit.
- * @return boolean True if the small bit is
- * in the big bit.
- * @access private
- */
- function _isIn($part, $whole) {
- return strpos($whole, $part) === 0;
- }
- }
-
- /**
- * Manages security realms.
- * @package SimpleTest
- * @subpackage WebTester
- */
- class SimpleAuthenticator {
- protected $_realms;
-
- /**
- * Clears the realms.
- * @access public
- */
- function SimpleAuthenticator() {
- $this->restartSession();
- }
-
- /**
- * Starts with no realms set up.
- * @access public
- */
- function restartSession() {
- $this->_realms = array();
- }
-
- /**
- * Adds a new realm centered the current URL.
- * Browsers vary wildly on their behaviour in this
- * regard. Mozilla ignores the realm and presents
- * only when challenged, wasting bandwidth. IE
- * just carries on presenting until a new challenge
- * occours. SimpleTest tries to follow the spirit of
- * the original standards committee and treats the
- * base URL as the root of a file tree shaped realm.
- * @param SimpleUrl $url Base of realm.
- * @param string $type Authentication type for this
- * realm. Only Basic authentication
- * is currently supported.
- * @param string $realm Name of realm.
- * @access public
- */
- function addRealm($url, $type, $realm) {
- $this->_realms[$url->getHost()][$realm] = new SimpleRealm($type, $url);
- }
-
- /**
- * Sets the current identity to be presented
- * against that realm.
- * @param string $host Server hosting realm.
- * @param string $realm Name of realm.
- * @param string $username Username for realm.
- * @param string $password Password for realm.
- * @access public
- */
- function setIdentityForRealm($host, $realm, $username, $password) {
- if (isset($this->_realms[$host][$realm])) {
- $this->_realms[$host][$realm]->setIdentity($username, $password);
- }
- }
-
- /**
- * Finds the name of the realm by comparing URLs.
- * @param SimpleUrl $url URL to test.
- * @return SimpleRealm Name of realm.
- * @access private
- */
- function _findRealmFromUrl($url) {
- if (! isset($this->_realms[$url->getHost()])) {
- return false;
- }
- foreach ($this->_realms[$url->getHost()] as $name => $realm) {
- if ($realm->isWithin($url)) {
- return $realm;
- }
- }
- return false;
- }
-
- /**
- * Presents the appropriate headers for this location.
- * @param SimpleHttpRequest $request Request to modify.
- * @param SimpleUrl $url Base of realm.
- * @access public
- */
- function addHeaders($request, $url) {
- if ($url->getUsername() && $url->getPassword()) {
- $username = $url->getUsername();
- $password = $url->getPassword();
- } elseif ($realm = $this->_findRealmFromUrl($url)) {
- $username = $realm->getUsername();
- $password = $realm->getPassword();
- } else {
- return;
- }
- $this->addBasicHeaders($request, $username, $password);
- }
-
- /**
- * Presents the appropriate headers for this
- * location for basic authentication.
- * @param SimpleHttpRequest $request Request to modify.
- * @param string $username Username for realm.
- * @param string $password Password for realm.
- * @access public
- * @static
- */
- static function addBasicHeaders($request, $username, $password) {
- if ($username && $password) {
- $request->addHeaderLine(
- 'Authorization: Basic ' . base64_encode("$username:$password"));
- }
- }
- } \ No newline at end of file