Passed
Push — master ( b0573e...b2a2f5 )
by Olha
05:18
created

MultiFactorAuthBackendApiTester   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 20
dl 0
loc 61
rs 10
c 1
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A authorizeUserToBackendApi() 0 4 1
A createUser() 0 9 1
A getUserMultiFactorAuthCodeFromDatabase() 0 14 1
1
<?php
2
3
/**
4
 * This file is part of the Spryker Commerce OS.
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
declare(strict_types = 1);
9
10
namespace PyzTest\Glue\MultiFactorAuth;
11
12
use Generated\Shared\Transfer\UserTransfer;
13
use Orm\Zed\MultiFactorAuth\Persistence\Map\SpyUserMultiFactorAuthCodesTableMap;
14
use Orm\Zed\MultiFactorAuth\Persistence\SpyUserMultiFactorAuthCodesQuery;
15
use SprykerTest\Glue\Testify\Tester\BackendApiEndToEndTester;
16
17
/**
18
 * Inherited Methods
19
 *
20
 * @method void wantTo($text)
21
 * @method void wantToTest($text)
22
 * @method void execute($callable)
23
 * @method void expectTo($prediction)
24
 * @method void expect($prediction)
25
 * @method void amGoingTo($argumentation)
26
 * @method void am($role)
27
 * @method void lookForwardTo($achieveValue)
28
 * @method void comment($description)
29
 * @method void pause($vars = [])
30
 *
31
 * @SuppressWarnings(PHPMD)
32
 */
33
class MultiFactorAuthBackendApiTester extends BackendApiEndToEndTester
34
{
35
    use _generated\MultiFactorAuthBackendApiTesterActions;
36
37
    /**
38
     * @var string
39
     */
40
    public const TEST_UUID = '11111111-55a9-55ae-a538-4d8109b4087c';
41
42
    /**
43
     * @var string
44
     */
45
    protected const TEST_PASSWORD = 'Change!23456';
46
47
    /**
48
     * @param \Generated\Shared\Transfer\UserTransfer $userTransfer
49
     *
50
     * @return void
51
     */
52
    public function authorizeUserToBackendApi(UserTransfer $userTransfer): void
53
    {
54
        $oauthResponseTransfer = $this->havePasswordAuthorizationToBackendApi($userTransfer);
55
        $this->amBearerAuthenticated($oauthResponseTransfer->getAccessToken());
56
    }
57
58
    /**
59
     * @param string $userName
60
     *
61
     * @return \Generated\Shared\Transfer\UserTransfer
62
     */
63
    public function createUser(string $userName): UserTransfer
64
    {
65
        $userTransfer = $this->haveUser([
66
            UserTransfer::USERNAME => $userName,
67
            UserTransfer::PASSWORD => static::TEST_PASSWORD,
68
            UserTransfer::UUID => static::TEST_UUID,
69
        ]);
70
71
        return $userTransfer->setPassword(static::TEST_PASSWORD);
72
    }
73
74
    /**
75
     * @param \Generated\Shared\Transfer\UserTransfer $userTransfer
76
     * @param string $mfaType
77
     *
78
     * @return string|null
79
     */
80
    public function getUserMultiFactorAuthCodeFromDatabase(UserTransfer $userTransfer, string $mfaType): ?string
81
    {
82
        $userMultiFactorAuthCodeEntity = (new SpyUserMultiFactorAuthCodesQuery())
83
            ->innerJoinSpyUserMultiFactorAuth()
84
            ->useSpyUserMultiFactorAuthQuery()
85
            ->filterByType($mfaType);
86
87
        /** @var \Orm\Zed\MultiFactorAuth\Persistence\SpyUserMultiFactorAuthCodes|null $userMultiFactorAuthCodeEntity */
88
        $userMultiFactorAuthCodeEntity = $userMultiFactorAuthCodeEntity->filterByFkUser($userTransfer->getIdUser())
89
            ->addDescendingOrderByColumn(SpyUserMultiFactorAuthCodesTableMap::COL_ID_USER_MULTI_FACTOR_AUTH_CODE)
90
            ->endUse()
91
            ->findOne();
92
93
        return $userMultiFactorAuthCodeEntity?->getCode();
94
    }
95
}
96