prepare v4.2.5
[m6w6/ext-http] / tests / client012.phpt
index 306f26eb9d3101c52e7538b1b44d220e4b85374d..3b1e1c0c2b9773605cb839a44f4aa693350667e3 100644 (file)
@@ -1,13 +1,19 @@
 --TEST--
 client ssl
 --SKIPIF--
-<?php 
+<?php
 include "skipif.inc";
 skip_online_test();
 skip_client_test();
+skip_curl_test("7.34.0");
+if (0 === strpos(http\Client\Curl\Versions\CURL, "7.87.0")) {
+       die("skip SSL bug in libcurl-7.87\n");
+}
+if (strpos(http\Client\Curl\Versions\SSL, "SecureTransport") !== false)
+       die("skip SecureTransport\n");
 ?>
 --FILE--
-<?php 
+<?php
 echo "Test\n";
 
 $client = new http\Client;
@@ -21,17 +27,40 @@ var_dump(
        ) === $client->getSslOptions()
 );
 
+$client->attach($observer = new class implements SplObserver {
+       public $data = [];
+
+       #[ReturnTypeWillChange]
+       function update(SplSubject $client, $req = null, $progress = null) {
+               $ti = $client->getTransferInfo($req);
+               if (isset($ti->tls_session["internals"])) {
+                       foreach ((array) $ti->tls_session["internals"] as $key => $val) {
+                               if (!isset($this->data[$key]) || $this->data[$key] < $val) {
+                                       $this->data[$key] = $val;
+                               }
+                       }
+               }
+       }
+});
+
 $client->enqueue($req = new http\Client\Request("GET", "https://twitter.com/"));
 $client->send();
 
-$ti = (array) $client->getTransferInfo($req);
-var_dump(array_key_exists("ssl_engines", $ti));
-var_dump(0 < count($ti["ssl_engines"] || $ti["tls_session"]["backend"] != "openssl"));
+switch ($client->getTransferInfo($req)->tls_session["backend"]) {
+       case "openssl":
+       case "gnutls":
+               if (count($observer->data) < 1) {
+                       printf("%s: failed count(ssl.internals) >= 1\n", $client->getTransferInfo($req)->tls_session["backend"]);
+                       var_dump($observer);
+                       exit;
+               }
+               break;
+       default:
+               break;
+}
 ?>
 Done
 --EXPECTF--
 Test
 bool(true)
-bool(true)
-bool(true)
 Done