From 900e8c4d7ed95db3fdcedefc9b801f031b2c5251 Mon Sep 17 00:00:00 2001 From: Wojdylak Date: Tue, 17 Oct 2023 12:03:30 +0200 Subject: [PATCH 1/2] [API] Add contract tests for AvatarImage Api resources --- tests/Api/Admin/AvatarImageTest.php | 109 ++++++++++++++++++ tests/Api/DataFixtures/ORM/avatar_image.yaml | 4 + tests/Api/JsonApiTestCase.php | 12 ++ .../avatar_image/get_an_avatar_image.json | 8 ++ .../admin/avatar_image/post_avatar_image.json | 8 ++ 5 files changed, 141 insertions(+) create mode 100644 tests/Api/Admin/AvatarImageTest.php create mode 100644 tests/Api/DataFixtures/ORM/avatar_image.yaml create mode 100644 tests/Api/Responses/Expected/admin/avatar_image/get_an_avatar_image.json create mode 100644 tests/Api/Responses/Expected/admin/avatar_image/post_avatar_image.json diff --git a/tests/Api/Admin/AvatarImageTest.php b/tests/Api/Admin/AvatarImageTest.php new file mode 100644 index 00000000000..0a67fa92741 --- /dev/null +++ b/tests/Api/Admin/AvatarImageTest.php @@ -0,0 +1,109 @@ +loadFixturesFromFiles(['authentication/api_administrator.yaml', 'avatar_image.yaml']); + $header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER); + + /** @var AvatarImageInterface $avatarImage */ + $avatarImage = $fixtures['avatar_image']; + + $this->client->request( + method: 'GET', + uri: sprintf('/api/v2/admin/avatar-images/%s', $avatarImage->getId()), + server: $header, + ); + + $this->assertResponse( + $this->client->getResponse(), + 'admin/avatar_image/get_an_avatar_image', + Response::HTTP_OK, + ); + } + + /** @test */ + public function it_gets_nothing_if_avatar_image_not_found(): void + { + $this->loadFixturesFromFiles(['authentication/api_administrator.yaml', 'avatar_image.yaml']); + $header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER); + + $this->client->request( + method: 'GET', + uri: sprintf('/api/v2/admin/avatar-images/%s', 'wrong input'), + server: $header, + ); + + $response = $this->client->getResponse(); + + $this->assertSame(Response::HTTP_NOT_FOUND, $response->getStatusCode()); + } + + /** @test */ + public function it_creates_an_avatar_image(): void + { + $fixtures = $this->loadFixturesFromFiles(['authentication/api_administrator.yaml', 'avatar_image.yaml']); + $header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER); + + /** @var AdminUserInterface $adminUser */ + $adminUser = $fixtures['admin']; + + $this->client->request( + method: 'POST', + uri: '/api/v2/admin/avatar-images', + parameters: [ + 'owner' => sprintf('/api/v2/admin/administrators/%s', $adminUser->getId()), + ], + files: ['file' => $this->getUploadedFile('fixtures/ford.jpg', 'ford.jpg')], + server: $header, + ); + + $response = $this->client->getResponse(); + $this->assertResponse( + $response, + 'admin/avatar_image/post_avatar_image', + Response::HTTP_CREATED, + ); + } + + /** @test */ + public function it_deletes_an_avatar_image(): void + { + $fixtures = $this->loadFixturesFromFiles(['authentication/api_administrator.yaml', 'avatar_image.yaml']); + $header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER); + + /** @var AvatarImageInterface $avatarImage */ + $avatarImage = $fixtures['avatar_image']; + + $this->client->request( + method: 'DELETE', + uri: sprintf('/api/v2/admin/avatar-images/%s', $avatarImage->getId()), + server: $header, + ); + + $this->assertResponseCode($this->client->getResponse(), Response::HTTP_NO_CONTENT); + } +} diff --git a/tests/Api/DataFixtures/ORM/avatar_image.yaml b/tests/Api/DataFixtures/ORM/avatar_image.yaml new file mode 100644 index 00000000000..afa2e67bb5b --- /dev/null +++ b/tests/Api/DataFixtures/ORM/avatar_image.yaml @@ -0,0 +1,4 @@ +Sylius\Component\Core\Model\AvatarImage: + avatar_image: + owner: "@admin" + path: "uo/avatar_image.jpg" diff --git a/tests/Api/JsonApiTestCase.php b/tests/Api/JsonApiTestCase.php index 4f14919d097..f6fb68619d3 100644 --- a/tests/Api/JsonApiTestCase.php +++ b/tests/Api/JsonApiTestCase.php @@ -156,4 +156,16 @@ protected function assertJsonResponseViolations(Response $response, array $expec $this->assertContains($expectedViolation['message'], $violationMap[$propertyPath], $responseContent); } } + + protected function getUploadedFile( + string $path, + string $name, + string $type = 'image/jpg', + ): UploadedFile { + return new UploadedFile( + __DIR__ . '/../Resources/' . $path, + $name, + $type, + ); + } } diff --git a/tests/Api/Responses/Expected/admin/avatar_image/get_an_avatar_image.json b/tests/Api/Responses/Expected/admin/avatar_image/get_an_avatar_image.json new file mode 100644 index 00000000000..6eab614c4b6 --- /dev/null +++ b/tests/Api/Responses/Expected/admin/avatar_image/get_an_avatar_image.json @@ -0,0 +1,8 @@ +{ + "@context": "/api/v2/contexts/AvatarImage", + "@id": "/api/v2/admin/avatar-images/@integer@", + "@type": "AvatarImage", + "id": @integer@, + "path": "uo/avatar_image.jpg", + "owner": "\/api\/v2\/admin\/administrators/@integer@" +} diff --git a/tests/Api/Responses/Expected/admin/avatar_image/post_avatar_image.json b/tests/Api/Responses/Expected/admin/avatar_image/post_avatar_image.json new file mode 100644 index 00000000000..906944aaf43 --- /dev/null +++ b/tests/Api/Responses/Expected/admin/avatar_image/post_avatar_image.json @@ -0,0 +1,8 @@ +{ + "@context": "/api/v2/contexts/AvatarImage", + "@id": "/api/v2/admin/avatar-images/@integer@", + "@type": "AvatarImage", + "id": @integer@, + "path": "@string@\/ford.jpg", + "owner": "\/api\/v2\/admin\/administrators/@integer@" +} From e217c797e81ced2fdc84e497cb45c4166e1cf624 Mon Sep 17 00:00:00 2001 From: Rafikooo Date: Thu, 29 Feb 2024 01:04:09 +0100 Subject: [PATCH 2/2] [Unit][Admin] Cherry-pick avatar-image tests --- tests/Api/JsonApiTestCase.php | 12 ------------ .../admin/avatar_image/get_an_avatar_image.json | 0 .../admin/avatar_image/post_avatar_image.json | 0 3 files changed, 12 deletions(-) rename tests/Api/Responses/{Expected => }/admin/avatar_image/get_an_avatar_image.json (100%) rename tests/Api/Responses/{Expected => }/admin/avatar_image/post_avatar_image.json (100%) diff --git a/tests/Api/JsonApiTestCase.php b/tests/Api/JsonApiTestCase.php index f6fb68619d3..4f14919d097 100644 --- a/tests/Api/JsonApiTestCase.php +++ b/tests/Api/JsonApiTestCase.php @@ -156,16 +156,4 @@ protected function assertJsonResponseViolations(Response $response, array $expec $this->assertContains($expectedViolation['message'], $violationMap[$propertyPath], $responseContent); } } - - protected function getUploadedFile( - string $path, - string $name, - string $type = 'image/jpg', - ): UploadedFile { - return new UploadedFile( - __DIR__ . '/../Resources/' . $path, - $name, - $type, - ); - } } diff --git a/tests/Api/Responses/Expected/admin/avatar_image/get_an_avatar_image.json b/tests/Api/Responses/admin/avatar_image/get_an_avatar_image.json similarity index 100% rename from tests/Api/Responses/Expected/admin/avatar_image/get_an_avatar_image.json rename to tests/Api/Responses/admin/avatar_image/get_an_avatar_image.json diff --git a/tests/Api/Responses/Expected/admin/avatar_image/post_avatar_image.json b/tests/Api/Responses/admin/avatar_image/post_avatar_image.json similarity index 100% rename from tests/Api/Responses/Expected/admin/avatar_image/post_avatar_image.json rename to tests/Api/Responses/admin/avatar_image/post_avatar_image.json