1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
<?php
use PHPUnit\Framework\TestCase;
/**
* Test for the core:ScopeFromAttribute filter.
*/
class Test_Core_Auth_Process_ScopeFromAttribute extends TestCase
{
/*
* Helper function to run the filter with a given configuration.
*
* @param array $config The filter configuration.
* @param array $request The request state.
* @return array The state array after processing.
*/
private static function processFilter(array $config, array $request)
{
$filter = new sspmod_core_Auth_Process_ScopeFromAttribute($config, NULL);
$filter->process($request);
return $request;
}
/*
* Test the most basic functionality.
*/
public function testBasic()
{
$config = array(
'sourceAttribute' => 'eduPersonPrincipalName',
'targetAttribute' => 'scope',
);
$request = array(
'Attributes' => array(
'eduPersonPrincipalName' => array('jdoe@example.com'),
)
);
$result = self::processFilter($config, $request);
$attributes = $result['Attributes'];
$this->assertArrayHasKey('scope', $attributes);
$this->assertEquals($attributes['scope'], array('example.com'));
}
/*
* If scope already set, module must not overwrite.
*/
public function testNoOverwrite()
{
$config = array(
'sourceAttribute' => 'eduPersonPrincipalName',
'targetAttribute' => 'scope',
);
$request = array(
'Attributes' => array(
'eduPersonPrincipalName' => array('jdoe@example.com'),
'scope' => array('example.edu')
)
);
$result = self::processFilter($config, $request);
$attributes = $result['Attributes'];
$this->assertEquals($attributes['scope'], array('example.edu'));
}
/*
* If source attribute not set, nothing happens
*/
public function testNoSourceAttribute()
{
$config = array(
'sourceAttribute' => 'eduPersonPrincipalName',
'targetAttribute' => 'scope',
);
$request = array(
'Attributes' => array(
'mail' => array('j.doe@example.edu', 'john@example.org'),
'scope' => array('example.edu')
)
);
$result = self::processFilter($config, $request);
$this->assertEquals($request['Attributes'], $result['Attributes']);
}
/*
* When multiple @ signs in attribute, should use last one.
*/
public function testMultiAt()
{
$config = array(
'sourceAttribute' => 'eduPersonPrincipalName',
'targetAttribute' => 'scope',
);
$request = array(
'Attributes' => array(
'eduPersonPrincipalName' => array('john@doe@example.com'),
)
);
$result = self::processFilter($config, $request);
$attributes = $result['Attributes'];
$this->assertEquals($attributes['scope'], array('example.com'));
}
/*
* When the source attribute doesn't have a scope, a warning is emitted
*/
public function testNoAt()
{
$config = array(
'sourceAttribute' => 'eduPersonPrincipalName',
'targetAttribute' => 'scope',
);
$request = array(
'Attributes' => array(
'eduPersonPrincipalName' => array('johndoe'),
)
);
$result = self::processFilter($config, $request);
$attributes = $result['Attributes'];
$this->assertArrayNotHasKey('scope', $attributes);
}
}
|