From 33ceceaa796f609f7a8f047982e1f558c9129471 Mon Sep 17 00:00:00 2001 From: Olav Morken <olav.morken@uninett.no> Date: Tue, 26 May 2015 13:24:14 +0200 Subject: [PATCH] Add test for core:AttributeAdd. --- tests/modules/core/AttributeAddTest.php | 138 ++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 tests/modules/core/AttributeAddTest.php diff --git a/tests/modules/core/AttributeAddTest.php b/tests/modules/core/AttributeAddTest.php new file mode 100644 index 000000000..20748fafe --- /dev/null +++ b/tests/modules/core/AttributeAddTest.php @@ -0,0 +1,138 @@ +<?php + +/** + * Test for the core:AttributeAdd filter. + */ +class Test_Core_Auth_Process_AttributeAdd extends PHPUnit_Framework_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_AttributeAdd($config, NULL); + $filter->process($request); + return $request; + } + + /* + * Test the most basic functionality. + */ + public function testBasic() + { + $config = array( + 'test' => array('value1', 'value2'), + ); + $request = array( + 'Attributes' => array(), + ); + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('test', $attributes); + $this->assertEquals($attributes['test'], array('value1', 'value2')); + } + + /* + * Test that existing attributes are left unmodified. + */ + public function testExistingNotModified() + { + $config = array( + 'test' => array('value1', 'value2'), + ); + $request = array( + 'Attributes' => array( + 'original1' => array('original_value1'), + 'original2' => array('original_value2'), + ), + ); + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('test', $attributes); + $this->assertEquals($attributes['test'], array('value1', 'value2')); + $this->assertArrayHasKey('original1', $attributes); + $this->assertEquals($attributes['original1'], array('original_value1')); + $this->assertArrayHasKey('original2', $attributes); + $this->assertEquals($attributes['original2'], array('original_value2')); + } + + /* + * Test single string as attribute value. + */ + public function testStringValue() + { + $config = array( + 'test' => 'value', + ); + $request = array( + 'Attributes' => array(), + ); + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('test', $attributes); + $this->assertEquals($attributes['test'], array('value')); + } + + /* + * Test the most basic functionality. + */ + public function testAddMultiple() + { + $config = array( + 'test1' => array('value1'), + 'test2' => array('value2'), + ); + $request = array( + 'Attributes' => array(), + ); + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('test1', $attributes); + $this->assertEquals($attributes['test1'], array('value1')); + $this->assertArrayHasKey('test2', $attributes); + $this->assertEquals($attributes['test2'], array('value2')); + } + + /* + * Test behavior when appending attribute values. + */ + public function testAppend() + { + $config = array( + 'test' => array('value2'), + ); + $request = array( + 'Attributes' => array( + 'test' => array('value1'), + ), + ); + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertEquals($attributes['test'], array('value1', 'value2')); + } + + /* + * Test replacing attribute values. + */ + public function testReplace() + { + $config = array( + '%replace', + 'test' => array('value2'), + ); + $request = array( + 'Attributes' => array( + 'test' => array('value1'), + ), + ); + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertEquals($attributes['test'], array('value2')); + } + +} -- GitLab