diff options
author | Rolf Timmermans <rolftimmermans@voormedia.com> | 2017-07-19 13:43:57 +0200 |
---|---|---|
committer | Rolf Timmermans <rolftimmermans@voormedia.com> | 2017-07-19 13:43:57 +0200 |
commit | 2ee07c4a2163005abf764ffd9080a42b3b9ef14f (patch) | |
tree | 014cdba78396d4c81f69d7adb496faf7ce1393bb | |
parent | 9d9be9513074ff4a87ea26af1b99308227163320 (diff) | |
download | tinify-php-2ee07c4a2163005abf764ffd9080a42b3b9ef14f.zip tinify-php-2ee07c4a2163005abf764ffd9080a42b3b9ef14f.tar.gz tinify-php-2ee07c4a2163005abf764ffd9080a42b3b9ef14f.tar.bz2 |
Fail with older curl/openssl combinations.
-rw-r--r-- | lib/Tinify/Client.php | 11 | ||||
-rw-r--r-- | test/TinifyClientTest.php | 23 | ||||
-rw-r--r-- | test/curl_mock.php | 25 | ||||
-rw-r--r-- | test/integration.php | 1 |
4 files changed, 60 insertions, 0 deletions
diff --git a/lib/Tinify/Client.php b/lib/Tinify/Client.php index fe0dece..cc3cce3 100644 --- a/lib/Tinify/Client.php +++ b/lib/Tinify/Client.php @@ -20,6 +20,17 @@ class Client { } function __construct($key, $app_identifier = NULL, $proxy = NULL) { + $curl = curl_version(); + + if (!($curl["features"] & CURL_VERSION_SSL)) { + throw new ClientException("Your curl version does not support secure connections"); + } + + if ($curl["version_number"] < 0x071201) { + $version = $curl["version"]; + throw new ClientException("Your curl version ${version} is outdated; please upgrade to 7.18.1 or higher"); + } + $this->options = array( CURLOPT_BINARYTRANSFER => true, CURLOPT_RETURNTRANSFER => true, diff --git a/test/TinifyClientTest.php b/test/TinifyClientTest.php index 3bfc27a..f88263a 100644 --- a/test/TinifyClientTest.php +++ b/test/TinifyClientTest.php @@ -3,6 +3,10 @@ use Tinify\CurlMock; class TinifyClientTest extends TestCase { + public function tearDown() { + CurlMock::reset_version_info(); + } + public function testRequestWhenValidShouldIssueRequest() { CurlMock::register("https://api.tinify.com/", array("status" => 200)); $client = new Tinify\Client("key"); @@ -260,4 +264,23 @@ class TinifyClientTest extends TestCase { $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", "/"); + } } diff --git a/test/curl_mock.php b/test/curl_mock.php index d02525e..dab8951 100644 --- a/test/curl_mock.php +++ b/test/curl_mock.php @@ -8,11 +8,32 @@ class CurlMockException extends Exception { class CurlMock { private static $urls = array(); private static $requests = array(); + private static $version = array(); public $options = array(); public $response; public $closed = false; + public static function version_info() { + if (empty(self::$version)) { + self::reset_version_info(); + } + + return self::$version; + } + + public static function reset_version_info() { + self::$version = array( + "version_number" => 471808, + "version" => "7.51.0", + "features" => 951197, + ); + } + + public static function set_version_info_key($key, $value) { + self::$version[$key] = $value; + } + public static function register($url, $request, $response = NULL) { if (!$response) { $response = $request; @@ -138,6 +159,10 @@ class CurlMock { } } +function curl_version() { + return CurlMock::version_info(); +} + function curl_init() { return new CurlMock(); } diff --git a/test/integration.php b/test/integration.php index 746a124..2682bd3 100644 --- a/test/integration.php +++ b/test/integration.php @@ -10,6 +10,7 @@ class ClientIntegrationTest extends PHPUnit_Framework_TestCase { static public function setUpBeforeClass() { \Tinify\setKey(getenv("TINIFY_KEY")); \Tinify\setProxy(getenv("TINIFY_PROXY")); + \Tinify\validate(); $unoptimizedPath = __DIR__ . "/examples/voormedia.png"; self::$optimized = \Tinify\fromFile($unoptimizedPath); |