diff --git a/src/lib/Server/Output/ValueObjectVisitor/ImageVariation.php b/src/lib/Server/Output/ValueObjectVisitor/ImageVariation.php index 7d1701c..49ff1a4 100644 --- a/src/lib/Server/Output/ValueObjectVisitor/ImageVariation.php +++ b/src/lib/Server/Output/ValueObjectVisitor/ImageVariation.php @@ -18,6 +18,7 @@ class ImageVariation extends ValueObjectVisitor */ public function visit(Visitor $visitor, Generator $generator, $data) { + $visitor->setHeader('Content-Type', $generator->getMediaType('ContentImageVariation')); $generator->startObjectElement('ContentImageVariation'); $this->visitImageVariationAttributes($visitor, $generator, $data); $generator->endObjectElement('ContentImageVariation'); diff --git a/tests/bundle/Functional/ImageVariationTest.php b/tests/bundle/Functional/ImageVariationTest.php new file mode 100644 index 0000000..ae3c1db --- /dev/null +++ b/tests/bundle/Functional/ImageVariationTest.php @@ -0,0 +1,131 @@ +addTestSuffix(__FUNCTION__); + $fileName = '1px.png'; + $fileSize = 4718; + $fileData = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=='; + $restPrefixPath = '/api/ezp/v2'; + $body = <<< XML + + + + eng-GB + + + 0 + false + PATH + ASC + +
+ true + {$string} + + 2012-09-30T12:30:00 + + + name + eng-GB + {$string} + + + image + eng-GB + + {$fileName} + {$fileSize} + {$fileData} + + + + +XML; + $request = $this->createHttpRequest( + 'POST', + $restPrefixPath . '/content/objects', + 'ContentCreate+xml', + 'ContentInfo+json', + $body + ); + + $response = $this->sendHttpRequest($request); + + $this->assertHttpResponseCodeEquals($response, Response::HTTP_CREATED); + $this->assertHttpResponseHasHeader($response, 'Location'); + $this->assertHttpResponseHasHeader($response, 'content-type', 'application/vnd.ez.api.ContentInfo+json'); + + $href = $response->getHeader('Location')[0]; + $this->addCreatedElement($href); + + $contentInfo = json_decode((string)$response->getBody(), true, 512, JSON_THROW_ON_ERROR); + + return sprintf( + '%s/%d', $contentInfo['Content']['Versions']['_href'], $contentInfo['Content']['currentVersionNo'] + ); + } + + /** + * @depends testCreateContent + */ + public function testPublishContent(string $restContentHref): string + { + $response = $this->sendHttpRequest( + $this->createHttpRequest('PUBLISH', $restContentHref) + ); + $this->assertHttpResponseCodeEquals($response, Response::HTTP_NO_CONTENT); + + return $restContentHref; + } + + /** + * @depends testPublishContent + */ + public function testGetImageVariation(string $restVersionHref): void + { + $imageResponse = $this->sendHttpRequest( + $this->createHttpRequest( + 'GET', + $restVersionHref, + '', + 'Version+json' + ) + ); + + $jsonResponse = json_decode((string)$imageResponse->getBody(), true, 512, JSON_THROW_ON_ERROR); + $imageField = $jsonResponse['Version']['Fields']['field'][2]; + + self::assertArrayHasKey('variations', $imageField['fieldValue']); + + $variationUrl = $imageField['fieldValue']['variations']['medium']['href']; + + $variationResponse = $this->sendHttpRequest( + $this->createHttpRequest( + 'GET', + $variationUrl, + '', + 'Version+json' + ) + ); + self::assertHttpResponseCodeEquals($variationResponse, Response::HTTP_OK); + self::assertHttpResponseHasHeader( + $variationResponse, + 'content-type', + 'application/vnd.ez.api.ContentImageVariation+json' + ); + } +}