From 4e67137fbbb5786c1c3b2863b84168311b85cf10 Mon Sep 17 00:00:00 2001 From: Matt Schwager <schwag09@gmail.com> Date: Tue, 5 Dec 2017 21:47:41 -0500 Subject: [PATCH] Added tests for sspmod_core_Auth_Process_AttributeMap --- .../lib/Auth/Process/AttributeMapTest.php | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 tests/modules/core/lib/Auth/Process/AttributeMapTest.php diff --git a/tests/modules/core/lib/Auth/Process/AttributeMapTest.php b/tests/modules/core/lib/Auth/Process/AttributeMapTest.php new file mode 100644 index 000000000..719ad54cf --- /dev/null +++ b/tests/modules/core/lib/Auth/Process/AttributeMapTest.php @@ -0,0 +1,155 @@ +<?php + +use PHPUnit\Framework\TestCase; + +/** + * Test for the core:AttributeMap filter. + */ +class Test_Core_Auth_Process_AttributeMap 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_AttributeMap($config, null); + $filter->process($request); + return $request; + } + + + public function testBasic() + { + $config = [ + 'attribute1' => 'attribute2', + ]; + $request = [ + 'Attributes' => [ + 'attribute1' => ['value'], + ], + ]; + + $processed = self::processFilter($config, $request); + $result = $processed['Attributes']; + $expected = [ + 'attribute2' => ['value'], + ]; + + $this->assertEquals($expected, $result); + } + + public function testDuplicate() + { + $config = [ + 'attribute1' => 'attribute2', + '%duplicate', + ]; + $request = [ + 'Attributes' => [ + 'attribute1' => ['value'], + ], + ]; + + $processed = self::processFilter($config, $request); + $result = $processed['Attributes']; + $expected = [ + 'attribute1' => ['value'], + 'attribute2' => ['value'], + ]; + + $this->assertEquals($expected, $result); + } + + public function testMultiple() + { + $config = [ + 'attribute1' => ['attribute2', 'attribute3'], + ]; + $request = [ + 'Attributes' => [ + 'attribute1' => ['value'], + ], + ]; + + $processed = self::processFilter($config, $request); + $result = $processed['Attributes']; + $expected = [ + 'attribute2' => ['value'], + 'attribute3' => ['value'], + ]; + + $this->assertEquals($expected, $result); + } + + public function testMultipleDuplicate() + { + $config = [ + 'attribute1' => ['attribute2', 'attribute3'], + '%duplicate', + ]; + $request = [ + 'Attributes' => [ + 'attribute1' => ['value'], + ], + ]; + + $processed = self::processFilter($config, $request); + $result = $processed['Attributes']; + $expected = [ + 'attribute1' => ['value'], + 'attribute2' => ['value'], + 'attribute3' => ['value'], + ]; + + $this->assertEquals($expected, $result); + } + + public function testInvalidOriginalAttributeType() + { + $config = [ + 10 => 'attribute2', + ]; + $request = [ + 'Attributes' => [ + 'attribute1' => ['value'], + ], + ]; + + $this->setExpectedException('\Exception'); + self::processFilter($config, $request); + } + + public function testInvalidMappedAttributeType() + { + $config = [ + 'attribute1' => 10, + ]; + $request = [ + 'Attributes' => [ + 'attribute1' => ['value'], + ], + ]; + + $this->setExpectedException('\Exception'); + self::processFilter($config, $request); + } + + public function testMissingMapFile() + { + $config = [ + 'non_existant_mapfile', + ]; + $request = [ + 'Attributes' => [ + 'attribute1' => ['value'], + ], + ]; + + $this->setExpectedException('\Exception'); + self::processFilter($config, $request); + } +} -- GitLab