Passed
Pull Request — master (#37)
by
unknown
08:26
created

SAMLHelperTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 17
c 3
b 0
f 0
dl 0
loc 45
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testValidGuid() 0 5 1
A guidProvider() 0 9 1
A testLongNameIDFails() 0 7 1
A testBinToStrGuid() 0 4 1
1
<?php
2
3
namespace SilverStripe\SAML\Tests\Helpers;
4
5
use SilverStripe\Dev\SapphireTest;
6
use SilverStripe\SAML\Helpers\SAMLHelper;
7
use SilverStripe\Core\Config\Config;
8
use SilverStripe\SAML\Services\SAMLConfiguration;
9
10
class SAMLHelperTest extends SapphireTest
11
{
12
    /**
13
     * @dataProvider guidProvider
14
     * @param string $guid
15
     * @param bool   $expected
16
     */
17
    public function testValidGuid($guid, $expected)
18
    {
19
        Config::modify()->set(SAMLConfiguration::class, 'validate_nameid', true);
20
        $result = SAMLHelper::singleton()->validateNameID($guid, 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified');
21
        $this->assertSame($expected, $result);
22
    }
23
24
    /**
25
     * @return array[]
26
     */
27
    public function guidProvider()
28
    {
29
        return [
30
            ['A98C5A1E-A742-4808-96FA-6F409E799937', true],
31
            ['aBcDeF01-1111-1111-ffff-AbCdEf012345', true],
32
            ['A98C5A1E-1234-5678-9876-ABCDEFGHJIJK', false],
33
            ['A98C5A1E-1234-56!8-9876-A#CDEFGHJIJK', false],
34
            ['A98C5A1E-4808-96FA-6F409E799937', false],
35
            ['foobar', false],
36
        ];
37
    }
38
39
    /**
40
     * @testdox A long NameID that would exceed the max of a Member's GUID field should fail validation.
41
     */
42
    public function testLongNameIDFails()
43
    {
44
        $result = SAMLHelper::singleton()->validateNameID(
45
            'my-excessively-long-nameid-which-is-quite-ridiculous', // 52 chars
46
            'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified'
47
        );
48
        $this->assertFalse($result);
49
    }
50
51
    public function testBinToStrGuid()
52
    {
53
        $result = SAMLHelper::singleton()->binToStrGuid('thequ!ckbrownf0xjumpsov3rthel4zyd06');
54
        $this->assertSame('71656874-2175-6B63-6272-6F776E6630786A756D70736F7633727468656C347A79643036', $result);
55
    }
56
}
57