oont-contents/plugins/mailpoet/vendor/mixpanel/mixpanel-php/test/ConsumerStrategies/CurlConsumerTest.php
2025-02-08 15:10:23 +01:00

115 lines
No EOL
3 KiB
PHP

<?php
if (!defined('ABSPATH')) exit;
class ConsumerStrategies_CurlConsumerTest extends PHPUnit_Framework_TestCase {
public function testSettings() {
$consumer = new CurlConsumer(array(
"host" => "localhost",
"endpoint" => "/endpoint",
"timeout" => 2,
"use_ssl" => false,
"fork" => false
));
$this->assertEquals("localhost", $consumer->getHost());
$this->assertEquals("/endpoint", $consumer->getEndpoint());
$this->assertEquals(2, $consumer->getTimeout());
$this->assertEquals("http", $consumer->getProtocol());
$this->assertEquals(false, $consumer->getFork());
}
public function testBlocking() {
$consumer = new CurlConsumer(array(
"host" => "localhost",
"endpoint" => "/endpoint",
"timeout" => 2,
"use_ssl" => true,
"fork" => false
));
$consumer->persist(array("msg"));
$this->assertEquals(1, $consumer->blockingCalls);
}
public function testForked() {
$consumer = new CurlConsumer(array(
"host" => "localhost",
"endpoint" => "/endpoint",
"timeout" => 2,
"use_ssl" => true,
"fork" => true
));
$consumer->persist(array("msg"));
$this->assertEquals(1, $consumer->forkedCalls);
}
public function testExecuteCurlFailure() {
$error_handler = new ErrorHandler();
$consumer = new ConsumerStrategies_CurlConsumer(array(
"host" => "some.domain.that.should.not.ever.exist.tld",
"endpoint" => "/endpoint",
"timeout" => 2,
"use_ssl" => false,
"fork" => false,
"error_callback" => array($error_handler, 'handle_error')
));
$resp = $consumer->persist(array("msg"));
$this->assertFalse($resp);
$this->assertEquals($error_handler->last_code, CURLE_COULDNT_RESOLVE_HOST);
}
public function testOptions() {
function callback() { }
$consumer = new ConsumerStrategies_CurlConsumer(array(
"host" => "localhost",
"endpoint" => "/endpoint",
"timeout" => 2,
"connect_timeout" => 1,
"use_ssl" => true,
"fork" => false,
"num_threads" => 5,
"error_callback" => 'callback'
));
$this->assertEquals($consumer->getHost(), "localhost");
$this->assertEquals($consumer->getEndpoint(), "/endpoint");
$this->assertEquals($consumer->getTimeout(), 2);
$this->assertEquals($consumer->getConnectTimeout(), 1);
$this->assertEquals($consumer->getProtocol(), "https");
$this->assertEquals($consumer->getNumThreads(), 5);
}
}
class ErrorHandler {
public $last_code = -1;
public $last_msg = "";
public function handle_error($code, $msg) {
$this->last_code = $code;
$this->last_msg = $msg;
}
}
class CurlConsumer extends ConsumerStrategies_CurlConsumer {
public $forkedCalls = 0;
public $blockingCalls = 0;
public function getEndpoint()
{
return $this->_endpoint;
}
public function getFork()
{
return $this->_fork;
}
public function getHost()
{
return $this->_host;
}
public function getProtocol()
{
return $this->_protocol;
}
public function getTimeout()
{
return $this->_timeout;
}
protected function _execute($url, $data)
{
$this->blockingCalls++;
return parent::_execute($url, $data);
}
protected function _execute_forked($url, $data)
{
$this->forkedCalls++;
return parent::_execute_forked($url, $data);
}
}