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

MultiFactorAuthRestApiTester   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Importance

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

3 Methods

Rating   Name   Duplication   Size   Complexity  
A authorizeCustomerToGlue() 0 4 1
A createCustomer() 0 9 1
A getCustomerMultiFactorAuthCodeFromDatabase() 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\CustomerTransfer;
13
use Orm\Zed\MultiFactorAuth\Persistence\Map\SpyCustomerMultiFactorAuthCodesTableMap;
14
use Orm\Zed\MultiFactorAuth\Persistence\SpyCustomerMultiFactorAuthCodesQuery;
15
use SprykerTest\Glue\Testify\Tester\ApiEndToEndTester;
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 MultiFactorAuthRestApiTester extends ApiEndToEndTester
34
{
35
    use _generated\MultiFactorAuthRestApiTesterActions;
36
37
    /**
38
     * @var string
39
     */
40
    protected const TEST_PASSWORD = 'Change!23456';
41
42
    /**
43
     * @param \Generated\Shared\Transfer\CustomerTransfer $customerTransfer
44
     *
45
     * @return void
46
     */
47
    public function authorizeCustomerToGlue(CustomerTransfer $customerTransfer): void
48
    {
49
        $oauthResponseTransfer = $this->haveAuthorizationToGlue($customerTransfer);
50
        $this->amBearerAuthenticated($oauthResponseTransfer->getAccessToken());
51
    }
52
53
    /**
54
     * @param string $customerName
55
     *
56
     * @return \Generated\Shared\Transfer\CustomerTransfer
57
     */
58
    public function createCustomer(string $customerName): CustomerTransfer
59
    {
60
        $customerTransfer = $this->haveCustomer([
61
            CustomerTransfer::USERNAME => $customerName,
62
            CustomerTransfer::PASSWORD => static::TEST_PASSWORD,
63
            CustomerTransfer::NEW_PASSWORD => static::TEST_PASSWORD,
64
        ]);
65
66
        return $this->confirmCustomer($customerTransfer);
67
    }
68
69
    /**
70
     * @param \Generated\Shared\Transfer\CustomerTransfer $customerTransfer
71
     * @param string $mfaType
72
     *
73
     * @return string|null
74
     */
75
    public function getCustomerMultiFactorAuthCodeFromDatabase(CustomerTransfer $customerTransfer, string $mfaType): ?string
76
    {
77
        $customerMultiFactorAuthCodeEntity = (new SpyCustomerMultiFactorAuthCodesQuery())
78
            ->innerJoinSpyCustomerMultiFactorAuth()
79
            ->useSpyCustomerMultiFactorAuthQuery()
80
            ->filterByType($mfaType);
81
82
        /** @var \Orm\Zed\MultiFactorAuth\Persistence\SpyCustomerMultiFactorAuthCodes|null $customerMultiFactorAuthCodeEntity */
83
        $customerMultiFactorAuthCodeEntity = $customerMultiFactorAuthCodeEntity->filterByFkCustomer($customerTransfer->getIdCustomer())
84
            ->addDescendingOrderByColumn(SpyCustomerMultiFactorAuthCodesTableMap::COL_ID_CUSTOMER_MULTI_FACTOR_AUTH_CODE)
85
            ->endUse()
86
            ->findOne();
87
88
        return $customerMultiFactorAuthCodeEntity?->getCode();
89
    }
90
}
91