forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			793 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			793 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Tests for the attribute exchange extension module
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require_once "Auth/OpenID/AX.php";
							 | 
						||
| 
								 | 
							
								require_once "Auth/OpenID/Message.php";
							 | 
						||
| 
								 | 
							
								require_once "Auth/OpenID/Consumer.php";
							 | 
						||
| 
								 | 
							
								require_once "Auth/OpenID/Server.php";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class BogusAXMessage extends Auth_OpenID_AX_Message {
							 | 
						||
| 
								 | 
							
								    var $mode = 'bogus';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function getExtensionArgs()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->_newArgs();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class AXMessageTest extends PHPUnit_Framework_TestCase {
							 | 
						||
| 
								 | 
							
								    function setUp()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->bax = new BogusAXMessage();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_checkMode()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $result = $this->bax->_checkMode(array());
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError($result));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $result = $this->bax->_checkMode(array('mode' => 'fetch_request'));
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError($result));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // does not raise an exception when the mode is right
							 | 
						||
| 
								 | 
							
								        $result = $this->bax->_checkMode(array('mode' => $this->bax->mode));
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($result === true);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /*
							 | 
						||
| 
								 | 
							
								     * _newArgs generates something that has the correct mode
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    function test_checkMode_newArgs()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $result = $this->bax->_checkMode($this->bax->_newArgs());
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($result === true);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class AttrInfoTest extends PHPUnit_Framework_TestCase {
							 | 
						||
| 
								 | 
							
								    function test_construct()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $type_uri = 'a uri';
							 | 
						||
| 
								 | 
							
								        $ainfo = Auth_OpenID_AX_AttrInfo::make($type_uri);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($type_uri, $ainfo->type_uri);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(1, $ainfo->count);
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($ainfo->required);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($ainfo->alias === null);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ToTypeURIsTest extends PHPUnit_Framework_TestCase {
							 | 
						||
| 
								 | 
							
								    function setUp()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->aliases = new Auth_OpenID_NamespaceMap();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_empty()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        foreach (array(null, '') as $empty) {
							 | 
						||
| 
								 | 
							
								            $uris = Auth_OpenID_AX_toTypeURIs($this->aliases, $empty);
							 | 
						||
| 
								 | 
							
								            $this->assertEquals(array(), $uris);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_undefined()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $result = Auth_OpenID_AX_toTypeURIs($this->aliases,
							 | 
						||
| 
								 | 
							
								                                            'http://janrain.com/');
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError($result));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_one()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $uri = 'http://janrain.com/';
							 | 
						||
| 
								 | 
							
								        $alias = 'openid_hackers';
							 | 
						||
| 
								 | 
							
								        $this->aliases->addAlias($uri, $alias);
							 | 
						||
| 
								 | 
							
								        $uris = Auth_OpenID_AX_toTypeURIs($this->aliases, $alias);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array($uri), $uris);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_two()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $uri1 = 'http://janrain.com/';
							 | 
						||
| 
								 | 
							
								        $alias1 = 'openid_hackers';
							 | 
						||
| 
								 | 
							
								        $this->aliases->addAlias($uri1, $alias1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $uri2 = 'http://jyte.com/';
							 | 
						||
| 
								 | 
							
								        $alias2 = 'openid_hack';
							 | 
						||
| 
								 | 
							
								        $this->aliases->addAlias($uri2, $alias2);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $uris = Auth_OpenID_AX_toTypeURIs($this->aliases,
							 | 
						||
| 
								 | 
							
								                                          implode(',', array($alias1, $alias2)));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array($uri1, $uri2), $uris);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ParseAXValuesTest extends PHPUnit_Framework_TestCase {
							 | 
						||
| 
								 | 
							
								    function failUnlessAXKeyError($ax_args)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $msg = new Auth_OpenID_AX_KeyValueMessage();
							 | 
						||
| 
								 | 
							
								        $result = $msg->parseExtensionArgs($ax_args);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError($result));
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($result->message);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function failUnlessAXValues($ax_args, $expected_args)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $msg = new Auth_OpenID_AX_KeyValueMessage();
							 | 
						||
| 
								 | 
							
								        $msg->parseExtensionArgs($ax_args);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected_args, $msg->data);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_emptyIsValid()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->failUnlessAXValues(array(), array());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_invalidAlias()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $types = array(
							 | 
						||
| 
								 | 
							
								                       'Auth_OpenID_AX_KeyValueMessage',
							 | 
						||
| 
								 | 
							
								                       'Auth_OpenID_AX_FetchRequest'
							 | 
						||
| 
								 | 
							
								                       );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $inputs = array(
							 | 
						||
| 
								 | 
							
								                        array('type.a.b' =>  'urn:foo',
							 | 
						||
| 
								 | 
							
								                              'count.a.b' => '1'),
							 | 
						||
| 
								 | 
							
								                        array('type.a,b' => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                              'count.a,b' => '1'),
							 | 
						||
| 
								 | 
							
								                        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        foreach ($types as $typ) {
							 | 
						||
| 
								 | 
							
								            foreach ($inputs as $input) {
							 | 
						||
| 
								 | 
							
								                $msg = new $typ();
							 | 
						||
| 
								 | 
							
								                $result = $msg->parseExtensionArgs($input);
							 | 
						||
| 
								 | 
							
								                $this->assertTrue(Auth_OpenID_AX::isError($result));
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_missingValueForAliasExplodes()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->failUnlessAXKeyError(array('type.foo' => 'urn:foo'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_countPresentButNotValue()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->failUnlessAXKeyError(array('type.foo' => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                                          'count.foo' => '1'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_invalidCountValue()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $msg = new Auth_OpenID_AX_FetchRequest();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $result = $msg->parseExtensionArgs(
							 | 
						||
| 
								 | 
							
								                    array('type.foo' => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                          'count.foo' => 'bogus'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError($result));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_requestUnlimitedValues()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $msg = new Auth_OpenID_AX_FetchRequest();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $result = $msg->parseExtensionArgs(
							 | 
						||
| 
								 | 
							
								               array('mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								                     'required' => 'foo',
							 | 
						||
| 
								 | 
							
								                     'type.foo' => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                     'count.foo' => Auth_OpenID_AX_UNLIMITED_VALUES));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $attrs = $msg->iterAttrs();
							 | 
						||
| 
								 | 
							
								        $foo = $attrs[0];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($foo->count == Auth_OpenID_AX_UNLIMITED_VALUES);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($foo->wantsUnlimitedValues());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_longAlias()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // Spec minimum length is 32 characters.  This is a silly test
							 | 
						||
| 
								 | 
							
								        // for this library, but it's here for completeness.
							 | 
						||
| 
								 | 
							
								        $alias = str_repeat('x', Auth_OpenID_AX_MINIMUM_SUPPORTED_ALIAS_LENGTH);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $msg = new Auth_OpenID_AX_KeyValueMessage();
							 | 
						||
| 
								 | 
							
								        $result = $msg->parseExtensionArgs(
							 | 
						||
| 
								 | 
							
								                                 array('type.' . $alias => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                                       'count.' . $alias => '1',
							 | 
						||
| 
								 | 
							
								                                       'value.'.$alias.'.1' => 'first')
							 | 
						||
| 
								 | 
							
								                                 );
							 | 
						||
| 
								 | 
							
								        $this->assertFalse(Auth_OpenID_AX::isError($result));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_countPresentAndIsZero()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->failUnlessAXValues(
							 | 
						||
| 
								 | 
							
								                                  array('type.foo' => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                                        'count.foo' => '0',
							 | 
						||
| 
								 | 
							
								                                        ), array('urn:foo' => array()));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_singletonEmpty()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->failUnlessAXValues(
							 | 
						||
| 
								 | 
							
								                                  array('type.foo' => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                                        'value.foo' => '',
							 | 
						||
| 
								 | 
							
								                                        ), array('urn:foo' => array()));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_doubleAlias()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->failUnlessAXKeyError(
							 | 
						||
| 
								 | 
							
								                                    array('type.foo' => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                                          'value.foo' => '',
							 | 
						||
| 
								 | 
							
								                                          'type.bar' => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                                          'value.bar' => '',
							 | 
						||
| 
								 | 
							
								                                          ));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_doubleSingleton()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->failUnlessAXValues(
							 | 
						||
| 
								 | 
							
								                                  array('type.foo' => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                                        'value.foo' => '',
							 | 
						||
| 
								 | 
							
								                                        'type.bar' => 'urn:bar',
							 | 
						||
| 
								 | 
							
								                                        'value.bar' => '',
							 | 
						||
| 
								 | 
							
								                                        ), array('urn:foo' => array(), 'urn:bar' => array()));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_singletonValue()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->failUnlessAXValues(
							 | 
						||
| 
								 | 
							
								                                  array('type.foo' => 'urn:foo',
							 | 
						||
| 
								 | 
							
								                                        'value.foo' => 'Westfall',
							 | 
						||
| 
								 | 
							
								                                        ), array('urn:foo' => array('Westfall')));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class FetchRequestTest extends PHPUnit_Framework_TestCase {
							 | 
						||
| 
								 | 
							
								    function setUp()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->msg = new Auth_OpenID_AX_FetchRequest();
							 | 
						||
| 
								 | 
							
								        $this->type_a = 'http://janrain.example.com/a';
							 | 
						||
| 
								 | 
							
								        $this->alias_a = 'a';
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_mode()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($this->msg->mode, 'fetch_request');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_construct()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array(), $this->msg->requested_attributes);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(null, $this->msg->update_url);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $msg = new Auth_OpenID_AX_FetchRequest('hailstorm');
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array(), $msg->requested_attributes);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals('hailstorm', $msg->update_url);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_add()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $uri = 'mud://puddle';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // Not yet added:
							 | 
						||
| 
								 | 
							
								        $this->assertFalse(in_array($uri, $this->msg->iterTypes()));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $attr = Auth_OpenID_AX_AttrInfo::make($uri);
							 | 
						||
| 
								 | 
							
								        $this->msg->add($attr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // Present after adding
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(in_array($uri, $this->msg->iterTypes()));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_addTwice()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $uri = 'lightning://storm';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $attr = Auth_OpenID_AX_AttrInfo::make($uri);
							 | 
						||
| 
								 | 
							
								        $this->msg->add($attr);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError($this->msg->add($attr)));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_empty()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $expected_args = array(
							 | 
						||
| 
								 | 
							
								                               'mode' =>'fetch_request',
							 | 
						||
| 
								 | 
							
								                               );
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected_args, $this->msg->getExtensionArgs());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_noAlias()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $attr = Auth_OpenID_AX_AttrInfo::make('type://of.transportation');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->msg->add($attr);
							 | 
						||
| 
								 | 
							
								        $ax_args = $this->msg->getExtensionArgs();
							 | 
						||
| 
								 | 
							
								        $found = false;
							 | 
						||
| 
								 | 
							
								        $alias = null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        foreach ($ax_args as $k => $v) {
							 | 
						||
| 
								 | 
							
								            if (($v == $attr->type_uri) && (strpos($k, 'type.') === 0)) {
							 | 
						||
| 
								 | 
							
								                $alias = substr($k, 5);
							 | 
						||
| 
								 | 
							
								                $found = true;
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (!$found) {
							 | 
						||
| 
								 | 
							
								            $this->fail("Didn't find the type definition");
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->failUnlessExtensionArgs(array(
							 | 
						||
| 
								 | 
							
								            'type.' . $alias => $attr->type_uri,
							 | 
						||
| 
								 | 
							
								            'if_available' => $alias));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_alias_if_available()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $attr = Auth_OpenID_AX_AttrInfo::make(
							 | 
						||
| 
								 | 
							
								                                              'type://of.transportation', 1, false,
							 | 
						||
| 
								 | 
							
								                                              'transport');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->msg->add($attr);
							 | 
						||
| 
								 | 
							
								        $this->failUnlessExtensionArgs(array(
							 | 
						||
| 
								 | 
							
								            'type.' .  $attr->alias => $attr->type_uri,
							 | 
						||
| 
								 | 
							
								            'if_available' => $attr->alias));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_alias_req()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $attr = Auth_OpenID_AX_AttrInfo::make(
							 | 
						||
| 
								 | 
							
								            'type://of.transportation',
							 | 
						||
| 
								 | 
							
								            1, true, 'transport');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->msg->add($attr);
							 | 
						||
| 
								 | 
							
								        $this->failUnlessExtensionArgs(array(
							 | 
						||
| 
								 | 
							
								            'type.' . $attr->alias => $attr->type_uri,
							 | 
						||
| 
								 | 
							
								            'required' => $attr->alias));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /*
							 | 
						||
| 
								 | 
							
								     * Make sure that getExtensionArgs has the expected result
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * This method will fill in the mode.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    function failUnlessExtensionArgs($expected_args)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $expected_args['mode'] = $this->msg->mode;
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected_args, $this->msg->getExtensionArgs());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_isIterable()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array(), $this->msg->iterAttrs());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array(), $this->msg->iterTypes());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getRequiredAttrs_empty()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array(), $this->msg->getRequiredAttrs());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_parseExtensionArgs_extraType()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $extension_args = array(
							 | 
						||
| 
								 | 
							
								                                'mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								                                'type.' . $this->alias_a => $this->type_a);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError(
							 | 
						||
| 
								 | 
							
								               $this->msg->parseExtensionArgs($extension_args)));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_parseExtensionArgs()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $extension_args = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								            'type.' . $this->alias_a => $this->type_a,
							 | 
						||
| 
								 | 
							
								            'if_available' => $this->alias_a);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->msg->parseExtensionArgs($extension_args);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array($this->type_a), $this->msg->iterTypes());
							 | 
						||
| 
								 | 
							
								        $attr_info = Auth_OpenID::arrayGet($this->msg->requested_attributes,
							 | 
						||
| 
								 | 
							
								                                           $this->type_a);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($attr_info);
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($attr_info->required);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($this->type_a, $attr_info->type_uri);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($this->alias_a, $attr_info->alias);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array($attr_info),
							 | 
						||
| 
								 | 
							
								                            $this->msg->iterAttrs());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_extensionArgs_idempotent()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $extension_args = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								            'type.' . $this->alias_a => $this->type_a,
							 | 
						||
| 
								 | 
							
								            'if_available' => $this->alias_a);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->msg->parseExtensionArgs($extension_args);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($extension_args, $this->msg->getExtensionArgs());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $attr = $this->msg->requested_attributes[$this->type_a];
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($attr->required);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_extensionArgs_idempotent_count_required()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $extension_args = array(
							 | 
						||
| 
								 | 
							
								                                'mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								                                'type.' . $this->alias_a => $this->type_a,
							 | 
						||
| 
								 | 
							
								                                'count.' . $this->alias_a => '2',
							 | 
						||
| 
								 | 
							
								                                'required' => $this->alias_a);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->msg->parseExtensionArgs($extension_args);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($extension_args, $this->msg->getExtensionArgs());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $attr = $this->msg->requested_attributes[$this->type_a];
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($attr->required);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_extensionArgs_count1()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $extension_args = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								            'type.' . $this->alias_a => $this->type_a,
							 | 
						||
| 
								 | 
							
								            'count.' . $this->alias_a => '1',
							 | 
						||
| 
								 | 
							
								            'if_available' => $this->alias_a);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $extension_args_norm = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								            'type.' . $this->alias_a => $this->type_a,
							 | 
						||
| 
								 | 
							
								            'if_available' => $this->alias_a);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->msg->parseExtensionArgs($extension_args);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($extension_args_norm, $this->msg->getExtensionArgs());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_openidNoRealm()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $openid_req_msg = Auth_OpenID_Message::fromOpenIDArgs(array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'checkid_setup',
							 | 
						||
| 
								 | 
							
								            'ns' => Auth_OpenID_OPENID2_NS,
							 | 
						||
| 
								 | 
							
								            'ns.ax' => Auth_OpenID_AX_NS_URI,
							 | 
						||
| 
								 | 
							
								            'ax.update_url' => 'http://different.site/path',
							 | 
						||
| 
								 | 
							
								            'ax.mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								            ));
							 | 
						||
| 
								 | 
							
										$openid_req = new Auth_OpenID_Request();
							 | 
						||
| 
								 | 
							
										$openid_req->message =& $openid_req_msg;
							 | 
						||
| 
								 | 
							
								        $result = Auth_OpenID_AX_FetchRequest::fromOpenIDRequest(
							 | 
						||
| 
								 | 
							
								                                                     $openid_req);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError($result));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_openidUpdateURLVerificationError()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $openid_req_msg = Auth_OpenID_Message::fromOpenIDArgs(array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'checkid_setup',
							 | 
						||
| 
								 | 
							
								            'ns' => Auth_OpenID_OPENID2_NS,
							 | 
						||
| 
								 | 
							
								            'realm' => 'http://example.com/realm',
							 | 
						||
| 
								 | 
							
								            'ns.ax' => Auth_OpenID_AX_NS_URI,
							 | 
						||
| 
								 | 
							
								            'ax.update_url' => 'http://different.site/path',
							 | 
						||
| 
								 | 
							
								            'ax.mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								            ));
							 | 
						||
| 
								 | 
							
										$openid_req = new Auth_OpenID_Request();
							 | 
						||
| 
								 | 
							
										$openid_req->message =& $openid_req_msg;
							 | 
						||
| 
								 | 
							
								        $result = Auth_OpenID_AX_FetchRequest::fromOpenIDRequest($openid_req);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError($result));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_openidUpdateURLVerificationSuccess()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $openid_req_msg = Auth_OpenID_Message::fromOpenIDArgs(array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'checkid_setup',
							 | 
						||
| 
								 | 
							
								            'ns' => Auth_OpenID_OPENID2_NS,
							 | 
						||
| 
								 | 
							
								            'realm' => 'http://example.com/realm',
							 | 
						||
| 
								 | 
							
								            'ns.ax' => Auth_OpenID_AX_NS_URI,
							 | 
						||
| 
								 | 
							
								            'ax.update_url' => 'http://example.com/realm/update_path',
							 | 
						||
| 
								 | 
							
								            'ax.mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								            ));
							 | 
						||
| 
								 | 
							
										$openid_req = new Auth_OpenID_Request();
							 | 
						||
| 
								 | 
							
										$openid_req->message =& $openid_req_msg;
							 | 
						||
| 
								 | 
							
								        $fr = Auth_OpenID_AX_FetchRequest::fromOpenIDRequest($openid_req);
							 | 
						||
| 
								 | 
							
								        $this->assertFalse(Auth_OpenID_AX::isError($fr));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_openidUpdateURLVerificationSuccessReturnTo()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $openid_req_msg = Auth_OpenID_Message::fromOpenIDArgs(array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'checkid_setup',
							 | 
						||
| 
								 | 
							
								            'ns' => Auth_OpenID_OPENID2_NS,
							 | 
						||
| 
								 | 
							
								            'return_to' => 'http://example.com/realm',
							 | 
						||
| 
								 | 
							
								            'ns.ax' => Auth_OpenID_AX_NS_URI,
							 | 
						||
| 
								 | 
							
								            'ax.update_url' => 'http://example.com/realm/update_path',
							 | 
						||
| 
								 | 
							
								            'ax.mode' => 'fetch_request',
							 | 
						||
| 
								 | 
							
								            ));
							 | 
						||
| 
								 | 
							
										$openid_req = new Auth_OpenID_Request();
							 | 
						||
| 
								 | 
							
										$openid_req->message =& $openid_req_msg;
							 | 
						||
| 
								 | 
							
								        $fr = Auth_OpenID_AX_FetchRequest::fromOpenIDRequest($openid_req);
							 | 
						||
| 
								 | 
							
								        $this->assertFalse(Auth_OpenID_AX::isError($fr));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class FauxEndpoint {
							 | 
						||
| 
								 | 
							
								    function FauxEndpoint() {
							 | 
						||
| 
								 | 
							
								        $this->claimed_id = 'http://some.url/';
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class FetchResponseTest extends PHPUnit_Framework_TestCase {
							 | 
						||
| 
								 | 
							
								    function setUp()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->msg = new Auth_OpenID_AX_FetchResponse();
							 | 
						||
| 
								 | 
							
								        $this->value_a = 'monkeys';
							 | 
						||
| 
								 | 
							
								        $this->type_a = 'http://phone.home/';
							 | 
						||
| 
								 | 
							
								        $this->alias_a = 'robocop';
							 | 
						||
| 
								 | 
							
								        $this->request_update_url = 'http://update.bogus/';
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_construct()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($this->msg->update_url === null);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array(), $this->msg->data);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_empty()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $expected_args = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'fetch_response',
							 | 
						||
| 
								 | 
							
								                               );
							 | 
						||
| 
								 | 
							
								        $req = null;
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected_args, $this->msg->getExtensionArgs($req));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_empty_request()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $expected_args = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'fetch_response',
							 | 
						||
| 
								 | 
							
								                               );
							 | 
						||
| 
								 | 
							
								        $req = new Auth_OpenID_AX_FetchRequest();
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected_args, $this->msg->getExtensionArgs($req));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_empty_request_some()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $uri = 'http://not.found/';
							 | 
						||
| 
								 | 
							
								        $alias = 'ext0';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $expected_args = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'fetch_response',
							 | 
						||
| 
								 | 
							
								            'type.' . $alias => $uri,
							 | 
						||
| 
								 | 
							
								            'count.' . $alias => '0'
							 | 
						||
| 
								 | 
							
								                               );
							 | 
						||
| 
								 | 
							
								        $req = new Auth_OpenID_AX_FetchRequest();
							 | 
						||
| 
								 | 
							
								        $req->add(Auth_OpenID_AX_AttrInfo::make('http://not.found/'));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected_args, $this->msg->getExtensionArgs($req));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_updateUrlInResponse()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $uri = 'http://not.found/';
							 | 
						||
| 
								 | 
							
								        $alias = 'ext0';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $expected_args = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'fetch_response',
							 | 
						||
| 
								 | 
							
								            'update_url' => $this->request_update_url,
							 | 
						||
| 
								 | 
							
								            'type.' . $alias => $uri,
							 | 
						||
| 
								 | 
							
								            'count.' . $alias => '0'
							 | 
						||
| 
								 | 
							
								                               );
							 | 
						||
| 
								 | 
							
								        $req = new Auth_OpenID_AX_FetchRequest($this->request_update_url);
							 | 
						||
| 
								 | 
							
								        $req->add(Auth_OpenID_AX_AttrInfo::make($uri));
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected_args, $this->msg->getExtensionArgs($req));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_some_request()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $expected_args = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'fetch_response',
							 | 
						||
| 
								 | 
							
								            'type.' . $this->alias_a => $this->type_a,
							 | 
						||
| 
								 | 
							
								            'value.' . $this->alias_a . '.1' => $this->value_a,
							 | 
						||
| 
								 | 
							
								            'count.' . $this->alias_a => '1'
							 | 
						||
| 
								 | 
							
								                               );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $req = new Auth_OpenID_AX_FetchRequest();
							 | 
						||
| 
								 | 
							
								        $req->add(Auth_OpenID_AX_AttrInfo::make($this->type_a, 1, false, $this->alias_a));
							 | 
						||
| 
								 | 
							
								        $this->msg->addValue($this->type_a, $this->value_a);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $result = $this->msg->getExtensionArgs($req);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected_args, $result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_some_not_request()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $req = new Auth_OpenID_AX_FetchRequest();
							 | 
						||
| 
								 | 
							
								        $this->msg->addValue($this->type_a, $this->value_a);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError($this->msg->getExtensionArgs($req)));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getSingle_success()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $req = new Auth_OpenID_AX_FetchRequest();
							 | 
						||
| 
								 | 
							
								        $this->msg->addValue($this->type_a, $this->value_a);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($this->value_a, $this->msg->getSingle($this->type_a));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getSingle_none()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(null, $this->msg->getSingle($this->type_a));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getSingle_extra()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $data = array('x', 'y');
							 | 
						||
| 
								 | 
							
								        $this->msg->setValues($this->type_a, $data);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(Auth_OpenID_AX::isError($this->msg->getSingle($this->type_a)));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_get()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      $this->assertTrue(Auth_OpenID_AX::isError($this->msg->get($this->type_a)));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_fromSuccessResponseWithoutExtension()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $args = array(
							 | 
						||
| 
								 | 
							
								                      'mode' => 'id_res',
							 | 
						||
| 
								 | 
							
								                      'ns' => Auth_OpenID_OPENID2_NS
							 | 
						||
| 
								 | 
							
								                     );
							 | 
						||
| 
								 | 
							
								        $sf = array();
							 | 
						||
| 
								 | 
							
								        foreach (array_keys($args) as $k) {
							 | 
						||
| 
								 | 
							
								            array_push($sf, $k);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $msg = Auth_OpenID_Message::fromOpenIDArgs($args);
							 | 
						||
| 
								 | 
							
								        $e = new FauxEndpoint();
							 | 
						||
| 
								 | 
							
								        $resp = new Auth_OpenID_SuccessResponse($e, $msg, $sf);
							 | 
						||
| 
								 | 
							
								        $ax_resp = Auth_OpenID_AX_FetchResponse::fromSuccessResponse($resp);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($ax_resp === null);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_fromSuccessResponseWithoutData()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $args = array(
							 | 
						||
| 
								 | 
							
								                      'mode' => 'id_res',
							 | 
						||
| 
								 | 
							
								                      'ns' => Auth_OpenID_OPENID2_NS,
							 | 
						||
| 
								 | 
							
								                      'ns.ax' => Auth_OpenID_AX_NS_URI,
							 | 
						||
| 
								 | 
							
								                      'ax.mode' => 'fetch_response',
							 | 
						||
| 
								 | 
							
								                     );
							 | 
						||
| 
								 | 
							
								        $sf = array();
							 | 
						||
| 
								 | 
							
								        foreach (array_keys($args) as $k) {
							 | 
						||
| 
								 | 
							
								            array_push($sf, $k);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $msg = Auth_OpenID_Message::fromOpenIDArgs($args);
							 | 
						||
| 
								 | 
							
								        $e = new FauxEndpoint();
							 | 
						||
| 
								 | 
							
								        $resp = new Auth_OpenID_SuccessResponse($e, $msg, $sf);
							 | 
						||
| 
								 | 
							
								        $ax_resp = Auth_OpenID_AX_FetchResponse::fromSuccessResponse($resp);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($ax_resp === null);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_fromSuccessResponse()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $name = "ziggy";
							 | 
						||
| 
								 | 
							
								        $value = "stardust";
							 | 
						||
| 
								 | 
							
								        $uri = "http://david.bowie.name/";
							 | 
						||
| 
								 | 
							
								        $args = array(
							 | 
						||
| 
								 | 
							
								                      'mode' => 'id_res',
							 | 
						||
| 
								 | 
							
								                      'ns' => Auth_OpenID_OPENID2_NS,
							 | 
						||
| 
								 | 
							
								                      'ns.ax' => Auth_OpenID_AX_NS_URI,
							 | 
						||
| 
								 | 
							
								                      'ax.mode' => 'fetch_response',
							 | 
						||
| 
								 | 
							
								                      'ax.update_url' => 'http://example.com/realm/update_path',
							 | 
						||
| 
								 | 
							
								                      'ax.type.'.$name => $uri,
							 | 
						||
| 
								 | 
							
								                      'ax.count.'.$name => '1',
							 | 
						||
| 
								 | 
							
								                      'ax.value.'.$name.'.1' => $value,
							 | 
						||
| 
								 | 
							
								                     );
							 | 
						||
| 
								 | 
							
								        $sf = array();
							 | 
						||
| 
								 | 
							
								        foreach (array_keys($args) as $k) {
							 | 
						||
| 
								 | 
							
								            array_push($sf, $k);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $msg = Auth_OpenID_Message::fromOpenIDArgs($args);
							 | 
						||
| 
								 | 
							
								        $e = new FauxEndpoint();
							 | 
						||
| 
								 | 
							
								        $resp = new Auth_OpenID_SuccessResponse($e, $msg, $sf);
							 | 
						||
| 
								 | 
							
								        $ax_resp = Auth_OpenID_AX_FetchResponse::fromSuccessResponse($resp, false);
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($ax_resp === null);
							 | 
						||
| 
								 | 
							
								        $this->assertTrue(is_a($ax_resp, 'Auth_OpenID_AX_FetchResponse'));
							 | 
						||
| 
								 | 
							
								        $values = $ax_resp->get($uri);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array($value), $values);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class StoreRequestTest extends PHPUnit_Framework_TestCase {
							 | 
						||
| 
								 | 
							
								    function setUp()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->msg = new Auth_OpenID_AX_StoreRequest();
							 | 
						||
| 
								 | 
							
								        $this->type_a = 'http://three.count/';
							 | 
						||
| 
								 | 
							
								        $this->alias_a = 'juggling';
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_construct()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array(), $this->msg->data);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_empty()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $args = $this->msg->getExtensionArgs();
							 | 
						||
| 
								 | 
							
								        $expected_args = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'store_request',
							 | 
						||
| 
								 | 
							
								                               );
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected_args, $args);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_getExtensionArgs_nonempty()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $data = array('foo', 'bar');
							 | 
						||
| 
								 | 
							
								        $this->msg->setValues($this->type_a, $data);
							 | 
						||
| 
								 | 
							
								        $aliases = new Auth_OpenID_NamespaceMap();
							 | 
						||
| 
								 | 
							
								        $aliases->addAlias($this->type_a, $this->alias_a);
							 | 
						||
| 
								 | 
							
								        $args = $this->msg->getExtensionArgs($aliases);
							 | 
						||
| 
								 | 
							
								        $expected_args = array(
							 | 
						||
| 
								 | 
							
								            'mode' => 'store_request',
							 | 
						||
| 
								 | 
							
								            'type.' . $this->alias_a => $this->type_a,
							 | 
						||
| 
								 | 
							
								            'count.' . $this->alias_a => '2',
							 | 
						||
| 
								 | 
							
								            sprintf('value.%s.1', $this->alias_a) => 'foo',
							 | 
						||
| 
								 | 
							
								            sprintf('value.%s.2', $this->alias_a) => 'bar',
							 | 
						||
| 
								 | 
							
								                               );
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected_args, $args);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class StoreResponseTest extends PHPUnit_Framework_TestCase {
							 | 
						||
| 
								 | 
							
								    function test_success()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $msg = new Auth_OpenID_AX_StoreResponse();
							 | 
						||
| 
								 | 
							
								        $this->assertTrue($msg->succeeded());
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($msg->error_message);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array('mode' => 'store_response_success'),
							 | 
						||
| 
								 | 
							
								                            $msg->getExtensionArgs());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_fail_nomsg()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $msg = new Auth_OpenID_AX_StoreResponse(false);
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($msg->succeeded());
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($msg->error_message);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array('mode' => 'store_response_failure'),
							 | 
						||
| 
								 | 
							
								                            $msg->getExtensionArgs());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function test_fail_msg()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $reason = 'no reason, really';
							 | 
						||
| 
								 | 
							
								        $msg = new Auth_OpenID_AX_StoreResponse(false, $reason);
							 | 
						||
| 
								 | 
							
								        $this->assertFalse($msg->succeeded());
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($reason, $msg->error_message);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals(array('mode' => 'store_response_failure',
							 | 
						||
| 
								 | 
							
								                                  'error' => $reason), $msg->getExtensionArgs());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Tests_Auth_OpenID_AX extends PHPUnit_Framework_TestSuite {
							 | 
						||
| 
								 | 
							
								    function getName()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return "Tests_Auth_OpenID_AX";
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function Tests_Auth_OpenID_AX()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->addTestSuite('StoreResponseTest');
							 | 
						||
| 
								 | 
							
								        $this->addTestSuite('StoreRequestTest');
							 | 
						||
| 
								 | 
							
								        $this->addTestSuite('FetchResponseTest');
							 | 
						||
| 
								 | 
							
								        $this->addTestSuite('FetchRequestTest');
							 | 
						||
| 
								 | 
							
								        $this->addTestSuite('ParseAXValuesTest');
							 | 
						||
| 
								 | 
							
								        $this->addTestSuite('ToTypeURIsTest');
							 | 
						||
| 
								 | 
							
								        $this->addTestSuite('AttrInfoTest');
							 | 
						||
| 
								 | 
							
								        $this->addTestSuite('AXMessageTest');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |