LdapUriTest.php
3.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
namespace Org_Heigl\AuthLdapTest;
use Generator;
use Org_Heigl\AuthLdap\Exception\InvalidLdapUri;
use Org_Heigl\AuthLdap\LdapUri;
use PHPUnit\Framework\Assert;
use PHPUnit\Framework\TestCase;
use function getenv;
use function putenv;
class LdapUriTest extends TestCase
{
public function toStringProvider(): Generator
{
yield ['ldaps://foo:bar@foo.bar/baz', 'ldaps://foo.bar:636', 'foo', 'bar', 'baz'];
yield ['env:LDAP_URI', 'ldaps://foo.bar:636', 'foo', 'bar', 'baz', [
'LDAP_URI' => 'ldaps://foo:bar@foo.bar/baz',
]];
yield ['ldaps://foo:%env:LDAP_PASSWORD%@foo.bar/baz', 'ldaps://foo.bar:636', 'foo', 'bar', 'baz', [
'LDAP_PASSWORD' => 'bar',
]];
yield ['ldaps://foo:%env:LDAP_PASSWORD%@foo.bar/baz', 'ldaps://foo.bar:636', 'foo', 'ba r', 'baz', [
'LDAP_PASSWORD' => 'ba r',
]];
}
public function fromStringProvider(): Generator
{
yield ['ldaps://foo:bar@foo.bar/baz', false];
yield ['env:LDAP_URI', false];
yield ['foo:MyLdapUri', true];
}
/**
* @dataProvider toStringProvider
*/
public function testToString(string $uri, string $result, $user, $password, $baseDn, array $env = []): void
{
foreach ($env as $key => $value) {
putenv("$key=$value");
}
$ldapUri = LdapUri::fromString($uri);
Assert::assertSame($result, $ldapUri->toString());
Assert::assertSame($user, $ldapUri->getUsername());
Assert::assertSame($password, $ldapUri->getPassword());
Assert::assertSame($baseDn, $ldapUri->getBaseDn());
}
/** @dataProvider fromStringProvider */
public function testFromString(string $uri, bool $failure = false): void
{
if ($failure) {
self::expectException(InvalidLdapUri::class);
}
$ldapUri = LdapUri::fromString($uri);
self::assertInstanceOf(LdapUri::class, $ldapUri);
}
public function testSettingLdapsWillSetCorrectPort(): void
{
$uri = LdapUri::fromString('ldaps://example.org/foo');
Assert::assertSame('ldaps://example.org:636', $uri->toString());
}
public function testSettingLdapWillSetCorrectPort(): void
{
$uri = LdapUri::fromString('ldap://example.org/foo');
Assert::assertSame('ldap://example.org:389', $uri->toString());
}
/**
* @dataProvider anonymousProvider
*/
public function testUriIsAnonymous(string $uri): void
{
$uri = LdapUri::fromString($uri);
Assert::assertTrue($uri->isAnonymous());
}
public function anonymousProvider(): Generator
{
yield ['ldaps://test.example.com/dc=com'];
yield ['ldaps://foo@test.example.com/dc=com'];
yield ['ldaps://%20:password@test.example.com/dc=com'];
yield ['ldaps://anonymous:password@test.example.com/dc=com'];
}
public function testMissingSchemaThrows(): void
{
$this->expectException(InvalidLdapUri::class);
LdapUri::fromString('ldaps.example.com');
}
public function testMWrongSchemaThrows(): void
{
$this->expectException(InvalidLdapUri::class);
LdapUri::fromString('environ://ldaps.example.com');
}
public function testMissingHostThrows(): void
{
$this->expectException(InvalidLdapUri::class);
LdapUri::fromString('ldaps:/foo=bar');
}
public function testgettingUriFromEnvironment(): void
{
putenv('URI=ldaps://example.com/foo');
$uri = LdapUri::fromString('env:URI');
Assert::assertSame('ldaps://example.com:636', (string) $uri);
Assert::assertSame('foo', $uri->getBaseDn());
}
public function testgettingUriFromEmptyEnvironment(): void
{
putenv('URI');
$this->expectException(InvalidLdapUri::class);
$uri = LdapUri::fromString('env:URI');
}
}