summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlav Morken <olav.morken@uninett.no>2015-05-26 13:24:14 +0200
committerOlav Morken <olav.morken@uninett.no>2015-05-26 13:25:22 +0200
commit33ceceaa796f609f7a8f047982e1f558c9129471 (patch)
tree2d842784096d2fad03e33b694179770370f17df7
parentb8e0e07ccf880321d64d7555e895bbb310a830bf (diff)
downloadsimplesamlphp-33ceceaa796f609f7a8f047982e1f558c9129471.zip
simplesamlphp-33ceceaa796f609f7a8f047982e1f558c9129471.tar.gz
simplesamlphp-33ceceaa796f609f7a8f047982e1f558c9129471.tar.bz2
Add test for core:AttributeAdd.
-rw-r--r--tests/modules/core/AttributeAddTest.php138
1 files changed, 138 insertions, 0 deletions
diff --git a/tests/modules/core/AttributeAddTest.php b/tests/modules/core/AttributeAddTest.php
new file mode 100644
index 0000000..20748fa
--- /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'));
+ }
+
+}