mirror of
https://github.com/retailcrm/Fetch.git
synced 2024-11-22 11:16:03 +03:00
Merge pull request #17 from abimus/fix/flags
Fix behavior on Server::setFlag()
This commit is contained in:
commit
12f147bfd2
20
phpunit.xml.dist
Normal file
20
phpunit.xml.dist
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<phpunit backupGlobals="false"
|
||||||
|
backupStaticAttributes="false"
|
||||||
|
colors="true"
|
||||||
|
convertErrorsToExceptions="true"
|
||||||
|
convertNoticesToExceptions="true"
|
||||||
|
convertWarningsToExceptions="true"
|
||||||
|
processIsolation="false"
|
||||||
|
stopOnFailure="false"
|
||||||
|
syntaxCheck="false"
|
||||||
|
bootstrap="tests/bootstrap.php"
|
||||||
|
>
|
||||||
|
|
||||||
|
<testsuites>
|
||||||
|
<testsuite name="Fetch Test Suite">
|
||||||
|
<directory>./tests</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
</phpunit>
|
@ -179,21 +179,27 @@ class Server
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (isset(self::$exclusiveFlags[$flag])) {
|
if (isset(self::$exclusiveFlags[$flag])) {
|
||||||
$kill = $flag;
|
$kill = self::$exclusiveFlags[$flag];
|
||||||
} elseif ($index = array_search($flag, self::$exclusiveFlags)) {
|
} elseif ($index = array_search($flag, self::$exclusiveFlags)) {
|
||||||
$kill = $index;
|
$kill = $index;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($kill) && isset($this->flags[$kill]))
|
if (isset($kill) && false !== $index = array_search($kill, $this->flags))
|
||||||
unset($this->flags[$kill]);
|
unset($this->flags[$index]);
|
||||||
|
|
||||||
|
$index = array_search($flag, $this->flags);
|
||||||
if (isset($value) && $value !== true) {
|
if (isset($value) && $value !== true) {
|
||||||
if ($value == false) {
|
if ($value == false && $index !== false) {
|
||||||
unset($this->flags[$flag]);
|
unset($this->flags[$index]);
|
||||||
} else {
|
} elseif ($value != false) {
|
||||||
$this->flags[] = $flag . '=' . $value;
|
$match = preg_grep('/' . $flag . '/', $this->flags);
|
||||||
|
if (reset($match)) {
|
||||||
|
$this->flags[key($match)] = $flag . '=' . $value;
|
||||||
|
} else {
|
||||||
|
$this->flags[] = $flag . '=' . $value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} elseif ($index === false) {
|
||||||
$this->flags[] = $flag;
|
$this->flags[] = $flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
namespace Fetch\Test;
|
namespace Fetch\Test;
|
||||||
|
|
||||||
|
use Fetch\Server;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @package Fetch
|
* @package Fetch
|
||||||
@ -18,5 +19,39 @@ namespace Fetch\Test;
|
|||||||
*/
|
*/
|
||||||
class ServerTest extends \PHPUnit_Framework_TestCase
|
class ServerTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider flagsDataProvider
|
||||||
|
* @param string $expected server string with %host% placeholder
|
||||||
|
* @param integer $port to use (needed to test behavior on port 143 and 993 from constructor)
|
||||||
|
* @param array $flags to set/unset ($flag => $value)
|
||||||
|
*/
|
||||||
|
public function testFlags($expected, $port, $flags)
|
||||||
|
{
|
||||||
|
$host = 'example.com';
|
||||||
|
$server = new Server($host, $port);
|
||||||
|
|
||||||
|
foreach ($flags as $flag => $value) {
|
||||||
|
$server->setFlag($flag, $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->assertEquals(str_replace('%host%', $host, $expected), $server->getServerString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function flagsDataProvider() {
|
||||||
|
return array(
|
||||||
|
array('{%host%:143/novalidate-cert}', 143, array()),
|
||||||
|
array('{%host%:143/validate-cert}', 143, array('validate-cert' => true)),
|
||||||
|
array('{%host%:143}', 143, array('novalidate-cert' => false)),
|
||||||
|
array('{%host%:993/ssl}', 993, array()),
|
||||||
|
array('{%host%:993}', 993, array('ssl' => false)),
|
||||||
|
array('{%host%:100/tls}', 100, array('tls' => true)),
|
||||||
|
array('{%host%:100/tls}', 100, array('tls' => true, 'tls' => true)),
|
||||||
|
array('{%host%:100/notls}', 100, array('tls' => true, 'notls' => true)),
|
||||||
|
array('{%host%:100}', 100, array('ssl' => true, 'ssl' => false)),
|
||||||
|
array('{%host%:100/user=foo}', 100, array('user' => 'foo')),
|
||||||
|
array('{%host%:100/user=foo}', 100, array('user' => 'foo', 'user' => 'foo')),
|
||||||
|
array('{%host%:100/user=bar}', 100, array('user' => 'foo', 'user' => 'bar')),
|
||||||
|
array('{%host%:100}', 100, array('user' => 'foo', 'user' => false)),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user