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