diff --git a/lam/docs/manual-sources/chapter-modules.xml b/lam/docs/manual-sources/chapter-modules.xml index f0265e89..e80b4cce 100644 --- a/lam/docs/manual-sources/chapter-modules.xml +++ b/lam/docs/manual-sources/chapter-modules.xml @@ -5127,6 +5127,71 @@ OK (10 msec) + Constant value + + This will set the attribute to a constant value. You can also + specify wild cards to inject other attribute's values: + + Wildcards + + + + %attribute%: attribute value + + + + @attribute@: first character of attribute + + + + ?attribute?: first character of attribute in lower case + + + + !attribute!: first character of attribute in upper case + + + + ??attribute??: attribute in lower case + + + + !!attribute!!: attribute in upper case + + + + (attribute): space if attribute is set + + + + §attribute|;§; attribute values separted by ";" (you can set + other separators if you want) + + + + Examples for attributes gn="Steve", sn="Miller" and + memberUid=("user1", "user2") (specified value -> resulting LDAP + value): + + + + "my constant" -> "my constant" + + + + "%gn%" -> "Steve" + + + + "%gn%(gn)%sn%" -> "Steve Miller" (would be "Miller" if gn is + empty) + + + + "§memberUid|, §" -> "user1, user2" + + + Validation expressions: diff --git a/lam/tests/lib/modules/customFieldsTest.php b/lam/tests/lib/modules/customFieldsTest.php new file mode 100644 index 00000000..e02cc326 --- /dev/null +++ b/lam/tests/lib/modules/customFieldsTest.php @@ -0,0 +1,243 @@ + array('111')); + $attributesNotSet = array('uid' => array('')); + $attributesNotSet2 = array(); + + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMiddle)); + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMiddle)); + $this->assertEquals('123 456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMiddle)); + + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalStart)); + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalStart)); + $this->assertEquals(' 456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalStart)); + + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalEnd)); + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalEnd)); + $this->assertEquals('123 ', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalEnd)); + + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMultiple)); + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMultiple)); + $this->assertEquals('123 456 789', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMultiple)); + } + + public function testReplaceWildcardsAttribute() { + $originalMiddle = '123%uid%456'; + $originalStart = '%Uid%456'; + $originalEnd = '123%uid%'; + $originalMultiple = '123%uid%456%uid%789'; + $attributesSet = array('uid' => array('111')); + $attributesNotSet = array('uid' => array('')); + $attributesNotSet2 = array(); + + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMiddle)); + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMiddle)); + $this->assertEquals('123111456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMiddle)); + + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalStart)); + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalStart)); + $this->assertEquals('111456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalStart)); + + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalEnd)); + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalEnd)); + $this->assertEquals('123111', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalEnd)); + + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMultiple)); + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMultiple)); + $this->assertEquals('123111456111789', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMultiple)); + } + + public function testReplaceWildcardsAttributeFirst() { + $originalMiddle = '123@uid@456'; + $originalStart = '@Uid@456'; + $originalEnd = '123@uid@'; + $originalMultiple = '123@uid@456@uid@789'; + $attributesSet = array('uid' => array('aBc')); + $attributesNotSet = array('uid' => array('')); + $attributesNotSet2 = array(); + + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMiddle)); + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMiddle)); + $this->assertEquals('123a456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMiddle)); + + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalStart)); + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalStart)); + $this->assertEquals('a456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalStart)); + + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalEnd)); + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalEnd)); + $this->assertEquals('123a', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalEnd)); + + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMultiple)); + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMultiple)); + $this->assertEquals('123a456a789', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMultiple)); + } + + public function testReplaceWildcardsAttributeFirstLower() { + $originalMiddle = '123?uid?456'; + $originalStart = '?Uid?456'; + $originalEnd = '123?uid?'; + $originalMultiple = '123?uid?456?uid?789'; + $attributesSet = array('uid' => array('Abc')); + $attributesNotSet = array('uid' => array('')); + $attributesNotSet2 = array(); + + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMiddle)); + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMiddle)); + $this->assertEquals('123a456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMiddle)); + + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalStart)); + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalStart)); + $this->assertEquals('a456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalStart)); + + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalEnd)); + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalEnd)); + $this->assertEquals('123a', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalEnd)); + + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMultiple)); + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMultiple)); + $this->assertEquals('123a456a789', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMultiple)); + } + + public function testReplaceWildcardsAttributeFirstUpper() { + $originalMiddle = '123!uid!456'; + $originalStart = '!Uid!456'; + $originalEnd = '123!uid!'; + $originalMultiple = '123!uid!456!uid!789'; + $attributesSet = array('uid' => array('abc')); + $attributesNotSet = array('uid' => array('')); + $attributesNotSet2 = array(); + + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMiddle)); + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMiddle)); + $this->assertEquals('123A456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMiddle)); + + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalStart)); + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalStart)); + $this->assertEquals('A456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalStart)); + + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalEnd)); + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalEnd)); + $this->assertEquals('123A', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalEnd)); + + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMultiple)); + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMultiple)); + $this->assertEquals('123A456A789', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMultiple)); + } + + public function testReplaceWildcardsAttributeLower() { + $originalMiddle = '123??uid??456'; + $originalStart = '??Uid??456'; + $originalEnd = '123??uid??'; + $originalMultiple = '123??uid??456??uid??789'; + $attributesSet = array('uid' => array('Abc')); + $attributesNotSet = array('uid' => array('')); + $attributesNotSet2 = array(); + + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMiddle)); + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMiddle)); + $this->assertEquals('123abc456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMiddle)); + + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalStart)); + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalStart)); + $this->assertEquals('abc456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalStart)); + + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalEnd)); + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalEnd)); + $this->assertEquals('123abc', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalEnd)); + + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMultiple)); + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMultiple)); + $this->assertEquals('123abc456abc789', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMultiple)); + } + + public function testReplaceWildcardsAttributeUpper() { + $originalMiddle = '123!!uid!!456'; + $originalStart = '!!Uid!!456'; + $originalEnd = '123!!uid!!'; + $originalMultiple = '123!!uid!!456!!uid!!789'; + $attributesSet = array('uid' => array('abc')); + $attributesNotSet = array('uid' => array('')); + $attributesNotSet2 = array(); + + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMiddle)); + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMiddle)); + $this->assertEquals('123ABC456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMiddle)); + + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalStart)); + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalStart)); + $this->assertEquals('ABC456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalStart)); + + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalEnd)); + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalEnd)); + $this->assertEquals('123ABC', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalEnd)); + + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMultiple)); + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMultiple)); + $this->assertEquals('123ABC456ABC789', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMultiple)); + } + + public function testReplaceWildcardsAttributeMulti() { + $originalMiddle = '123§memberUid|, §456'; + $originalStart = '§MemberUid|, §456'; + $originalEnd = '123§memberUid|, §'; + $originalMultiple = '123§memberUid|, §456§memberUid|;§789'; + $attributesSet = array('memberUid' => array('abc', 'cde')); + $attributesNotSet = array('memberUid' => array('')); + $attributesNotSet2 = array(); + + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMiddle)); + $this->assertEquals('123456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMiddle)); + $this->assertEquals('123abc, cde456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMiddle)); + + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalStart)); + $this->assertEquals('456', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalStart)); + $this->assertEquals('abc, cde456', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalStart)); + + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalEnd)); + $this->assertEquals('123', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalEnd)); + $this->assertEquals('123abc, cde', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalEnd)); + + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet, $originalMultiple)); + $this->assertEquals('123456789', customFieldsConstantEntry::replaceWildcards($attributesNotSet2, $originalMultiple)); + $this->assertEquals('123abc, cde456abc;cde789', customFieldsConstantEntry::replaceWildcards($attributesSet, $originalMultiple)); + } + + public function testReplaceWildcardsMixed() { + $attributes = array( + 'uid' => array('myuser'), + 'street' => array('some street'), + 'memberUid' => array('abc', 'cde') + ); + + $this->assertEquals('myuser SOME STREET S abc- cde', customFieldsConstantEntry::replaceWildcards($attributes, '%uid% !!street!! !street! §memberuid|- §')); + } + + } + +} + +?> \ No newline at end of file