aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/tests/ConfigurationTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_ldap/tests/ConfigurationTest.php')
-rw-r--r--apps/user_ldap/tests/ConfigurationTest.php118
1 files changed, 118 insertions, 0 deletions
diff --git a/apps/user_ldap/tests/ConfigurationTest.php b/apps/user_ldap/tests/ConfigurationTest.php
new file mode 100644
index 00000000000..db92598fcfd
--- /dev/null
+++ b/apps/user_ldap/tests/ConfigurationTest.php
@@ -0,0 +1,118 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OCA\User_LDAP\Tests;
+
+use OCA\User_LDAP\Configuration;
+
+class ConfigurationTest extends \Test\TestCase {
+ protected Configuration $configuration;
+
+ protected function setUp(): void {
+ parent::setUp();
+ $this->configuration = new Configuration('t01', false);
+ }
+
+ public static function configurationDataProvider(): array {
+ $inputWithDN = [
+ 'cn=someUsers,dc=example,dc=org',
+ ' ',
+ ' cn=moreUsers,dc=example,dc=org '
+ ];
+ $expectWithDN = [
+ 'cn=someUsers,dc=example,dc=org',
+ 'cn=moreUsers,dc=example,dc=org'
+ ];
+
+ $inputNames = [
+ ' uid ',
+ 'cn ',
+ ' ',
+ '',
+ ' whats my name',
+ ' '
+ ];
+ $expectedNames = ['uid', 'cn', 'whats my name'];
+
+ $inputString = ' alea iacta est ';
+ $expectedString = 'alea iacta est';
+
+ $inputHomeFolder = [
+ ' homeDirectory ',
+ ' attr:homeDirectory ',
+ ' '
+ ];
+
+ $expectedHomeFolder = [
+ 'attr:homeDirectory', 'attr:homeDirectory', ''
+ ];
+
+ $password = ' such a passw0rd ';
+
+ return [
+ 'set general base' => ['ldapBase', $inputWithDN, $expectWithDN],
+ 'set user base' => ['ldapBaseUsers', $inputWithDN, $expectWithDN],
+ 'set group base' => ['ldapBaseGroups', $inputWithDN, $expectWithDN],
+
+ 'set search attributes users' => ['ldapAttributesForUserSearch', $inputNames, $expectedNames],
+ 'set search attributes groups' => ['ldapAttributesForGroupSearch', $inputNames, $expectedNames],
+
+ 'set user filter objectclasses' => ['ldapUserFilterObjectclass', $inputNames, $expectedNames],
+ 'set user filter groups' => ['ldapUserFilterGroups', $inputNames, $expectedNames],
+ 'set group filter objectclasses' => ['ldapGroupFilterObjectclass', $inputNames, $expectedNames],
+ 'set group filter groups' => ['ldapGroupFilterGroups', $inputNames, $expectedNames],
+ 'set login filter attributes' => ['ldapLoginFilterAttributes', $inputNames, $expectedNames],
+
+ 'set agent password' => ['ldapAgentPassword', $password, $password],
+
+ 'set home folder, variant 1' => ['homeFolderNamingRule', $inputHomeFolder[0], $expectedHomeFolder[0]],
+ 'set home folder, variant 2' => ['homeFolderNamingRule', $inputHomeFolder[1], $expectedHomeFolder[1]],
+ 'set home folder, empty' => ['homeFolderNamingRule', $inputHomeFolder[2], $expectedHomeFolder[2]],
+
+ // default behaviour, one case is enough, special needs must be tested
+ // individually
+ 'set string value' => ['ldapHost', $inputString, $expectedString],
+
+ 'set avatar rule, default' => ['ldapUserAvatarRule', 'default', 'default'],
+ 'set avatar rule, none' => ['ldapUserAvatarRule', 'none', 'none'],
+ 'set avatar rule, data attribute' => ['ldapUserAvatarRule', 'data:jpegPhoto', 'data:jpegPhoto'],
+
+ 'set external storage home attribute' => ['ldapExtStorageHomeAttribute', 'homePath', 'homePath'],
+ ];
+ }
+
+ #[\PHPUnit\Framework\Attributes\DataProvider('configurationDataProvider')]
+ public function testSetValue(string $key, string|array $input, string|array $expected): void {
+ $this->configuration->setConfiguration([$key => $input]);
+ $this->assertSame($this->configuration->$key, $expected);
+ }
+
+ public static function avatarRuleValueProvider(): array {
+ return [
+ ['none', []],
+ ['data:selfie', ['selfie']],
+ ['data:sELFie', ['selfie']],
+ ['data:', ['jpegphoto', 'thumbnailphoto']],
+ ['default', ['jpegphoto', 'thumbnailphoto']],
+ ['invalid#', ['jpegphoto', 'thumbnailphoto']],
+ ];
+ }
+
+ #[\PHPUnit\Framework\Attributes\DataProvider('avatarRuleValueProvider')]
+ public function testGetAvatarAttributes(string $setting, array $expected): void {
+ $this->configuration->setConfiguration(['ldapUserAvatarRule' => $setting]);
+ $this->assertSame($expected, $this->configuration->getAvatarAttributes());
+ }
+
+ #[\PHPUnit\Framework\Attributes\DataProvider('avatarRuleValueProvider')]
+ public function testResolveRule(string $setting, array $expected): void {
+ $this->configuration->setConfiguration(['ldapUserAvatarRule' => $setting]);
+ // so far the only thing that can get resolved :)
+ $this->assertSame($expected, $this->configuration->resolveRule('avatar'));
+ }
+}