summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRolf Timmermans <rolftimmermans@voormedia.com>2017-07-19 13:43:57 +0200
committerRolf Timmermans <rolftimmermans@voormedia.com>2017-07-19 13:43:57 +0200
commit2ee07c4a2163005abf764ffd9080a42b3b9ef14f (patch)
tree014cdba78396d4c81f69d7adb496faf7ce1393bb
parent9d9be9513074ff4a87ea26af1b99308227163320 (diff)
downloadtinify-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.php11
-rw-r--r--test/TinifyClientTest.php23
-rw-r--r--test/curl_mock.php25
-rw-r--r--test/integration.php1
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);