673 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			673 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * SReg.php testing code.
 | |
|  */
 | |
| 
 | |
| require_once 'Auth/OpenID/SReg.php';
 | |
| require_once 'Auth/OpenID/Message.php';
 | |
| require_once 'Auth/OpenID/Server.php';
 | |
| 
 | |
| class SRegURITest extends PHPUnit_Framework_TestCase {
 | |
|     function test_is11()
 | |
|     {
 | |
|         $this->assertEquals(Auth_OpenID_SREG_NS_URI_1_1,
 | |
|                             Auth_OpenID_SREG_NS_URI);
 | |
|     }
 | |
| }
 | |
| 
 | |
| class CheckFieldNameTest extends PHPUnit_Framework_TestCase {
 | |
|     function test_goodNamePasses()
 | |
|     {
 | |
|         global $Auth_OpenID_sreg_data_fields;
 | |
| 
 | |
|         foreach ($Auth_OpenID_sreg_data_fields as $field_name => $desc) {
 | |
|             $this->assertTrue(Auth_OpenID_checkFieldName($field_name));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function test_badNameFails()
 | |
|     {
 | |
|         $this->assertfalse(Auth_OpenID_checkFieldName('INVALID'));
 | |
|     }
 | |
| 
 | |
|     function test_badTypeFails()
 | |
|     {
 | |
|         $this->assertfalse(Auth_OpenID_checkFieldName(null));
 | |
|     }
 | |
| }
 | |
| 
 | |
| // For supportsSReg test
 | |
| class FakeEndpoint {
 | |
|     function FakeEndpoint($supported)
 | |
|     {
 | |
|         $this->supported = $supported;
 | |
|         $this->checked_uris = array();
 | |
|     }
 | |
| 
 | |
|     function usesExtension($namespace_uri)
 | |
|     {
 | |
|         $this->checked_uris[] = $namespace_uri;
 | |
|         return in_array($namespace_uri, $this->supported);
 | |
|     }
 | |
| }
 | |
| 
 | |
| class SupportsSRegTest extends PHPUnit_Framework_TestCase {
 | |
|     function test_unsupported()
 | |
|     {
 | |
|         $endpoint = new FakeEndpoint(array());
 | |
|         $this->assertfalse(Auth_OpenID_supportsSReg($endpoint));
 | |
|         $this->assertEquals(array(Auth_OpenID_SREG_NS_URI_1_1,
 | |
|                                   Auth_OpenID_SREG_NS_URI_1_0),
 | |
|                             $endpoint->checked_uris);
 | |
|     }
 | |
| 
 | |
|     function test_supported_1_1()
 | |
|     {
 | |
|         $endpoint = new FakeEndpoint(array(Auth_OpenID_SREG_NS_URI_1_1));
 | |
|         $this->assertTrue(Auth_OpenID_supportsSReg($endpoint));
 | |
|         $this->assertEquals(array(Auth_OpenID_SREG_NS_URI_1_1),
 | |
|                             $endpoint->checked_uris);
 | |
|     }
 | |
| 
 | |
|     function test_supported_1_0()
 | |
|     {
 | |
|         $endpoint = new FakeEndpoint(array(Auth_OpenID_SREG_NS_URI_1_0));
 | |
|         $this->assertTrue(Auth_OpenID_supportsSReg($endpoint));
 | |
|         $this->assertEquals(array(Auth_OpenID_SREG_NS_URI_1_1,
 | |
|                                      Auth_OpenID_SREG_NS_URI_1_0),
 | |
|                                $endpoint->checked_uris);
 | |
|     }
 | |
| }
 | |
| 
 | |
| class FakeMessage {
 | |
|     function FakeMessage()
 | |
|     {
 | |
|         $this->openid1 = false;
 | |
|         $this->namespaces = new Auth_OpenID_NamespaceMap();
 | |
|     }
 | |
| 
 | |
|     function isOpenID1()
 | |
|     {
 | |
|         return $this->openid1;
 | |
|     }
 | |
| }
 | |
| 
 | |
| class GetNSTest extends PHPUnit_Framework_TestCase {
 | |
|     function setUp()
 | |
|     {
 | |
|         $this->msg = new FakeMessage();
 | |
|     }
 | |
| 
 | |
|     function test_openID2Empty()
 | |
|     {
 | |
|         $ns_uri = Auth_OpenID_SRegBase::_getSRegNS($this->msg);
 | |
|         $this->assertEquals($this->msg->namespaces->getAlias($ns_uri), 'sreg');
 | |
|         $this->assertEquals(Auth_OpenID_SREG_NS_URI, $ns_uri);
 | |
|     }
 | |
| 
 | |
|     function test_openID1Empty()
 | |
|     {
 | |
|         $this->msg->openid1 = true;
 | |
|         $ns_uri = Auth_OpenID_SRegBase::_getSRegNS($this->msg);
 | |
|         $this->assertEquals($this->msg->namespaces->getAlias($ns_uri), 'sreg');
 | |
|         $this->assertEquals(Auth_OpenID_SREG_NS_URI, $ns_uri);
 | |
|     }
 | |
| 
 | |
|     function test_openID1Defined_1_0()
 | |
|     {
 | |
|         $this->msg->openid1 = true;
 | |
|         $this->msg->namespaces->add(Auth_OpenID_SREG_NS_URI_1_0);
 | |
|         $ns_uri = Auth_OpenID_SRegBase::_getSRegNS($this->msg);
 | |
|         $this->assertEquals(Auth_OpenID_SREG_NS_URI_1_0, $ns_uri);
 | |
|     }
 | |
| 
 | |
|     function test_openID1Defined_1_0_overrideAlias()
 | |
|     {
 | |
|         foreach (array(true, false) as $openid_version) {
 | |
|             foreach (array(Auth_OpenID_SREG_NS_URI_1_0,
 | |
|                            Auth_OpenID_SREG_NS_URI_1_1) as $sreg_version) {
 | |
|                 foreach (array('sreg', 'bogus') as $alias) {
 | |
|                     $this->setUp();
 | |
| 
 | |
|                     $this->msg->openid1 = $openid_version;
 | |
|                     $this->assertTrue($this->msg->namespaces->addAlias($sreg_version, $alias) !== null);
 | |
|                     $ns_uri = Auth_OpenID_SRegBase::_getSRegNS($this->msg);
 | |
|                     $this->assertEquals($this->msg->namespaces->getAlias($ns_uri), $alias);
 | |
|                     $this->assertEquals($sreg_version, $ns_uri);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function test_openID1DefinedBadly()
 | |
|     {
 | |
|         $this->msg->openid1 = true;
 | |
|         $this->msg->namespaces->addAlias('http://invalid/', 'sreg');
 | |
|         $this->assertTrue(Auth_OpenID_SRegBase::_getSRegNS($this->msg) === null);
 | |
|     }
 | |
| 
 | |
|     function test_openID2DefinedBadly()
 | |
|     {
 | |
|         $this->msg->openid1 = false;
 | |
|         $this->msg->namespaces->addAlias('http://invalid/', 'sreg');
 | |
|         $this->assertTrue(Auth_OpenID_SRegBase::_getSRegNS($this->msg) === null);
 | |
|     }
 | |
| 
 | |
|     function test_openID2Defined_1_0()
 | |
|     {
 | |
|         $this->msg->namespaces->add(Auth_OpenID_SREG_NS_URI_1_0);
 | |
|         $ns_uri = Auth_OpenID_SRegBase::_getSRegNS($this->msg);
 | |
|         $this->assertEquals(Auth_OpenID_SREG_NS_URI_1_0, $ns_uri);
 | |
|     }
 | |
| 
 | |
|     function test_openID1_sregNSfromArgs()
 | |
|     {
 | |
|         $args = array(
 | |
|             'sreg.optional' => 'nickname',
 | |
|             'sreg.required' => 'dob');
 | |
| 
 | |
|         $m = Auth_OpenID_Message::fromOpenIDArgs($args);
 | |
| 
 | |
|         $this->assertTrue($m->getArg(Auth_OpenID_SREG_NS_URI_1_1, 'optional') == 'nickname');
 | |
|         $this->assertTrue($m->getArg(Auth_OpenID_SREG_NS_URI_1_1, 'required') == 'dob');
 | |
|     }
 | |
| }
 | |
| 
 | |
| global $__args_sentinel;
 | |
| global $__ns_sentinel;
 | |
| $__args_sentinel = 'args_sentinel';
 | |
| $__ns_sentinel = 'ns_sentinel';
 | |
| 
 | |
| class SentinelFakeMessage {
 | |
|     function SentinelFakeMessage($test_case)
 | |
|     {
 | |
|         $this->test_case =& $test_case;
 | |
|         $this->message = new Auth_OpenID_Message();
 | |
|     }
 | |
| 
 | |
|     function getArgs($ns_uri)
 | |
|     {
 | |
|         global $__ns_sentinel, $__args_sentinel;
 | |
|         $this->test_case->assertEquals($__ns_sentinel, $ns_uri);
 | |
|         return $__args_sentinel;
 | |
|     }
 | |
| }
 | |
| 
 | |
| // XXX Ugly hack.  Thanks, PHP.
 | |
| global $__TestingReq_TEST_CASE;
 | |
| $__TestingReq_TEST_CASE = "FLUB";
 | |
| 
 | |
| function __setTestCase($thing) {
 | |
|   global $__TestingReq_TEST_CASE;
 | |
|   $__TestingReq_TEST_CASE = $thing;
 | |
| }
 | |
| 
 | |
| function &__getTestCase() {
 | |
|   global $__TestingReq_TEST_CASE;
 | |
|   return $__TestingReq_TEST_CASE;
 | |
| }
 | |
| 
 | |
| class TestingReq extends Auth_OpenID_SRegRequest {
 | |
|     static function fromOpenIDRequest($thing, $test_case)
 | |
|     {
 | |
|         __setTestCase($test_case);
 | |
|         $obj = parent::fromOpenIDRequest($thing, 'TestingReq');
 | |
|         return $obj;
 | |
|     }
 | |
| 
 | |
|     static function _getSRegNS($unused)
 | |
|     {
 | |
|         global $__ns_sentinel;
 | |
|         return $__ns_sentinel;
 | |
|     }
 | |
| 
 | |
|     function parseExtensionArgs($args)
 | |
|     {
 | |
|         global $__args_sentinel;
 | |
|         $tc =& __getTestCase();
 | |
|         $tc->assertEquals($__args_sentinel, $args);
 | |
|     }
 | |
| }
 | |
| 
 | |
| class SRegRequestTest extends PHPUnit_Framework_TestCase {
 | |
|     function test_constructEmpty()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertEquals(array(), $req->optional);
 | |
|         $this->assertEquals(array(), $req->required);
 | |
|         $this->assertEquals(null, $req->policy_url);
 | |
|         $this->assertEquals(Auth_OpenID_SREG_NS_URI, $req->ns_uri);
 | |
|     }
 | |
| 
 | |
|     function test_constructFields()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build(
 | |
|                                               array('nickname'),
 | |
|                                               array('gender'),
 | |
|                                               'http://policy',
 | |
|                                               'http://sreg.ns_uri');
 | |
|         $this->assertEquals(array('gender'), $req->optional);
 | |
|         $this->assertEquals(array('nickname'), $req->required);
 | |
|         $this->assertEquals('http://policy', $req->policy_url);
 | |
|         $this->assertEquals('http://sreg.ns_uri', $req->ns_uri);
 | |
|     }
 | |
| 
 | |
|     function test_constructBadFields()
 | |
|     {
 | |
|         $this->assertTrue(Auth_OpenID_SRegRequest::build(array('elvis')) === null);
 | |
|     }
 | |
| 
 | |
|     function test_fromOpenIDResponse()
 | |
|     {
 | |
|         $openid_req = new Auth_OpenID_Request();
 | |
| 
 | |
|         $msg = new SentinelFakeMessage($this);
 | |
|         $openid_req->message =& $msg;
 | |
| 
 | |
|         $req = TestingReq::fromOpenIDRequest($openid_req, $this);
 | |
|         $this->assertTrue(is_a($req, 'TestingReq'));
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_empty()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(array()));
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_extraIgnored()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(array('janrain' => 'inc')));
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_nonStrict()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(array('required' => 'beans')));
 | |
|         $this->assertEquals(array(), $req->required);
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_strict()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertFalse($req->parseExtensionArgs(array('required' => 'beans'),
 | |
|                                                     true));
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_policy()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(
 | |
|                                 array('policy_url' => 'http://policy'), true));
 | |
|         $this->assertEquals('http://policy', $req->policy_url);
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_requiredEmpty()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(array('required' => ''), true));
 | |
|         $this->assertEquals(array(), $req->required);
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_optionalEmpty()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(array('optional' => ''), true));
 | |
