Passed
Push — master ( a10e59...b3c3af )
by Torben
01:55
created

SettingsServiceTest::setup()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
namespace Derhansen\FeChangePwd\Tests\Unit\Service;
3
4
/*
5
 * This file is part of the Extension "fe_change_pwd" for TYPO3 CMS.
6
 *
7
 * For the full copyright and license information, please read the
8
 * LICENSE.txt file that was distributed with this source code.
9
 */
10
11
use Derhansen\FeChangePwd\Service\SettingsService;
12
use Nimut\TestingFramework\TestCase\UnitTestCase;
13
use TYPO3\CMS\Extbase\Configuration\ConfigurationManager;
14
15
/**
16
 * Class SettingsServiceTest
17
 */
18
class SettingsServiceTest extends UnitTestCase
19
{
20
    /**
21
     * @var SettingsService
22
     */
23
    protected $subject;
24
25
    /**
26
     * Setup
27
     *
28
     * @return void
29
     */
30
    public function setup()
31
    {
32
        parent::setUp();
33
        $this->subject = new SettingsService();
34
    }
35
36
    /**
37
     * @return array
38
     */
39
    public function getPasswordExpiryTimestampReturnsExpectedResultDataProvider()
40
    {
41
        return [
42
            'no settings' => [
43
                [],
44
                new \DateTime(),
45
                0
46
            ],
47
            'passwordExpiration disabled' => [
48
                [
49
                    'passwordExpiration' => [
50
                        'enabled' => 0
51
                    ]
52
                ],
53
                new \DateTime(),
54
                0
55
            ],
56
            'default validityInDays of 90 days if not set' => [
57
                [
58
                    'passwordExpiration' => [
59
                        'enabled' => 1
60
                    ]
61
                ],
62
                \DateTime::createFromFormat('d.m.Y H:i:s e', '01.01.2018 00:00:00 UTC'),
63
                1522540800
64
            ],
65
            'sets configured validityInDays' => [
66
                [
67
                    'passwordExpiration' => [
68
                        'enabled' => 1,
69
                        'validityInDays' => 30
70
                    ]
71
                ],
72
                \DateTime::createFromFormat('d.m.Y H:i:s e', '01.01.2018 00:00:00 UTC'),
73
                1517356800
74
            ]
75
        ];
76
    }
77
78
    /**
79
     * @test
80
     * @dataProvider getPasswordExpiryTimestampReturnsExpectedResultDataProvider
81
     */
82
    public function getPasswordExpiryTimestampReturnsExpectedResult($settings, $currentDate, $expected)
83
    {
84
        $mockConfigurationManager = $this->getMockBuilder(ConfigurationManager::class)
85
            ->setMethods(['getConfiguration'])
86
            ->disableOriginalConstructor()
87
            ->getMock();
88
        $mockConfigurationManager->expects($this->once())->method('getConfiguration')
89
            ->will($this->returnValue($settings));
90
        $this->inject($this->subject, 'configurationManager', $mockConfigurationManager);
91
92
        $this->assertEquals($expected, $this->subject->getPasswordExpiryTimestamp($currentDate));
93
    }
94
}
95