cacert-testmgr/external/ZendFramework-1.9.5/tests/Zend/OpenIdTest.php

713 lines
27 KiB
PHP
Raw Normal View History

<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_OpenId
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: OpenIdTest.php 17363 2009-08-03 07:40:18Z bkarwin $
*/
/**
* Test helper
*/
require_once dirname(__FILE__) . '/../TestHelper.php';
/**
* Zend_OpenId
*/
require_once 'Zend/OpenId.php';
/**
* PHPUnit test case
*/
require_once 'PHPUnit/Framework.php';
/**
* Zend_OpenId_ResponseHelper
*/
require_once 'Zend/OpenId/ResponseHelper.php';
/**
* @category Zend
* @package Zend_OpenId
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @group Zend_OpenId
*/
class Zend_OpenIdTest extends PHPUnit_Framework_TestCase
{
private $_serverVariables;
public function setUp()
{
$this->_serverVariables = $_SERVER;
}
public function tearDown()
{
$_SERVER = $this->_serverVariables;
}
/**
* testing testSelfUrl
*
*/
public function testSelfUrl()
{
unset($_SERVER['SCRIPT_URI']);
unset($_SERVER['HTTPS']);
unset($_SERVER['HTTP_HOST']);
unset($_SERVER['SERVER_NAME']);
unset($_SERVER['SERVER_PORT']);
unset($_SERVER['SCRIPT_URL']);
unset($_SERVER['REDIRECT_URL']);
unset($_SERVER['PHP_SELF']);
unset($_SERVER['SCRIPT_NAME']);
unset($_SERVER['PATH_INFO']);
$this->assertSame( 'http://', Zend_OpenId::selfUrl() );
$_SERVER['SCRIPT_URI'] = "http://www.test.com/";
$this->assertSame( 'http://www.test.com/', Zend_OpenId::selfUrl() );
unset($_SERVER['SCRIPT_URI']);
$_SERVER['HTTP_HOST'] = "www.test.com";
$_SERVER['SERVER_NAME'] = "www.wrong.com";
$this->assertSame( 'http://www.test.com', Zend_OpenId::selfUrl() );
$_SERVER['HTTP_HOST'] = "www.test.com:80";
$this->assertSame( 'http://www.test.com', Zend_OpenId::selfUrl() );
$_SERVER['HTTP_HOST'] = "www.test.com:8080";
$this->assertSame( 'http://www.test.com:8080', Zend_OpenId::selfUrl() );
$_SERVER['HTTP_HOST'] = "www.test.com";
$_SERVER['SERVER_PORT'] = "80";
$this->assertSame( 'http://www.test.com', Zend_OpenId::selfUrl() );
$_SERVER['SERVER_PORT'] = "8080";
$this->assertSame( 'http://www.test.com:8080', Zend_OpenId::selfUrl() );
unset($_SERVER['HTTP_HOST']);
unset($_SERVER['SERVER_PORT']);
$_SERVER['SERVER_NAME'] = "www.test.com";
$this->assertSame( 'http://www.test.com', Zend_OpenId::selfUrl() );
$_SERVER['SERVER_PORT'] = "80";
$this->assertSame( 'http://www.test.com', Zend_OpenId::selfUrl() );
$_SERVER['SERVER_PORT'] = "8080";
$this->assertSame( 'http://www.test.com:8080', Zend_OpenId::selfUrl() );
unset($_SERVER['SERVER_PORT']);
$_SERVER['HTTPS'] = "on";
$this->assertSame( 'https://www.test.com', Zend_OpenId::selfUrl() );
$_SERVER['SERVER_PORT'] = "443";
$this->assertSame( 'https://www.test.com', Zend_OpenId::selfUrl() );
$_SERVER['SERVER_PORT'] = "8080";
$this->assertSame( 'https://www.test.com:8080', Zend_OpenId::selfUrl() );
unset($_SERVER['SERVER_PORT']);
unset($_SERVER['HTTPS']);
$_SERVER['SCRIPT_URL'] = '/test.php';
$_SERVER['PHP_SELF'] = '/bug.php';
$_SERVER['SCRIPT_NAME'] = '/bug.php';
$_SERVER['PATH_INFO'] = '/bug';
$this->assertSame( 'http://www.test.com/test.php', Zend_OpenId::selfUrl() );
unset($_SERVER['SCRIPT_URL']);
$_SERVER['REDIRECT_URL'] = '/ok';
$_SERVER['PHP_SELF'] = '/bug.php';
$_SERVER['SCRIPT_NAME'] = '/bug.php';
$_SERVER['PATH_INFO'] = '/bug';
$this->assertSame( 'http://www.test.com/ok', Zend_OpenId::selfUrl() );
unset($_SERVER['REDIRECT_URL']);
$_SERVER['PHP_SELF'] = '/test.php';
$this->assertSame( 'http://www.test.com/test.php', Zend_OpenId::selfUrl() );
unset($_SERVER['PHP_SELF']);
$_SERVER['SCRIPT_NAME'] = '/test.php';
$_SERVER['PATH_INFO'] = '/ok';
$this->assertSame( 'http://www.test.com/test.php/ok', Zend_OpenId::selfUrl() );
unset($_SERVER['PATH_INFO']);
$this->assertSame( 'http://www.test.com/test.php', Zend_OpenId::selfUrl() );
}
/**
* testing testAbsolutefUrl
*
*/
public function testAbsoluteUrl()
{
unset($_SERVER['SCRIPT_URI']);
unset($_SERVER['HTTPS']);
unset($_SERVER['HTTP_HOST']);
unset($_SERVER['SERVER_NAME']);
unset($_SERVER['SERVER_PORT']);
unset($_SERVER['SCRIPT_URL']);
unset($_SERVER['REDIRECT_URL']);
unset($_SERVER['PHP_SELF']);
unset($_SERVER['SCRIPT_NAME']);
unset($_SERVER['PATH_INFO']);
$_SERVER['HTTP_HOST'] = "www.test.com";
$_SERVER['SCRIPT_NAME'] = '/a/b/c/test.php';
$this->assertSame( 'http://www.test.com/a/b/c/test.php', Zend_OpenId::absoluteUrl("") );
$this->assertSame( 'http://www.test.com/a/b/c/ok.php', Zend_OpenId::absoluteUrl("ok.php") );
$this->assertSame( 'http://www.test.com/a/ok.php', Zend_OpenId::absoluteUrl("/a/ok.php") );
$this->assertSame( 'http://www.php.net/ok.php', Zend_OpenId::absoluteUrl("http://www.php.net/ok.php") );
$this->assertSame( 'https://www.php.net/ok.php', Zend_OpenId::absoluteUrl("https://www.php.net/ok.php") );
$_SERVER['SCRIPT_NAME'] = '/test.php';
$this->assertSame( 'http://www.test.com/a/b.php', Zend_OpenId::absoluteUrl("/a/b.php") );
$this->assertSame( 'http://www.test.com/a/b.php', Zend_OpenId::absoluteUrl("a/b.php") );
}
/**
* testing testParamsToQuery
*
*/
public function testParamsToQuery()
{
$this->assertSame( '', Zend_OpenId::paramsToQuery(array()) );
$this->assertSame( 'a=1', Zend_OpenId::paramsToQuery(array('a'=>1)) );
$this->assertSame( 'a=1&b=2', Zend_OpenId::paramsToQuery(array('a'=>1,'b'=>2)) );
$this->assertSame( 'a=x+y', Zend_OpenId::paramsToQuery(array('a'=>'x y')) );
}
/**
* testing testNormalizeUrl
*
*/
public function testNormalizeUrl()
{
$url = 'example://a/b/c/%7Bfoo%7D';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://a/b/c/%7Bfoo%7D', $url );
$url = 'eXAMPLE://A/./b/../b/%63/%7bfoo%7d';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://a/b/c/%7Bfoo%7D', $url );
$url = 'eXAMPLE://A/./b/../b/%63/%bbfoo%Bd';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://a/b/c/%BBfoo%BD', $url );
$url = 'example://a/b/c/%1';
$this->assertFalse( Zend_OpenId::normalizeUrl($url) );
$url = 'example://a/b/c/%x1';
$this->assertFalse( Zend_OpenId::normalizeUrl($url) );
$url = 'example://a/b/c/%1x';
$this->assertFalse( Zend_OpenId::normalizeUrl($url) );
$url = 'eXAMPLE://A/b/c/x%20y';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://a/b/c/x%20y', $url );
$url = 'example://host/.a/b/c';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/.a/b/c', $url );
$url = 'a/b/c';
$this->assertFalse( Zend_OpenId::normalizeUrl($url) );
$url = 'example://:80/a/b/c';
$this->assertFalse( Zend_OpenId::normalizeUrl($url) );
$url = 'example://host/a/.b/c';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/.b/c', $url );
$url = 'example://host/a/b/.c';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/b/.c', $url );
$url = 'example://host/..a/b/c';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/..a/b/c', $url );
$url = 'example://host/a/..b/c';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/..b/c', $url );
$url = 'example://host/a/b/..c';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/b/..c', $url );
$url = 'example://host/./b/c';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/b/c', $url );
$url = 'example://host/a/./c';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/c', $url );
$url = 'example://host/a/b/.';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/b', $url );
$url = 'example://host/a/b/./';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/b/', $url );
$url = 'example://host/../b/c';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/b/c', $url );
$url = 'example://host/a/../c';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/c', $url );
$url = 'example://host/a/b/..';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a', $url );
$url = 'example://host/a/b/../';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/', $url );
$url = 'example://host/a/b/c/..';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/b', $url );
$url = 'example://host/a/b/c/../..';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a', $url );
$url = 'example://host/a/b/c/../../..';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/', $url );
$url = 'example://host///a///b///c///..///../d';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/d', $url );
$url = 'example://host///a///b///c///.///./d';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/b/c/d', $url );
$url = 'example://host///a///b///c///..///./d';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/b/d', $url );
$url = 'example://host///a///b///c///.///../d';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'example://host/a/b/d', $url );
$url = 'http://example.com';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'http://example.com/', $url );
$url = 'http://example.com/';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'http://example.com/', $url );
$url = 'http://example.com:';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'http://example.com/', $url );
$url = 'http://example.com:80/';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'http://example.com/', $url );
$url = 'https://example.com:443/';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'https://example.com/', $url );
$url = 'http://example.com?';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'http://example.com/?', $url );
$url = 'http://example.com/?';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'http://example.com/?', $url );
$url = 'http://example.com/test.php?Foo=Bar#Baz';
$this->assertTrue( Zend_OpenId::normalizeUrl($url) );
$this->assertSame( 'http://example.com/test.php?Foo=Bar', $url );
}
/**
* testing testNormalize
*
*/
public function testNormalize()
{
$url = '';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( '', $url );
$url = ' localhost ';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( 'http://localhost/', $url );
$url = 'xri://$ip*127.0.0.1';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( 'http://127.0.0.1/', $url );
$url = 'xri://$dns*localhost';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( 'http://localhost/', $url );
$url = 'xri://localhost';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( 'http://localhost/', $url );
$url = '=name';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( '=name', $url );
$url = '@name';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( '@name', $url );
$url = '+name';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( '+name', $url );
$url = '$name';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( '$name', $url );
$url = '!name';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( '!name', $url );
$url = 'localhost';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( 'http://localhost/', $url );
$url = 'http://localhost';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( 'http://localhost/', $url );
$url = 'https://localhost';
$this->assertTrue( Zend_OpenId::normalize($url) );
$this->assertSame( 'https://localhost/', $url );
}
/**
* testing testRedirect
*
*/
public function testRedirect()
{
$response = new Zend_OpenId_ResponseHelper(true);
Zend_OpenId::redirect("http://www.test.com/", null, $response, 'GET');
$this->assertSame( 302, $response->getHttpResponseCode() );
$this->assertSame( array(), $response->getRawHeaders() );
$headers = $response->getHeaders();
$this->assertTrue( is_array($headers) );
$this->assertSame( 1, count($headers) );
$this->assertTrue( is_array($headers[0]) );
$this->assertSame( 3, count($headers[0]) );
$this->assertSame( 'Location', $headers[0]['name'] );
$this->assertSame( 'http://www.test.com/', $headers[0]['value'] );
$this->assertSame( true, $headers[0]['replace'] );
$this->assertSame( '', $response->getBody() );
$response = new Zend_OpenId_ResponseHelper(true);
Zend_OpenId::redirect("http://www.test.com/test.php?a=b", null, $response, 'GET');
$headers = $response->getHeaders();
$this->assertSame( 'http://www.test.com/test.php?a=b', $headers[0]['value'] );
$response = new Zend_OpenId_ResponseHelper(true);
Zend_OpenId::redirect("http://www.test.com/test.php", array('a'=>'b'), $response, 'GET');
$headers = $response->getHeaders();
$this->assertSame( 'http://www.test.com/test.php?a=b', $headers[0]['value'] );
$response = new Zend_OpenId_ResponseHelper(true);
Zend_OpenId::redirect("http://www.test.com/test.php", array('a'=>'b', 'c'=>'d'), $response, 'GET');
$headers = $response->getHeaders();
$this->assertSame( 'http://www.test.com/test.php?a=b&c=d', $headers[0]['value'] );
$response = new Zend_OpenId_ResponseHelper(true);
Zend_OpenId::redirect("http://www.test.com/test.php?a=b", array('c'=>'d'), $response, 'GET');
$headers = $response->getHeaders();
$this->assertSame( 'http://www.test.com/test.php?a=b&c=d', $headers[0]['value'] );
$response = new Zend_OpenId_ResponseHelper(true);
Zend_OpenId::redirect("http://www.test.com/test.php", array('a'=>'x y'), $response, 'GET');
$headers = $response->getHeaders();
$this->assertSame( 'http://www.test.com/test.php?a=x+y', $headers[0]['value'] );
$response = new Zend_OpenId_ResponseHelper(false);
Zend_OpenId::redirect("http://www.test.com/", null, $response, 'GET');
$this->assertSame( 200, $response->getHttpResponseCode() );
$this->assertSame( array(), $response->getRawHeaders() );
$this->assertSame( array(), $response->getHeaders() );
$this->assertSame(
"<script language=\"JavaScript\" type=\"text/javascript\">window.location='http://www.test.com/';</script>",
$response->getBody() );
$response = new Zend_OpenId_ResponseHelper(false);
Zend_OpenId::redirect("http://www.test.com/test.php?a=b", null, $response, 'GET');
$this->assertSame(
"<script language=\"JavaScript\" type=\"text/javascript\">window.location='http://www.test.com/test.php?a=b';</script>",
$response->getBody() );
$response = new Zend_OpenId_ResponseHelper(false);
Zend_OpenId::redirect("http://www.test.com/test.php", array('a'=>'b'), $response, 'GET');
$this->assertSame(
"<script language=\"JavaScript\" type=\"text/javascript\">window.location='http://www.test.com/test.php?a=b';</script>",
$response->getBody() );
$response = new Zend_OpenId_ResponseHelper(false);
Zend_OpenId::redirect("http://www.test.com/test.php", array('a'=>'b','c'=>'d'), $response, 'GET');
$this->assertSame(
"<script language=\"JavaScript\" type=\"text/javascript\">window.location='http://www.test.com/test.php?a=b&c=d';</script>",
$response->getBody() );
$response = new Zend_OpenId_ResponseHelper(false);
Zend_OpenId::redirect("http://www.test.com/test.php?a=b", array('c'=>'d'), $response, 'GET');
$this->assertSame(
"<script language=\"JavaScript\" type=\"text/javascript\">window.location='http://www.test.com/test.php?a=b&c=d';</script>",
$response->getBody() );
$response = new Zend_OpenId_ResponseHelper(false);
Zend_OpenId::redirect("http://www.test.com/test.php", array('a'=>'x y'), $response, 'GET');
$this->assertSame(
"<script language=\"JavaScript\" type=\"text/javascript\">window.location='http://www.test.com/test.php?a=x+y';</script>",
$response->getBody() );
$response = new Zend_OpenId_ResponseHelper(true);
Zend_OpenId::redirect("http://www.test.com/", null, $response, 'POST');
$this->assertSame( 200, $response->getHttpResponseCode() );
$this->assertSame( array(), $response->getRawHeaders() );
$this->assertSame( array(), $response->getHeaders() );
$this->assertSame(
"<html><body onLoad=\"document.forms[0].submit();\">\n" .
"<form method=\"POST\" action=\"http://www.test.com/\">\n" .
"<input type=\"submit\" value=\"Continue OpenID transaction\">\n" .
"</form></body></html>\n",
$response->getBody() );
$response = new Zend_OpenId_ResponseHelper(true);
Zend_OpenId::redirect("http://www.test.com/test.php?a=b", array('a'=>'b'), $response, 'POST');
$this->assertSame(
"<html><body onLoad=\"document.forms[0].submit();\">\n" .
"<form method=\"POST\" action=\"http://www.test.com/test.php?a=b\">\n" .
"<input type=\"hidden\" name=\"a\" value=\"b\">\n" .
"<input type=\"submit\" value=\"Continue OpenID transaction\">\n" .
"</form></body></html>\n",
$response->getBody() );
$response = new Zend_OpenId_ResponseHelper(true);
Zend_OpenId::redirect("http://www.test.com/test.php?a=b", array('a'=>'b','c'=>'d'), $response, 'POST');
$this->assertSame(
"<html><body onLoad=\"document.forms[0].submit();\">\n" .
"<form method=\"POST\" action=\"http://www.test.com/test.php?a=b\">\n" .
"<input type=\"hidden\" name=\"a\" value=\"b\">\n" .
"<input type=\"hidden\" name=\"c\" value=\"d\">\n" .
"<input type=\"submit\" value=\"Continue OpenID transaction\">\n" .
"</form></body></html>\n",
$response->getBody() );
}
/**
* testing testRedirect
*
*/
public function testRandomBytes()
{
$this->assertSame( '', Zend_OpenId::randomBytes(0) );
$x = Zend_OpenId::randomBytes(1);
$this->assertTrue( is_string($x) );
$this->assertSame( 1, strlen($x) );
$x = Zend_OpenId::randomBytes(1024);
$this->assertTrue( is_string($x) );
$this->assertSame( 1024, strlen($x) );
}
/**
* testing testDigest
*
*/
public function testDigest()
{
$this->assertSame(
'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d',
bin2hex(Zend_OpenId::digest('sha1', 'hello')) );
$this->assertSame(
'2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824',
bin2hex(Zend_OpenId::digest('sha256', 'hello')) );
}
/**
* testing testHashHmac
*
*/
public function testHashHmac()
{
$key = 'password';
$this->assertSame(
'1f48abc79459fa853af681ddb3c73ff7f35c48fb',
bin2hex(Zend_OpenId::hashHmac('sha1', 'hello', $key)) );
$this->assertSame(
'7ae615e698567e5e1512dd8140e740bd4d65dfa4db195d80ca327de6302b4a63',
bin2hex(Zend_OpenId::hashHmac('sha256', 'hello', $key)) );
$key = str_repeat('x',128);
$this->assertSame(
'59c6c30dc9fb96b2cb2d7c41dbc6f96d1fbf67ac',
bin2hex(Zend_OpenId::hashHmac('sha1', 'hello', $key)) );
$this->assertSame(
'f5e0c31f7cdd272710052ac3ebcc40d7e82be2427b7e5e1e8373ef1e327515f4',
bin2hex(Zend_OpenId::hashHmac('sha256', 'hello', $key)) );
}
/**
* testing testCreateDhKey
*
*/
public function testCreateDhKey()
{
try {
$dh = Zend_OpenId::createDhKey(
pack('H*', '0233'),
pack('H*', '05'),
pack('H*', '09'));
$dh_details = Zend_OpenId::getDhKeyDetails($dh);
$this->assertTrue( is_array($dh_details) );
$this->assertSame( 4, count($dh_details));
$this->assertSame( '0233', bin2hex($dh_details['p']) );
$this->assertSame( '05', bin2hex($dh_details['g']) );
$this->assertSame( '09', bin2hex($dh_details['priv_key']) );
$this->assertSame( '4e', bin2hex($dh_details['pub_key']) );
$dh = Zend_OpenId::createDhKey(
pack('H*', '0233'),
pack('H*', '02'),
pack('H*', '09'));
$dh_details = Zend_OpenId::getDhKeyDetails($dh);
$this->assertTrue( is_array($dh_details) );
$this->assertSame( 4, count($dh_details) );
$this->assertSame( '0233', bin2hex($dh_details['p']) );
$this->assertSame( '02', bin2hex($dh_details['g']) );
$this->assertSame( '09', bin2hex($dh_details['priv_key']) );
$this->assertSame( '0200', bin2hex($dh_details['pub_key']) );
$dh = Zend_OpenId::createDhKey(
pack('H*', '0233'),
pack('H*', '02'));
$dh_details = Zend_OpenId::getDhKeyDetails($dh);
$this->assertTrue( is_array($dh_details) );
$this->assertSame( 4, count($dh_details) );
$this->assertSame( '0233', bin2hex($dh_details['p']) );
$this->assertSame( '02', bin2hex($dh_details['g']) );
$this->assertTrue( is_string($dh_details['priv_key']) );
$this->assertTrue( strlen($dh_details['priv_key']) > 0 );
$this->assertTrue( is_string($dh_details['pub_key']) );
$this->assertTrue( strlen($dh_details['pub_key']) > 0 );
} catch (Zend_OpenId_Exception $e) {
$this->markTestSkipped($e->getMessage());
}
}
/**
* testing testComputeDhSecret
*
*/
public function testComputeDhSecret()
{
try {
$alice = Zend_OpenId::createDhKey(
pack('H*', '0233'),
pack('H*', '05'),
pack('H*', '09'));
$alice_details = Zend_OpenId::getDhKeyDetails($alice);
$this->assertSame( '4e', bin2hex($alice_details['pub_key']) );
$bob = Zend_OpenId::createDhKey(
pack('H*', '0233'),
pack('H*', '05'),
pack('H*', '0e'));
$bob_details = Zend_OpenId::getDhKeyDetails($bob);
$this->assertSame( '0216', bin2hex($bob_details['pub_key']) );
$this->assertSame( '75',
bin2hex(Zend_OpenId::computeDhSecret($alice_details['pub_key'], $bob)) );
$this->assertSame( '75',
bin2hex(Zend_OpenId::computeDhSecret($bob_details['pub_key'], $alice)) );
} catch (Zend_OpenId_Exception $e) {
$this->markTestSkipped($e->getMessage());
}
}
/**
* testing testBtwoc
*
*/
public function testBtwoc()
{
$this->assertSame( '00', bin2hex(Zend_OpenId::btwoc(pack('H*', '00'))) );
$this->assertSame( '01', bin2hex(Zend_OpenId::btwoc(pack('H*', '01'))) );
$this->assertSame( '7e', bin2hex(Zend_OpenId::btwoc(pack('H*', '7e'))) );
$this->assertSame( '78', bin2hex(Zend_OpenId::btwoc(pack('H*', '78'))) );
$this->assertSame( '0080', bin2hex(Zend_OpenId::btwoc(pack('H*', '80'))) );
$this->assertSame( '0081', bin2hex(Zend_OpenId::btwoc(pack('H*', '81'))) );
$this->assertSame( '00fe', bin2hex(Zend_OpenId::btwoc(pack('H*', 'fe'))) );
$this->assertSame( '00ff', bin2hex(Zend_OpenId::btwoc(pack('H*', 'ff'))) );
}
/**
* testing setSelfUrl
*
*/
public function testSetSelfUrl()
{
unset($_SERVER['SCRIPT_URI']);
unset($_SERVER['HTTPS']);
unset($_SERVER['HTTP_HOST']);
unset($_SERVER['SERVER_NAME']);
unset($_SERVER['SERVER_PORT']);
unset($_SERVER['SCRIPT_URL']);
unset($_SERVER['REDIRECT_URL']);
unset($_SERVER['PHP_SELF']);
unset($_SERVER['SCRIPT_NAME']);
unset($_SERVER['PATH_INFO']);
$_SERVER['SCRIPT_URI'] = "http://www.test.com/";
$this->assertSame( 'http://www.test.com/', Zend_OpenId::selfUrl() );
$this->assertSame( null, Zend_OpenId::setSelfUrl("http://localhost/test") );
$this->assertSame( "http://localhost/test", Zend_OpenId::selfUrl() );
$this->assertSame( "http://localhost/test", Zend_OpenId::setSelfUrl() );
$this->assertSame( 'http://www.test.com/', Zend_OpenId::selfUrl() );
$this->assertSame( null, Zend_OpenId::setSelfUrl() );
$this->assertSame( 'http://www.test.com/', Zend_OpenId::selfUrl() );
}
}