Completed
Push — master ( 09a563...bb361a )
by Stanislav
47s queued 13s
created

CreateSspAssetBackendJsonApiCest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 121
Duplicated Lines 0 %

Importance

Changes 2
Bugs 2 Features 1
Metric Value
wmc 5
eloc 61
c 2
b 2
f 1
dl 0
loc 121
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A requestCreateSspAssetWithValidData() 0 28 1
A requestCreateSspAssetWithMissingName() 0 23 1
A loadFixtures() 0 5 1
A requestCreateSspAssetWithInvalidToken() 0 20 1
A requestCreateSspAssetWithInvalidStatus() 0 23 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\SelfServicePortalBackend;
11
12
use Codeception\Util\HttpCode;
13
use PyzTest\Glue\SelfServicePortalBackend\JsonApi\Fixtures\SspAssetsBackendJsonApiFixtures;
14
15
/**
16
 * Auto-generated group annotations
17
 *
18
 * @group PyzTest
19
 * @group Glue
20
 * @group SelfServicePortalBackend
21
 * @group CreateSspAssetBackendJsonApiCest
22
 * Add your own group annotations below this line
23
 */
24
class CreateSspAssetBackendJsonApiCest
25
{
26
    protected SspAssetsBackendJsonApiFixtures $fixtures;
27
28
    public function loadFixtures(SelfServicePortalBackendApiTester $I): void
29
    {
30
        /** @var \PyzTest\Glue\SelfServicePortalBackend\JsonApi\Fixtures\SspAssetsBackendJsonApiFixtures $fixtures */
31
        $fixtures = $I->loadFixtures(SspAssetsBackendJsonApiFixtures::class);
32
        $this->fixtures = $fixtures;
33
    }
34
35
    /**
36
     * @depends loadFixtures
37
     *
38
     * @param \PyzTest\Glue\SelfServicePortalBackend\SelfServicePortalBackendApiTester $I
39
     */
40
    public function requestCreateSspAssetWithValidData(SelfServicePortalBackendApiTester $I): void
41
    {
42
        // Arrange
43
        $oauthResponseTransfer = $I->havePasswordAuthorizationToBackendApi($this->fixtures->getUserTransfer());
44
        $I->amBearerAuthenticated($oauthResponseTransfer->getAccessToken());
45
        $companyBusinessUnitUUID = $this->fixtures->getCompanyBusinessUnitTransfer()->getUuid();
46
47
        $requestData = $I->buildAssetCreateRequestData(
48
            'New Asset',
49
            'NEW001_serialNumber_BAPI_TEST',
50
            'pending',
51
            'This is a test asset created via API',
52
            'https://example.com/image.png',
53
            $companyBusinessUnitUUID,
54
        );
55
56
        // Act
57
        $I->sendJsonApiPost($I->getCreateSspAssetUrl(), $requestData);
58
59
        // Assert
60
        $I->seeJsonApiResponseCodeIs(HttpCode::CREATED);
61
        $I->seeResponseIsJson();
62
        $I->seeResponseMatchesOpenApiSchema();
63
64
        $I->assertEquals('New Asset', $I->getJsonApiDataFromResponseByJsonPath('$.data.attributes.name'));
65
        $I->assertEquals('NEW001_serialNumber_BAPI_TEST', $I->getJsonApiDataFromResponseByJsonPath('$.data.attributes.serialNumber'));
66
        $I->assertEquals($companyBusinessUnitUUID, $I->getJsonApiDataFromResponseByJsonPath('$.data.attributes.companyBusinessUnitOwnerUuid'));
67
        $I->assertEquals('pending', $I->getJsonApiDataFromResponseByJsonPath('$.data.attributes.status'));
68
    }
69
70
    /**
71
     * @depends loadFixtures
72
     *
73
     * @param \PyzTest\Glue\SelfServicePortalBackend\SelfServicePortalBackendApiTester $I
74
     */
75
    public function requestCreateSspAssetWithInvalidToken(SelfServicePortalBackendApiTester $I): void
76
    {
77
        // Arrange
78
        $I->amBearerAuthenticated('invalid-token');
79
        $companyBusinessUnitUUID = $this->fixtures->getCompanyBusinessUnitTransfer()->getUuid();
80
81
        $requestData = $I->buildAssetCreateRequestData(
82
            'New Asset',
83
            'NEW001_serialNumber_BAPI_TEST',
84
            'pending',
85
            'This is a test asset created via API',
86
            'https://example.com/image.png',
87
            $companyBusinessUnitUUID,
88
        );
89
90
        // Act
91
        $I->sendJsonApiPost($I->getCreateSspAssetUrl(), $requestData);
92
93
        // Assert
94
        $I->seeJsonApiResponseCodeIs(HttpCode::UNAUTHORIZED);
95
    }
96
97
    public function requestCreateSspAssetWithMissingName(SelfServicePortalBackendApiTester $I): void
98
    {
99
        // Arrange
100
        $oauthResponseTransfer = $I->havePasswordAuthorizationToBackendApi($this->fixtures->getUserTransfer());
101
        $I->amBearerAuthenticated($oauthResponseTransfer->getAccessToken());
102
        $companyBusinessUnitUUID = $this->fixtures->getCompanyBusinessUnitTransfer()->getUuid();
103
104
        $requestData = $I->buildAssetCreateRequestData(
105
            '',
106
            'NEW001_serialNumber_BAPI_TEST',
107
            'pending',
108
            'This is a test asset created via API',
109
            'https://example.com/image.png',
110
            $companyBusinessUnitUUID,
111
        );
112
113
        // Act
114
        $I->haveHttpHeader('Accept-Language', 'en-US');
115
        $I->sendJsonApiPost($I->getCreateSspAssetUrl(), $requestData);
116
117
        // Assert
118
        $I->seeJsonApiResponseCodeIs(HttpCode::BAD_REQUEST);
119
        $I->seeJsonApiResponseErrorsHaveMessage('Asset name must be provided');
120
    }
121
122
    public function requestCreateSspAssetWithInvalidStatus(SelfServicePortalBackendApiTester $I): void
123
    {
124
        // Arrange
125
        $oauthResponseTransfer = $I->havePasswordAuthorizationToBackendApi($this->fixtures->getUserTransfer());
126
        $I->amBearerAuthenticated($oauthResponseTransfer->getAccessToken());
127
        $companyBusinessUnitUUID = $this->fixtures->getCompanyBusinessUnitTransfer()->getUuid();
128
129
        $requestData = $I->buildAssetCreateRequestData(
130
            'Test',
131
            'NEW001_serialNumber_BAPI_TEST',
132
            'notValid',
133
            'This is a test asset created via API',
134
            'https://example.com/image.png',
135
            $companyBusinessUnitUUID,
136
        );
137
        $I->haveHttpHeader('Accept-Language', 'en_US');
138
139
        // Act
140
        $I->sendJsonApiPost($I->getCreateSspAssetUrl(), $requestData);
141
142
        // Assert
143
        $I->seeJsonApiResponseCodeIs(HttpCode::BAD_REQUEST);
144
        $I->seeJsonApiResponseErrorsHaveMessage('Status is not valid.');
145
    }
146
}
147