5
1
Fork 0
mirror of https://github.com/Anvilcraft/jensmemes synced 2024-09-25 10:58:56 +02:00
jensmemes/website/api/tinify-php-master/test/TinifyClientTest.php
2020-07-21 23:07:16 +02:00

282 lines
11 KiB
PHP

<?php
use Tinify\CurlMock;
class TinifyClientTest extends TestCase {
public function testRequestWhenValidShouldIssueRequest() {
CurlMock::register("https://api.tinify.com/", array("status" => 200));
$client = new Tinify\Client("key");
$client->request("get", "/");
$this->assertSame("https://api.tinify.com/", CurlMock::last(CURLOPT_URL));
$this->assertSame("api:key", CurlMock::last(CURLOPT_USERPWD));
}
public function testRequestWhenValidShouldIssueRequestWithoutBodyWhenOptionsAreEmpty() {
CurlMock::register("https://api.tinify.com/", array("status" => 200));
$client = new Tinify\Client("key");
$client->request("get", "/", array());
$this->assertFalse(CurlMock::last_has(CURLOPT_POSTFIELDS));
}
public function testRequestWhenValidShouldIssueRequestWithoutContentTypeWhenOptionsAreEmpty() {
CurlMock::register("https://api.tinify.com/", array("status" => 200));
$client = new Tinify\Client("key");
$client->request("get", "/", array());
$this->assertFalse(CurlMock::last_has(CURLOPT_HTTPHEADER));
}
public function testRequestWhenValidShouldIssueRequestWithJSONBody() {
CurlMock::register("https://api.tinify.com/", array("status" => 200));
$client = new Tinify\Client("key");
$client->request("get", "/", array("hello" => "world"));
$this->assertSame(array("Content-Type: application/json"), CurlMock::last(CURLOPT_HTTPHEADER));
$this->assertSame('{"hello":"world"}', CurlMock::last(CURLOPT_POSTFIELDS));
}
public function testRequestWhenValidShouldIssueRequestWithUserAgent() {
CurlMock::register("https://api.tinify.com/", array("status" => 200));
$client = new Tinify\Client("key");
$client->request("get", "/");
$this->assertSame(Tinify\Client::userAgent(), CurlMock::last(CURLOPT_USERAGENT));
}
public function testRequestWhenValidShouldUpdateCompressionCount() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 200, "headers" => array("Compression-Count" => "12")
));
$client = new Tinify\Client("key");
$client->request("get", "/");
$this->assertSame(12, Tinify\getCompressionCount());
}
public function testRequestWhenValidWithAppIdShouldIssueRequestWithUserAgent() {
CurlMock::register("https://api.tinify.com/", array("status" => 200));
$client = new Tinify\Client("key", "TestApp/0.1");
$client->request("get", "/");
$this->assertSame(Tinify\Client::userAgent() . " TestApp/0.1", CurlMock::last(CURLOPT_USERAGENT));
}
public function testRequestWhenValidWithProxyShouldIssueRequestWithProxyAuthorization() {
CurlMock::register("https://api.tinify.com/", array("status" => 200));
$client = new Tinify\Client("key", NULL, "http://user:pass@localhost:8080");
$client->request("get", "/");
$this->assertSame("localhost", CurlMock::last(CURLOPT_PROXY));
$this->assertSame(8080, CurlMock::last(CURLOPT_PROXYPORT));
$this->assertSame("user:pass", CurlMock::last(CURLOPT_PROXYUSERPWD));
}
public function testRequestWithUnexpectedErrorOnceShouldReturnResponse() {
CurlMock::register("https://api.tinify.com/", array(
"error" => "Failed!", "errno" => 2
));
CurlMock::register("https://api.tinify.com/", array("status" => 201));
$client = new Tinify\Client("key");
$response = $client->request("get", "/");
$this->assertEquals("", $response->body);
}
public function testRequestWithUnexpectedErrorRepeatedlyShouldThrowConnectionException() {
CurlMock::register("https://api.tinify.com/", array(
"error" => "Failed!", "errno" => 2
));
$this->setExpectedException("Tinify\ConnectionException");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithUnexpectedErrorRepeatedlyShouldThrowExceptionWithMessage() {
CurlMock::register("https://api.tinify.com/", array(
"error" => "Failed!", "errno" => 2
));
$this->setExpectedExceptionRegExp("Tinify\ConnectionException",
"/Error while connecting: Failed! \(#2\)/");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithCurlErrorOnceShouldReturnResponse() {
CurlMock::register("https://api.tinify.com/", array(
"errno" => 7, "error" => "Something failed", "return" => null
));
CurlMock::register("https://api.tinify.com/", array("status" => 201));
$client = new Tinify\Client("key");
$response = $client->request("get", "/");
$this->assertEquals("", $response->body);
}
public function testRequestWithCurlErrorRepeatedlyShouldThrowConnectionExeption() {
CurlMock::register("https://api.tinify.com/", array(
"errno" => 7, "error" => "Something failed", "return" => null
));
$this->setExpectedException("Tinify\ConnectionException");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithCurlErrorRepeatedlyShouldThrowExceptionWithMessage() {
CurlMock::register("https://api.tinify.com/", array(
"errno" => 7, "error" => "Something failed", "return" => null
));
$this->setExpectedExceptionRegExp("Tinify\ConnectionException",
"/Error while connecting/");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithServerErrorOnceShouldReturnResponse() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 584, "body" => '{"error":"InternalServerError","message":"Oops!"}'
));
CurlMock::register("https://api.tinify.com/", array("status" => 201));
$client = new Tinify\Client("key");
$response = $client->request("get", "/");
$this->assertEquals("", $response->body);
}
public function testRequestWithServerErrorRepeatedlyShouldThrowServerException() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 584, "body" => '{"error":"InternalServerError","message":"Oops!"}'
));
$this->setExpectedException("Tinify\ServerException");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithServerErrorRepeatedlyShouldThrowExceptionWithMessage() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 584, "body" => '{"error":"InternalServerError","message":"Oops!"}'
));
$this->setExpectedExceptionRegExp("Tinify\ServerException",
"/Oops! \(HTTP 584\/InternalServerError\)/");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithBadServerResponseOnceShouldReturnResponse() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 543, "body" => '<!-- this is not json -->'
));
CurlMock::register("https://api.tinify.com/", array("status" => 201));
$client = new Tinify\Client("key");
$response = $client->request("get", "/");
$this->assertEquals("", $response->body);
}
public function testRequestWithBadServerResponseRepeatedlyShouldThrowServerException() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 543, "body" => '<!-- this is not json -->'
));
$this->setExpectedException("Tinify\ServerException");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithBadServerResponseRepeatedlyShouldThrowExceptionWithMessage() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 543, "body" => '<!-- this is not json -->'
));
if (PHP_VERSION_ID >= 50500) {
$this->setExpectedExceptionRegExp("Tinify\ServerException",
"/Error while parsing response: Syntax error \(#4\) \(HTTP 543\/ParseError\)/");
} else {
$this->setExpectedExceptionRegExp("Tinify\ServerException",
"/Error while parsing response: Error \(#4\) \(HTTP 543\/ParseError\)/");
}
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithClientErrorShouldThrowClientException() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 492, "body" => '{"error":"BadRequest","message":"Oops!"}')
);
CurlMock::register("https://api.tinify.com/", array("status" => 201));
$this->setExpectedException("Tinify\ClientException");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithClientErrorShouldThrowExceptionWithMessage() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 492, "body" => '{"error":"BadRequest","message":"Oops!"}'
));
CurlMock::register("https://api.tinify.com/", array("status" => 201));
$this->setExpectedExceptionRegExp("Tinify\ClientException",
"/Oops! \(HTTP 492\/BadRequest\)/");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithBadCredentialsShouldThrowAccountException() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 401, "body" => '{"error":"Unauthorized","message":"Oops!"}'
));
CurlMock::register("https://api.tinify.com/", array("status" => 201));
$this->setExpectedException("Tinify\AccountException");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithBadCredentialsShouldThrowExceptionWithMessage() {
CurlMock::register("https://api.tinify.com/", array(
"status" => 401, "body" => '{"error":"Unauthorized","message":"Oops!"}'
));
CurlMock::register("https://api.tinify.com/", array("status" => 201));
$this->setExpectedExceptionRegExp("Tinify\AccountException",
"/Oops! \(HTTP 401\/Unauthorized\)/");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithNoSSLCurlShouldThrowExceptionWithMessage() {
CurlMock::register("https://api.tinify.com/", array("status" => 200));
CurlMock::set_version_info_key("features", (CURL_VERSION_LIBZ | CURL_VERSION_IPV6));
$this->setExpectedException("Tinify\ClientException",
"Your curl version does not support secure connections");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
public function testRequestWithOutdatedCurlShouldThrowExceptionWithMessage() {
CurlMock::register("https://api.tinify.com/", array("status" => 200));
CurlMock::set_version_info_key("version_number", 0x070f05);
CurlMock::set_version_info_key("version", "7.15.5");
$this->setExpectedException("Tinify\ClientException",
"Your curl version 7.15.5 is outdated; please upgrade to 7.18.1 or higher");
$client = new Tinify\Client("key");
$client->request("get", "/");
}
}