Passed
Pull Request — master (#809)
by Denys
06:35
created

requestCreateSspAssetWithValidData()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 28
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 1
Metric Value
eloc 18
c 1
b 1
f 1
dl 0
loc 28
rs 9.6666
cc 1
nc 1
nop 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
 * @group EndToEnd
24
 */
25
class CreateSspAssetBackendJsonApiCest
26
{
27
    protected SspAssetsBackendJsonApiFixtures $fixtures;
28
29
    public function loadFixtures(SelfServicePortalBackendApiTester $I): void
30
    {
31
        /** @var \PyzTest\Glue\SelfServicePortalBackend\JsonApi\Fixtures\SspAssetsBackendJsonApiFixtures $fixtures */
32
        $fixtures = $I->loadFixtures(SspAssetsBackendJsonApiFixtures::class);
33
        $this->fixtures = $fixtures;
34
    }
35
36
    /**
37
     * @depends loadFixtures
38
     *
39
     * @param \PyzTest\Glue\SelfServicePortalBackend\SelfServicePortalBackendApiTester $I
40
     */
41
    public function requestCreateSspAssetWithValidData(SelfServicePortalBackendApiTester $I): void
42
    {
43
        // Arrange
44
        $oauthResponseTransfer = $I->havePasswordAuthorizationToBackendApi($this->fixtures->getUserTransfer());
45
        $I->amBearerAuthenticated($oauthResponseTransfer->getAccessToken());
46
        $companyBusinessUnitUUID = $this->fixtures->getCompanyBusinessUnitTransfer()->getUuid();
47
48
        $requestData = $I->buildAssetCreateRequestData(
49
            'New Asset',
50
            'NEW001_serialNumber_BAPI_TEST',
51
            'pending',
52
            'This is a test asset created via API',
53
            'https://example.com/image.png',
54
            $companyBusinessUnitUUID,
55
        );
56
57
        // Act
58
        $I->sendJsonApiPost($I->getCreateSspAssetUrl(), $requestData);
59
60
        // Assert
61
        $I->seeJsonApiResponseCodeIs(HttpCode::CREATED);
62
        $I->seeResponseIsJson();
63
        $I->seeResponseMatchesOpenApiSchema();
64
65
        $I->assertEquals('New Asset', $I->getJsonApiDataFromResponseByJsonPath('$.data.attributes.name'));
66
        $I->assertEquals('NEW001_serialNumber_BAPI_TEST', $I->getJsonApiDataFromResponseByJsonPath('$.data.attributes.serialNumber'));
67
        $I->assertEquals($companyBusinessUnitUUID, $I->getJsonApiDataFromResponseByJsonPath('$.data.attributes.companyBusinessUnitOwnerUuid'));
68
        $I->assertEquals('pending', $I->getJsonApiDataFromResponseByJsonPath('$.data.attributes.status'));
69
    }
70
71
    /**
72
     * @depends loadFixtures
73
     *
74
     * @param \PyzTest\Glue\SelfServicePortalBackend\SelfServicePortalBackendApiTester $I
75
     */
76
    public function requestCreateSspAssetWithInvalidToken(SelfServicePortalBackendApiTester $I): void
77
    {
78
        // Arrange
79
        $I->amBearerAuthenticated('invalid-token');
80
        $companyBusinessUnitUUID = $this->fixtures->getCompanyBusinessUnitTransfer()->getUuid();
81
82
        $requestData = $I->buildAssetCreateRequestData(
83
            'New Asset',
84
            'NEW001_serialNumber_BAPI_TEST',
85
            'pending',
86
            'This is a test asset created via API',
87
            'https://example.com/image.png',
88
            $companyBusinessUnitUUID,
89
        );
90
91
        // Act
92
        $I->sendJsonApiPost($I->getCreateSspAssetUrl(), $requestData);
93
94
        // Assert
95
        $I->seeJsonApiResponseCodeIs(HttpCode::UNAUTHORIZED);
96
    }
97
98
    public function requestCreateSspAssetWithMissingName(SelfServicePortalBackendApiTester $I): void
99
    {
100
        // Arrange
101
        $oauthResponseTransfer = $I->havePasswordAuthorizationToBackendApi($this->fixtures->getUserTransfer());
102
        $I->amBearerAuthenticated($oauthResponseTransfer->getAccessToken());
103
        $companyBusinessUnitUUID = $this->fixtures->getCompanyBusinessUnitTransfer()->getUuid();
104
105
        $requestData = $I->buildAssetCreateRequestData(
106
            '',
107
            'NEW001_serialNumber_BAPI_TEST',
108
            'pending',
109
            'This is a test asset created via API',
110
            'https://example.com/image.png',
111
            $companyBusinessUnitUUID,
112
        );
113
114
        // Act
115
        $I->haveHttpHeader('Accept-Language', 'en-US');
116
        $I->sendJsonApiPost($I->getCreateSspAssetUrl(), $requestData);
117
118
        // Assert
119
        $I->seeJsonApiResponseCodeIs(HttpCode::BAD_REQUEST);
120
        $I->seeJsonApiResponseErrorsHaveMessage('Asset name must be provided');
121
    }
122
}
123