Passed
Push — master ( cbe4e2...495177 )
by Simon
01:45
created

testDoChangePassword()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 15
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 9
nc 1
nop 0
1
<?php
2
3
namespace Firesphere\BootstrapMFA\Tests;
4
5
use Firesphere\BootstrapMFA\Authenticators\BootstrapMFAAuthenticator;
6
use Firesphere\BootstrapMFA\Handlers\MFAChangePasswordHandler;
7
use Firesphere\BootstrapMFA\Tests\Helpers\CodeHelper;
8
use SilverStripe\Control\Controller;
9
use SilverStripe\Control\Session;
10
use SilverStripe\Core\Injector\Injector;
11
use SilverStripe\Dev\Debug;
12
use SilverStripe\Dev\SapphireTest;
13
use SilverStripe\Security\IdentityStore;
14
use SilverStripe\Security\Member;
15
use SilverStripe\Security\MemberAuthenticator\ChangePasswordForm;
16
use SilverStripe\Security\Security;
17
18
class MFAChangePasswordHandlerTest extends SapphireTest
19
{
20
    protected static $fixture_file = '../fixtures/member.yml';
21
22
    /**
23
     * @var Controller
24
     */
25
    protected $controller;
26
27
    /**
28
     * @var BootstrapMFAAuthenticator
29
     */
30
    protected $authenticator;
31
32
    /**
33
     * @var MFAChangePasswordHandler
34
     */
35
    protected $handler;
36
37
    /**
38
     * @var ChangePasswordForm
39
     */
40
    protected $form;
41
42
    protected function setUp()
43
    {
44
        parent::setUp();
45
        $this->controller = Controller::curr();
46
        $request = $this->controller->getRequest();
47
        $request->setSession(new Session(['test' => 'test']));
48
        $this->authenticator = Injector::inst()->create(BootstrapMFAAuthenticator::class);
49
        $this->form = Injector::inst()->createWithArgs(ChangePasswordForm::class, [$this->controller, 'changepassword']);
50
51
        $this->handler = Injector::inst()->createWithArgs(MFAChangePasswordHandler::class, ['changepassword', $this->authenticator]);
52
        $this->handler->setRequest($request);
53
54
    }
55
56
    public function testDoChangePassword()
57
    {
58
        $user = $this->objFromFixture(Member::class, 'member1');
59
        Injector::inst()->get(IdentityStore::class)->logIn($user);
60
61
        $data =  [
62
            'OldPassword' => 'password1',
63
            'NewPassword1' => 'password',
64
            'NewPassword2' => 'password',
65
        ];
66
67
        $response = $this->handler->doChangePassword($data, $this->form);
0 ignored issues
show
Unused Code introduced by
The assignment to $response is dead and can be removed.
Loading history...
68
69
        $codes = CodeHelper::getCodesFromSession();
70
        $this->assertEquals(15, count($codes));
71
    }
72
}