|         $this->assertEquals(array(), $req->optional);
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_optionalSingle()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(array('optional' => 'nickname'), true));
 | |
|         $this->assertEquals(array('nickname'), $req->optional);
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_optionalList()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(array('optional' => 'nickname,email'), true));
 | |
|         $this->assertEquals(array('nickname','email'), $req->optional);
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_optionalListBadNonStrict()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(array('optional' => 'nickname,email,beer')));
 | |
|         $this->assertEquals(array('nickname','email'), $req->optional);
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_optionalListBadStrict()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertFalse($req->parseExtensionArgs(array('optional' => 'nickname,email,beer'),
 | |
|                                                     true));
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_bothNonStrict()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(array('optional' => 'nickname',
 | |
|                                                          'required' => 'nickname')));
 | |
|         $this->assertEquals(array(), $req->optional);
 | |
|         $this->assertEquals(array('nickname'), $req->required);
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_bothStrict()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertFalse($req->parseExtensionArgs(
 | |
|                                                     array('optional' => 'nickname',
 | |
|                                                           'required' => 'nickname'),
 | |
|                                                     true));
 | |
|     }
 | |
| 
 | |
|     function test_parseExtensionArgs_bothList()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertTrue($req->parseExtensionArgs(array('optional' => 'nickname,email',
 | |
|                                                          'required' => 'country,postcode'),
 | |
|                                                    true));
 | |
