Passed
Pull Request — master (#356)
by Denys
05:13
created

CompanyUserAuthAccessTokensRestApiCest   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 234
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
eloc 77
dl 0
loc 234
rs 10
c 1
b 0
f 0

8 Methods

Rating   Name   Duplication   Size   Complexity  
A requestCompanyUserAccessTokenWithEmptyIdCompanyUser() 0 21 1
A requestCompanyUserAccessTokenForExistingCustomerWithInvalidPostData() 0 20 1
A requestCompanyUserAccessTokenWithNoExistingIdCompanyUser() 0 21 1
A requestCompanyUserAccessTokenWithUuidOfAnotherCompanyUser() 0 21 1
A requestCompanyUserAccessTokenForExistingCustomerWithWrongType() 0 21 1
A loadFixtures() 0 6 1
A requestAccessTokenForNonDefaultCompanyUser() 0 27 1
A requestCompanyUserAccessTokenForExistingCustomerWithCompanyUser() 0 22 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
namespace PyzTest\Glue\CompanyUserAuth\RestApi;
9
10
use Codeception\Util\HttpCode;
11
use PyzTest\Glue\CompanyUserAuth\CompanyUserAuthRestApiTester;
12
use Spryker\Glue\CompanyUserAuthRestApi\CompanyUserAuthRestApiConfig;
13
14
/**
15
 * Auto-generated group annotations
16
 *
17
 * @group PyzTest
18
 * @group Glue
19
 * @group CompanyUserAuth
20
 * @group RestApi
21
 * @group CompanyUserAuthAccessTokensRestApiCest
22
 * Add your own group annotations below this line
23
 * @group EndToEnd
24
 */
25
class CompanyUserAuthAccessTokensRestApiCest
26
{
27
    /**
28
     * @var \PyzTest\Glue\CompanyUserAuth\RestApi\CompanyUserAuthAccessTokensRestApiFixtures
29
     */
30
    protected CompanyUserAuthAccessTokensRestApiFixtures $fixtures;
31
32
    /**
33
     * @param \PyzTest\Glue\CompanyUserAuth\CompanyUserAuthRestApiTester $I
34
     *
35
     * @return void
36
     */
37
    public function loadFixtures(CompanyUserAuthRestApiTester $I): void
38
    {
39
        /** @var \PyzTest\Glue\CompanyUserAuth\RestApi\CompanyUserAuthAccessTokensRestApiFixtures $fixtures */
40
        $fixtures = $I->loadFixtures(CompanyUserAuthAccessTokensRestApiFixtures::class);
41
42
        $this->fixtures = $fixtures;
43
    }
44
45
    /**
46
     * @depends loadFixtures
47
     *
48
     * @param \PyzTest\Glue\CompanyUserAuth\CompanyUserAuthRestApiTester $I
49
     *
50
     * @return void
51
     */
52
    public function requestCompanyUserAccessTokenForExistingCustomerWithCompanyUser(
53
        CompanyUserAuthRestApiTester $I,
54
    ): void {
55
        // Arrange
56
        $I->amBearerAuthenticated($this->fixtures->getOauthResponseTransferForCompanyUser()->getAccessToken());
57
58
        // Act
59
        $I->sendPOST(CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS, [
60
            'data' => [
61
                'type' => CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS,
62
                'attributes' => [
63
                    'idCompanyUser' => $this->fixtures->getOauthResponseTransferForCompanyUser()->getIdCompanyUser(),
64
                ],
65
            ],
66
        ]);
67
68
        // Assert
69
        $I->seeResponseCodeIs(HttpCode::CREATED);
70
        $I->seeResponseHasAccessToken();
71
        $I->seeResponseHasRefreshToken();
72
73
        $I->seeResponseMatchesOpenApiSchema();
74
    }
75
76
    /**
77
     * @depends loadFixtures
78
     *
79
     * @param \PyzTest\Glue\CompanyUserAuth\CompanyUserAuthRestApiTester $I
80
     *
81
     * @return void
82
     */
83
    public function requestCompanyUserAccessTokenForExistingCustomerWithWrongType(CompanyUserAuthRestApiTester $I): void
84
    {
85
        // Arrange
86
        $I->amBearerAuthenticated($this->fixtures->getOauthResponseTransferForCompanyUser()->getAccessToken());
87
88
        // Act
89
        $I->sendPOST(CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS, [
90
            'data' => [
91
                'type' => uniqid(CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS),
92
                'attributes' => [
93
                    'idCompanyUser' => $this->fixtures->getOauthResponseTransferForCompanyUser()->getIdCompanyUser(),
94
                ],
95
            ],
96
        ]);
97
98
        // Assert
99
        $I->seeResponseCodeIs(HttpCode::BAD_REQUEST);
100
        $I->dontSeeResponseHasRefreshToken();
101
        $I->dontSeeResponseHasAccessToken();
102
103
        $I->seeResponseMatchesOpenApiSchema();
104
    }
105
106
    /**
107
     * @depends loadFixtures
108
     *
109
     * @param \PyzTest\Glue\CompanyUserAuth\CompanyUserAuthRestApiTester $I
110
     *
111
     * @return void
112
     */
113
    public function requestCompanyUserAccessTokenForExistingCustomerWithInvalidPostData(
114
        CompanyUserAuthRestApiTester $I,
115
    ): void {
116
        // Arrange
117
        $I->amBearerAuthenticated($this->fixtures->getOauthResponseTransferForCompanyUser()->getAccessToken());
118
119
        // Act
120
        $I->sendPOST(CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS, [
121
            'type' => uniqid(CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS),
122
            'attributes' => [
123
                'idCompanyUser' => $this->fixtures->getOauthResponseTransferForCompanyUser()->getIdCompanyUser(),
124
            ],
125
        ]);
126
127
        // Assert
128
        $I->seeResponseCodeIs(HttpCode::BAD_REQUEST);
129
        $I->dontSeeResponseHasRefreshToken();
130
        $I->dontSeeResponseHasAccessToken();
131
132
        $I->seeResponseMatchesOpenApiSchema();
133
    }
134
135
    /**
136
     * @depends loadFixtures
137
     *
138
     * @param \PyzTest\Glue\CompanyUserAuth\CompanyUserAuthRestApiTester $I
139
     *
140
     * @return void
141
     */
142
    public function requestCompanyUserAccessTokenWithUuidOfAnotherCompanyUser(CompanyUserAuthRestApiTester $I): void
143
    {
144
        // Arrange
145
        $I->amBearerAuthenticated($this->fixtures->getOauthResponseTransferForNonCompanyUser()->getAccessToken());
146
147
        // Act
148
        $I->sendPOST(CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS, [
149
            'data' => [
150
                'type' => CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS,
151
                'attributes' => [
152
                    'idCompanyUser' => $this->fixtures->getOauthResponseTransferForCompanyUser()->getIdCompanyUser(),
153
                ],
154
            ],
155
        ]);
156
157
        // Assert
158
        $I->seeResponseCodeIs(HttpCode::UNAUTHORIZED);
159
        $I->dontSeeResponseHasRefreshToken();
160
        $I->dontSeeResponseHasAccessToken();
161
162
        $I->seeResponseMatchesOpenApiSchema();
163
    }
164
165
    /**
166
     * @depends loadFixtures
167
     *
168
     * @param \PyzTest\Glue\CompanyUserAuth\CompanyUserAuthRestApiTester $I
169
     *
170
     * @return void
171
     */
172
    public function requestCompanyUserAccessTokenWithNoExistingIdCompanyUser(CompanyUserAuthRestApiTester $I): void
173
    {
174
        // Arrange
175
        $I->amBearerAuthenticated($this->fixtures->getOauthResponseTransferForCompanyUser()->getAccessToken());
176
177
        // Act
178
        $I->sendPOST(CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS, [
179
            'data' => [
180
                'type' => CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS,
181
                'attributes' => [
182
                    'idCompanyUser' => uniqid(),
183
                ],
184
            ],
185
        ]);
186
187
        // Assert
188
        $I->seeResponseCodeIs(HttpCode::UNPROCESSABLE_ENTITY);
189
        $I->dontSeeResponseHasRefreshToken();
190
        $I->dontSeeResponseHasAccessToken();
191
192
        $I->seeResponseMatchesOpenApiSchema();
193
    }
194
195
    /**
196
     * @depends loadFixtures
197
     *
198
     * @param \PyzTest\Glue\CompanyUserAuth\CompanyUserAuthRestApiTester $I
199
     *
200
     * @return void
201
     */
202
    public function requestCompanyUserAccessTokenWithEmptyIdCompanyUser(CompanyUserAuthRestApiTester $I): void
203
    {
204
        // Arrange
205
        $I->amBearerAuthenticated($this->fixtures->getOauthResponseTransferForCompanyUser()->getAccessToken());
206
207
        // Act
208
        $I->sendPOST(CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS, [
209
            'data' => [
210
                'type' => CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS,
211
                'attributes' => [
212
                    'idCompanyUser' => '',
213
                ],
214
            ],
215
        ]);
216
217
        // Assert
218
        $I->seeResponseCodeIs(HttpCode::UNPROCESSABLE_ENTITY);
219
        $I->dontSeeResponseHasRefreshToken();
220
        $I->dontSeeResponseHasAccessToken();
221
222
        $I->seeResponseMatchesOpenApiSchema();
223
    }
224
225
    /**
226
     * @depends loadFixtures
227
     *
228
     * @param \PyzTest\Glue\CompanyUserAuth\CompanyUserAuthRestApiTester $I
229
     *
230
     * @return void
231
     */
232
    public function requestAccessTokenForNonDefaultCompanyUser(CompanyUserAuthRestApiTester $I): void
233
    {
234
        // Arrange
235
        $firstCompanyUserAccessToken = $this->fixtures->getOauthResponseTransferForCustomerWithTwoCompanyUsers()->getAccessToken();
236
237
        $I->amBearerAuthenticated($firstCompanyUserAccessToken);
238
239
        // Act
240
        $I->sendPOST(CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS, [
241
            'data' => [
242
                'type' => CompanyUserAuthRestApiConfig::RESOURCE_COMPANY_USER_ACCESS_TOKENS,
243
                'attributes' => [
244
                    'idCompanyUser' => $this->fixtures->getNonDefaultCompanyUserTransfer()->getUuid(),
245
                ],
246
            ],
247
        ]);
248
249
        // Assert
250
        $I->seeResponseCodeIs(HttpCode::CREATED);
251
        $I->seeResponseHasRefreshToken();
252
        $I->seeResponseHasAccessToken();
253
254
        $secondCompanyUserAccessToken = $I->grabAccessTokenFromResponse();
255
        $I->assertNotNull($secondCompanyUserAccessToken);
256
        $I->assertNotEquals($firstCompanyUserAccessToken, $secondCompanyUserAccessToken);
257
258
        $I->seeResponseMatchesOpenApiSchema();
259
    }
260
}
261