5
1
Fork 0
mirror of https://github.com/Anvilcraft/jensmemes synced 2024-11-13 21:41:27 +01:00
jensmemes/website/api/tinify-php-master/test/TinifySourceTest.php
2020-07-22 15:27:17 +02:00

318 lines
13 KiB
PHP

<?php
use Tinify\CurlMock;
class TinifySourceTest extends TestCase {
private $dummyFile;
public function setUp() {
parent::setUp();
$this->dummyFile = __DIR__ . "/examples/dummy.png";
}
public function testWithInvalidApiKeyFromFileShouldThrowAccountException() {
Tinify\setKey("invalid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 401, "body" => '{"error":"Unauthorized","message":"Credentials are invalid"}'
));
$this->setExpectedException("Tinify\AccountException");
Tinify\Source::fromFile($this->dummyFile);
}
public function testWithInvalidApiKeyFromBufferShouldThrowAccountException() {
Tinify\setKey("invalid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 401, "body" => '{"error":"Unauthorized","message":"Credentials are invalid"}'
));
$this->setExpectedException("Tinify\AccountException");
Tinify\Source::fromBuffer("png file");
}
public function testWithInvalidApiKeyFromUrlShouldThrowAccountException() {
Tinify\setKey("invalid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 401, "body" => '{"error":"Unauthorized","message":"Credentials are invalid"}'
));
$this->setExpectedException("Tinify\AccountException");
Tinify\Source::fromUrl("http://example.com/test.jpg");
}
public function testWithValidApiKeyFromFileShouldReturnSource() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
$this->assertInstanceOf("Tinify\Source", Tinify\Source::fromFile($this->dummyFile));
}
public function testWithValidApiKeyFromFileShouldReturnSourceWithData() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "compressed file"
));
$this->assertSame("compressed file", Tinify\Source::fromFile($this->dummyFile)->toBuffer());
}
public function testWithValidApiKeyFromBufferShouldReturnSource() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
$this->assertInstanceOf("Tinify\Source", Tinify\Source::fromBuffer("png file"));
}
public function testWithValidApiKeyFromBufferShouldReturnSourceWithData() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "compressed file"
));
$this->assertSame("compressed file", Tinify\Source::fromBuffer("png file")->toBuffer());
}
public function testWithValidApiKeyFromUrlShouldReturnSource() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
$this->assertInstanceOf("Tinify\Source", Tinify\Source::fromUrl("http://example.com/testWithValidApiKey.jpg"));
}
public function testWithValidApiKeyFromUrlShouldReturnSourceWithData() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "compressed file"
));
$this->assertSame("compressed file", Tinify\Source::fromUrl("http://example.com/testWithValidApiKey.jpg")->toBuffer());
}
public function testWithValidApiKeyFromUrlShouldThrowExceptionIfRequestIsNotOK() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 400, "body" => '{"error":"Source not found","message":"Cannot parse URL"}'
));
$this->setExpectedException("Tinify\ClientException");
Tinify\Source::fromUrl("file://wrong");
}
public function testWithValidApiKeyResultShouldReturnResult() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201,
"headers" => array("Location" => "https://api.tinify.com/some/location"),
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "compressed file"
));
$this->assertInstanceOf("Tinify\Result", Tinify\Source::fromBuffer("png file")->result());
}
public function testWithValidApiKeyPreserveShouldReturnSource() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "copyrighted file"
));
$this->assertInstanceOf("Tinify\Source", Tinify\Source::fromBuffer("png file")->preserve("copyright", "location"));
$this->assertSame("png file", CurlMock::last(CURLOPT_POSTFIELDS));
}
public function testWithValidApiKeyPreserveShouldReturnSourceWithData() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "copyrighted file"
));
$this->assertSame("copyrighted file", Tinify\Source::fromBuffer("png file")->preserve("copyright", "location")->toBuffer());
$this->assertSame("{\"preserve\":[\"copyright\",\"location\"]}", CurlMock::last(CURLOPT_POSTFIELDS));
}
public function testWithValidApiKeyPreserveShouldReturnSourceWithDataForArray() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "copyrighted file"
));
$this->assertSame("copyrighted file", Tinify\Source::fromBuffer("png file")->preserve(array("copyright", "location"))->toBuffer());
$this->assertSame("{\"preserve\":[\"copyright\",\"location\"]}", CurlMock::last(CURLOPT_POSTFIELDS));
}
public function testWithValidApiKeyPreserveShouldIncludeOtherOptionsIfSet() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "copyrighted resized file"
));
$source = Tinify\Source::fromBuffer("png file")->resize(array("width" => 400))->preserve(array("copyright", "location"));
$this->assertSame("copyrighted resized file", $source->toBuffer());
$this->assertSame("{\"resize\":{\"width\":400},\"preserve\":[\"copyright\",\"location\"]}", CurlMock::last(CURLOPT_POSTFIELDS));
}
public function testWithValidApiKeyResizeShouldReturnSource() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "small file"
));
$this->assertInstanceOf("Tinify\Source", Tinify\Source::fromBuffer("png file")->resize(array("width" => 400)));
$this->assertSame("png file", CurlMock::last(CURLOPT_POSTFIELDS));
}
public function testWithValidApiKeyResizeShouldReturnSourceWithData() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "small file"
));
$this->assertSame("small file", Tinify\Source::fromBuffer("png file")->resize(array("width" => 400))->toBuffer());
$this->assertSame("{\"resize\":{\"width\":400}}", CurlMock::last(CURLOPT_POSTFIELDS));
}
public function testWithValidApiKeyStoreShouldReturnResultMeta() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201,
"headers" => array("Location" => "https://api.tinify.com/some/location"),
));
CurlMock::register("https://api.tinify.com/some/location", array(
"body" => '{"store":{"service":"s3","aws_secret_access_key":"abcde"}}'
), array("status" => 200));
$options = array("service" => "s3", "aws_secret_access_key" => "abcde");
$this->assertInstanceOf("Tinify\Result", Tinify\Source::fromBuffer("png file")->store($options));
$this->assertSame("{\"store\":{\"service\":\"s3\",\"aws_secret_access_key\":\"abcde\"}}", CurlMock::last(CURLOPT_POSTFIELDS));
}
public function testWithValidApiKeyStoreShouldReturnResultMetaWithLocation() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201,
"headers" => array("Location" => "https://api.tinify.com/some/location"),
));
CurlMock::register("https://api.tinify.com/some/location", array(
"body" => '{"store":{"service":"s3"}}'
), array(
"status" => 201,
"headers" => array("Location" => "https://bucket.s3.amazonaws.com/example"),
));
$location = Tinify\Source::fromBuffer("png file")->store(array("service" => "s3"))->location();
$this->assertSame("https://bucket.s3.amazonaws.com/example", $location);
$this->assertSame("{\"store\":{\"service\":\"s3\"}}", CurlMock::last(CURLOPT_POSTFIELDS));
}
public function testWithValidApiKeyStoreShouldIncludeOtherOptionsIfSet() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201,
"headers" => array("Location" => "https://api.tinify.com/some/location"),
));
CurlMock::register("https://api.tinify.com/some/location", array(
"body" => '{"resize":{"width":300},"store":{"service":"s3","aws_secret_access_key":"abcde"}}'
), array("status" => 200));
$options = array("service" => "s3", "aws_secret_access_key" => "abcde");
$this->assertInstanceOf("Tinify\Result", Tinify\Source::fromBuffer("png file")->resize(array("width" => 300))->store($options));
$this->assertSame("{\"resize\":{\"width\":300},\"store\":{\"service\":\"s3\",\"aws_secret_access_key\":\"abcde\"}}", CurlMock::last(CURLOPT_POSTFIELDS));
}
public function testWithValidApiKeyToBufferShouldReturnImageData() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "compressed file"
));
$this->assertSame("compressed file", Tinify\Source::fromBuffer("png file")->toBuffer());
}
public function testWithValidApiKeyToFileShouldStoreImageData() {
Tinify\setKey("valid");
CurlMock::register("https://api.tinify.com/shrink", array(
"status" => 201, "headers" => array("Location" => "https://api.tinify.com/some/location")
));
CurlMock::register("https://api.tinify.com/some/location", array(
"status" => 200, "body" => "compressed file"
));
$path = tempnam(sys_get_temp_dir(), "tinify-php");
Tinify\Source::fromBuffer("png file")->toFile($path);
$this->assertSame("compressed file", file_get_contents($path));
}
}