public function testValidScopes()
{
// test declared scopes
$config = array();
$request = array('Source' => array('SingleSignOnService' => array(array('Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://example.org/saml2/idp/SSOService.php')), 'scope' => array('example.com', 'example.net')), 'Attributes' => array('eduPersonPrincipalName' => array('[email protected]')));
$result = $this->processFilter($config, $request);
$this->assertEquals($request['Attributes'], $result['Attributes']);
// test multiple values
$request['Attributes'] = array('eduPersonPrincipalName' => array('[email protected]', '[email protected]'));
$result = $this->processFilter($config, $request);
$this->assertEquals($request['Attributes'], $result['Attributes']);
// test implicit scope
$request['Attributes'] = array('eduPersonPrincipalName' => array('[email protected]'));
$result = $this->processFilter($config, $request);
$this->assertEquals($request['Attributes'], $result['Attributes']);
// test alternative attributes
$config['attributes'] = array('mail');
$request['Attributes'] = array('mail' => array('[email protected]'));
$result = $this->processFilter($config, $request);
$this->assertEquals($request['Attributes'], $result['Attributes']);
// test non-scoped attributes
$request['Attributes']['givenName'] = 'John Doe';
$result = $this->processFilter($config, $request);
$this->assertEquals($request['Attributes'], $result['Attributes']);
}