Passed
Push — master ( 3c190c...2857c2 )
by Robbie
03:26
created

LDAPServiceTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 80
rs 10
c 0
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testUpdateMemberFromLDAP() 0 22 1
B setUp() 0 27 1
A testGroups() 0 16 1
1
<?php
2
3
namespace SilverStripe\LDAP\Tests\Services;
4
5
use SilverStripe\LDAP\Extensions\LDAPGroupExtension;
6
use SilverStripe\LDAP\Extensions\LDAPMemberExtension;
7
use SilverStripe\LDAP\Model\LDAPGateway;
8
use SilverStripe\LDAP\Services\LDAPService;
9
use SilverStripe\LDAP\Tests\FakeGatewayTest;
10
use SilverStripe\Core\Config\Config;
11
use SilverStripe\Security\Group;
12
use SilverStripe\Security\Member;
13
14
class LDAPServiceTest extends FakeGatewayTest
15
{
16
    /**
17
     * {@inheritDoc}
18
     * @var bool
19
     */
20
    protected $usesDatabase = true;
21
22
    /**
23
     * {@inheritDoc}
24
     */
25
    public function setUp()
26
    {
27
        parent::setUp();
28
29
        Config::modify()->set(LDAPGateway::class, 'options', ['host' => '1.2.3.4']);
30
        Config::modify()->set(LDAPService::class, 'groups_search_locations', [
31
            'CN=Users,DC=playpen,DC=local',
32
            'CN=Others,DC=playpen,DC=local'
33
        ]);
34
        // Prevent other module extension hooks from executing during write() etc.
35
        Config::modify()->remove(Member::class, 'extensions');
36
        Config::modify()->remove(Group::class, 'extensions');
37
        Config::modify()->set(Member::class, 'update_ldap_from_local', false);
38
        Config::modify()->set(Member::class, 'create_users_in_ldap', false);
39
        Config::modify()->set(
40
            Group::class,
41
            'extensions',
42
            [LDAPGroupExtension::class]
43
        );
44
        Config::modify()->set(
45
            Member::class,
46
            'extensions',
47
            [LDAPMemberExtension::class]
48
        );
49
50
        // Disable Monolog logging to stderr by default if you don't give it a handler
51
        $this->service->getLogger()->pushHandler(new \Monolog\Handler\NullHandler);
0 ignored issues
show
Bug introduced by
The method pushHandler() does not exist on Psr\Log\LoggerInterface. It seems like you code against a sub-type of Psr\Log\LoggerInterface such as Monolog\Logger. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

51
        $this->service->getLogger()->/** @scrutinizer ignore-call */ pushHandler(new \Monolog\Handler\NullHandler);
Loading history...
52
    }
53
54
    public function testGroups()
55
    {
56
        $expected = [
57
            'CN=Group1,CN=Users,DC=playpen,DC=local' => ['dn' => 'CN=Group1,CN=Users,DC=playpen,DC=local'],
58
            'CN=Group2,CN=Users,DC=playpen,DC=local' => ['dn' => 'CN=Group2,CN=Users,DC=playpen,DC=local'],
59
            'CN=Group3,CN=Users,DC=playpen,DC=local' => ['dn' => 'CN=Group3,CN=Users,DC=playpen,DC=local'],
60
            'CN=Group4,CN=Users,DC=playpen,DC=local' => ['dn' => 'CN=Group4,CN=Users,DC=playpen,DC=local'],
61
            'CN=Group5,CN=Users,DC=playpen,DC=local' => ['dn' => 'CN=Group5,CN=Users,DC=playpen,DC=local'],
62
            'CN=Group6,CN=Others,DC=playpen,DC=local' => ['dn' => 'CN=Group6,CN=Others,DC=playpen,DC=local'],
63
            'CN=Group7,CN=Others,DC=playpen,DC=local' => ['dn' => 'CN=Group7,CN=Others,DC=playpen,DC=local'],
64
            'CN=Group8,CN=Others,DC=playpen,DC=local' => ['dn' => 'CN=Group8,CN=Others,DC=playpen,DC=local']
65
        ];
66
67
        $results = $this->service->getGroups();
68
69
        $this->assertEquals($expected, $results);
70
    }
71
72
    public function testUpdateMemberFromLDAP()
73
    {
74
        Config::modify()->set(
75
            Member::class,
76
            'ldap_field_mappings',
77
            [
78
                'givenname' => 'FirstName',
79
                'sn' => 'Surname',
80
                'mail' => 'Email',
81
            ]
82
        );
83
84
        $member = new Member();
85
        $member->GUID = '123';
86
87
        $this->service->updateMemberFromLDAP($member);
88
89
        $this->assertTrue($member->ID > 0, 'updateMemberFromLDAP writes the member');
90
        $this->assertEquals('123', $member->GUID, 'GUID remains the same');
91
        $this->assertEquals('Joe', $member->FirstName, 'FirstName updated from LDAP');
92
        $this->assertEquals('Bloggs', $member->Surname, 'Surname updated from LDAP');
93
        $this->assertEquals('[email protected]', $member->Email, 'Email updated from LDAP');
94
    }
95
}
96