Completed
Push — 4.2 ( 48c6de...90dae0 )
by Daniel
50s queued 21s
created

testExpiredOrInvalidTokenProvidesLostPasswordAndLoginLink()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 12
nc 1
nop 0
dl 0
loc 19
rs 9.8666
c 0
b 0
f 0
1
<?php
2
3
namespace SilverStripe\Security\Tests\MemberAuthenticator;
4
5
use SilverStripe\Control\HTTPRequest;
6
use SilverStripe\Control\Session;
7
use SilverStripe\Core\Config\Config;
8
use SilverStripe\Dev\SapphireTest;
9
use SilverStripe\Security\Member;
10
use SilverStripe\Security\MemberAuthenticator\ChangePasswordHandler;
11
use SilverStripe\Security\MemberAuthenticator\MemberAuthenticator;
12
use SilverStripe\Security\Security;
13
14
class ChangePasswordHandlerTest extends SapphireTest
15
{
16
    protected static $fixture_file = 'ChangePasswordHandlerTest.yml';
17
18
    protected function setUp()
19
    {
20
        parent::setUp();
21
22
        Config::modify()
23
            ->set(Security::class, 'login_url', 'Security/login')
24
            ->set(Security::class, 'lost_password_url', 'Security/lostpassword');
25
26
        $this->logOut();
27
    }
28
29
    public function testExpiredOrInvalidTokenProvidesLostPasswordAndLoginLink()
30
    {
31
        $request = new HTTPRequest('GET', '/Security/changepassword', [
32
            'm' => $this->idFromFixture(Member::class, 'sarah'),
33
            't' => 'an-old-or-expired-hash',
34
        ]);
35
        $request->setSession(new Session([]));
36
37
        /** @var ChangePasswordHandler $handler */
38
        $handler = $this->getMockBuilder(ChangePasswordHandler::class)
39
            ->disableOriginalConstructor()
40
            ->setMethods(null)
41
            ->getMock();
42
43
        $result = $handler->setRequest($request)->changepassword();
44
45
        $this->assertInternalType('array', $result, 'An array is returned');
46
        $this->assertContains('Security/lostpassword', $result['Content'], 'Lost password URL is included');
47
        $this->assertContains('Security/login', $result['Content'], 'Login URL is included');
48
    }
49
}
50