|         $this->assertEquals(array('nickname','email'), $req->optional);
 | |
|         $this->assertEquals(array('country','postcode'), $req->required);
 | |
|     }
 | |
| 
 | |
|     function test_allRequestedFields()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertEquals(array(), $req->allRequestedFields());
 | |
|         $req->requestField('nickname');
 | |
|         $this->assertEquals(array('nickname'), $req->allRequestedFields());
 | |
|         $req->requestField('gender', true);
 | |
|         $requested = $req->allRequestedFields();
 | |
|         sort($requested);
 | |
|         $this->assertEquals(array('gender', 'nickname'), $requested);
 | |
|     }
 | |
| 
 | |
|     function test_wereFieldsRequested()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertFalse($req->wereFieldsRequested());
 | |
|         $req->requestField('gender');
 | |
|         $this->assertTrue($req->wereFieldsRequested());
 | |
|     }
 | |
| 
 | |
|     function test_contains()
 | |
|     {
 | |
|         global $Auth_OpenID_sreg_data_fields;
 | |
| 
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         foreach ($Auth_OpenID_sreg_data_fields as $field_name => $desc) {
 | |
|             $this->assertFalse($req->contains($field_name));
 | |
|         }
 | |
| 
 | |
|         $this->assertFalse($req->contains('something else'));
 | |
| 
 | |
|         $req->requestField('nickname');
 | |
|         foreach ($Auth_OpenID_sreg_data_fields as $field_name => $desc) {
 | |
|             if ($field_name == 'nickname') {
 | |
|                 $this->assertTrue($req->contains($field_name));
 | |
|             } else {
 | |
|                 $this->assertFalse($req->contains($field_name));
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function test_requestField_bogus()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertFalse($req->requestField('something else'));
 | |
|         $this->assertFalse($req->requestField('something else', true));
 | |
|     }
 | |
| 
 | |
|     function test_requestField()
 | |
|     {
 | |
|         global $Auth_OpenID_sreg_data_fields;
 | |
| 
 | |
|         // Add all of the fields, one at a time
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $fields = array_keys($Auth_OpenID_sreg_data_fields);
 | |
|         foreach ($fields as $field_name) {
 | |
|             $req->requestField($field_name);
 | |
|         }
 | |
| 
 | |
|         $this->assertEquals($fields, $req->optional);
 | |
|         $this->assertEquals(array(), $req->required);
 | |
| 
 | |
|         // By default, adding the same fields over again has no effect
 | |
|         foreach ($fields as $field_name) {
 | |
|             $req->requestField($field_name);
 | |
|         }
 | |
| 
 | |
|         $this->assertEquals($fields, $req->optional);
 | |
|         $this->assertEquals(array(), $req->required);
 | |
| 
 | |
|         // Requesting a field as required overrides requesting it as
 | |
|         // optional
 | |
|         $expected = $fields;
 | |
|         $overridden = array_pop($expected);
 | |
| 
 | |
|         $this->assertTrue($req->requestField($overridden, true));
 | |
| 
 | |
|         $this->assertEquals($expected, $req->optional);
 | |
|         $this->assertEquals(array($overridden), $req->required);
 | |
| 
 | |
|         // Requesting a field as required overrides requesting it as
 | |
|         // optional
 | |
|         foreach ($fields as $field_name) {
 | |
|             $this->assertTrue($req->requestField($field_name, true));
 | |
|         }
 | |
| 
 | |
|         $this->assertEquals(array(), $req->optional);
 | |
|         foreach ($fields as $f) {
 | |
|             $this->assertTrue(in_array($f, $req->required));
 | |
|         }
 | |
| 
 | |
|         // Requesting it as optional does not downgrade it to optional
 | |
|         foreach ($fields as $field_name) {
 | |
|             $req->requestField($field_name);
 | |
|         }
 | |
| 
 | |
|         $this->assertEquals(array(), $req->optional);
 | |
| 
 | |
|         foreach ($fields as $f) {
 | |
|             $this->assertTrue(in_array($f, $req->required));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function test_requestFields_type()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertFalse($req->requestFields('nickname'));
 | |
|     }
 | |
| 
 | |
|     function test_requestFields()
 | |
|     {
 | |
|         global $Auth_OpenID_sreg_data_fields;
 | |
| 
 | |
|         // Add all of the fields
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
| 
 | |
|         $fields = array_keys($Auth_OpenID_sreg_data_fields);
 | |
|         $req->requestFields($fields);
 | |
| 
 | |
|         $this->assertEquals($fields, $req->optional);
 | |
|         $this->assertEquals(array(), $req->required);
 | |
| 
 | |
|         // By default, adding the same fields over again has no effect
 | |
|         $req->requestFields($fields);
 | |
| 
 | |
|         $this->assertEquals($fields, $req->optional);
 | |
|         $this->assertEquals(array(), $req->required);
 | |
| 
 | |
|         // Requesting a field as required overrides requesting it as
 | |
|         // optional
 | |
|         $expected = $fields;
 | |
|         $overridden = array_shift($expected);
 | |
|         $req->requestFields(array($overridden), true);
 | |
| 
 | |
|         foreach ($expected as $f) {
 | |
|             $this->assertTrue(in_array($f, $req->optional));
 | |
|         }
 | |
| 
 | |
|         $this->assertEquals(array($overridden), $req->required);
 | |
| 
 | |
|         // Requesting a field as required overrides requesting it as
 | |
|         // optional
 | |
|         $req->requestFields($fields, true);
 | |
| 
 | |
|         $this->assertEquals(array(), $req->optional);
 | |
|         $this->assertEquals($fields, $req->required);
 | |
| 
 | |
|         // Requesting it as optional does not downgrade it to optional
 | |
|         $req->requestFields($fields);
 | |
| 
 | |
|         $this->assertEquals(array(), $req->optional);
 | |
|         $this->assertEquals($fields, $req->required);
 | |
|     }
 | |
| 
 | |
|     function test_getExtensionArgs()
 | |
|     {
 | |
|         $req = Auth_OpenID_SRegRequest::build();
 | |
|         $this->assertEquals(array(), $req->getExtensionArgs());
 | |
| 
 | |
|         $this->assertTrue($req->requestField('nickname'));
 | |
|         $this->assertEquals(array('optional' => 'nickname'),
 | |
|                             $req->getExtensionArgs());
 | |
| 
 | |
|         $this->assertTrue($req->requestField('email'));
 | |
|         $this->assertEquals(array('optional' => 'nickname,email'),
 | |
|                             $req->getExtensionArgs());
 | |
| 
 | |
|         $this->assertTrue($req->requestField('gender', true));
 | |
|         $this->assertEquals(array('optional' => 'nickname,email',
 | |
|                                   'required' => 'gender'),
 | |
|                             $req->getExtensionArgs());
 | |
| 
 | |
|         $this->assertTrue($req->requestField('postcode', true));
 | |
|         $this->assertEquals(array('optional' => 'nickname,email',
 | |
|                                   'required' => 'gender,postcode'),
 | |
|                             $req->getExtensionArgs());
 | |
| 
 | |
|         $req->policy_url = 'http://policy.invalid/';
 | |
|         $this->assertEquals(array('optional' => 'nickname,email',
 | |
|                                   'required' => 'gender,postcode',
 | |
|                                   'policy_url' => 'http://policy.invalid/'),
 | |
|                             $req->getExtensionArgs());
 | |
|     }
 | |
| }
 | |
| 
 | |
| class DummySuccessResponse {
 | |
|     function DummySuccessResponse($message, $signed_stuff)
 | |
|     {
 | |
|         $this->message = $message;
 | |
|         $this->signed_stuff = $signed_stuff;
 | |
|     }
 | |
| 
 | |
|     function getSignedNS($ns_uri)
 | |
|     {
 | |
|         return $this->signed_stuff;
 | |
|     }
 | |
| }
 | |
| 
 | |
| class SRegResponseTest extends PHPUnit_Framework_TestCase {
 | |
|     function test_fromSuccessResponse_signed()
 | |
|     {
 | |
|         $message = Auth_OpenID_Message::fromOpenIDArgs(array(
 | |
|             'sreg.nickname' => 'The Mad Stork',
 | |
|             ));
 | |
|         $success_resp = new DummySuccessResponse($message, array());
 | |
|         $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($success_resp);
 | |
|         $this->assertTrue(count($sreg_resp->contents()) === 0);
 | |
|     }
 | |
| 
 | |
|     function test_fromSuccessResponse_unsigned()
 | |
|     {
 | |
|         $message = Auth_OpenID_Message::fromOpenIDArgs(array(
 | |
|             'sreg.nickname' => 'The Mad Stork',
 | |
|             ));
 | |
| 
 | |
|         $success_resp = new DummySuccessResponse($message, array());
 | |
|         $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($success_resp,
 | |
|                                                                    false);
 | |
| 
 | |
|         $this->assertEquals(array('nickname' => 'The Mad Stork'),
 | |
|                             $sreg_resp->contents());
 | |
|     }
 | |
| }
 | |
| 
 | |
| class SendFieldsTest extends PHPUnit_Framework_TestCase {
 | |
|     function _test($uri)
 | |
|     {
 | |
|         // Create a request message with simple registration fields
 | |
|         $sreg_req = Auth_OpenID_SRegRequest::build(array('nickname', 'email'),
 | |
|                                                    array('fullname'));
 | |
|         $req_msg = new Auth_OpenID_Message($uri);
 | |
|         $req_msg->updateArgs(Auth_OpenID_SREG_NS_URI,
 | |
|                              $sreg_req->getExtensionArgs());
 | |
| 
 | |
|         $req = new Auth_OpenID_Request();
 | |
|         $req->message =& $req_msg;
 | |
|         $req->namespace = $req_msg->getOpenIDNamespace();
 | |
| 
 | |
|         // -> send checkid_* request
 | |
| 
 | |
|         // Create an empty response message
 | |
|         $resp_msg = new Auth_OpenID_Message($uri);
 | |
|         $resp = new Auth_OpenID_ServerResponse($req);
 | |
|         $resp->fields = $resp_msg;
 | |
| 
 | |
|         $data = array(
 | |
|                       'nickname' => 'linusaur',
 | |
|                       'postcode' => '12345',
 | |
|                       'country' => 'US',
 | |
|                       'gender' => 'M',
 | |
|                       'fullname' => 'Leonhard Euler',
 | |
|                       'email' => 'president@whitehouse.gov',
 | |
|                       'dob' => '0000-00-00',
 | |
|                       'language' => 'en-us');
 | |
| 
 | |
|         // Put the requested data fields in the response message
 | |
|         $sreg_resp = Auth_OpenID_SRegResponse::extractResponse($sreg_req, $data);
 | |
|         $resp->addExtension($sreg_resp);
 | |
| 
 | |
|         // <- send id_res response
 | |
| 
 | |
|         // Extract the fields that were sent
 | |
|         $sreg_data_resp = $resp->fields->getArgs(Auth_OpenID_SREG_NS_URI);
 | |
|         $this->assertEquals(
 | |
|                             array('nickname' => 'linusaur',
 | |
|                                   'email' => 'president@whitehouse.gov',
 | |
|                                   'fullname' => 'Leonhard Euler'),
 | |
|                             $sreg_data_resp);
 | |
|     }
 | |
| 
 | |
|     function test()
 | |
|     {
 | |
|         foreach (array(Auth_OpenID_OPENID1_NS,
 | |
|                        Auth_OpenID_OPENID2_NS) as $uri) {
 | |
|             $this->_test($uri);
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| class Tests_Auth_OpenID_SReg extends PHPUnit_Framework_TestSuite {
 | |
|     function getName()
 | |
|     {
 | |
|         return "Tests_Auth_OpenID_SReg";
 | |
|     }
 | |
| 
 | |
|     function Tests_Auth_OpenID_SReg()
 | |
|     {
 | |
|         $this->addTestSuite('SRegURITest');
 | |
|         $this->addTestSuite('CheckFieldNameTest');
 | |
|         $this->addTestSuite('SupportsSRegTest');
 | |
|         $this->addTestSuite('GetNSTest');
 | |
|         $this->addTestSuite('SRegRequestTest');
 | |
|         $this->addTestSuite('SRegResponseTest');
 | |
|         $this->addTestSuite('SendFieldsTest');
 | |
|     }
 | |
| }
 | |
| 
 |