diff --git a/phpunit.xml.dist b/phpunit.xml.dist
new file mode 100644
index 0000000..9e844c9
--- /dev/null
+++ b/phpunit.xml.dist
@@ -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>
diff --git a/tests/Fetch/Test/ServerTest.php b/tests/Fetch/Test/ServerTest.php
index 24140fe..6514cca 100644
--- a/tests/Fetch/Test/ServerTest.php
+++ b/tests/Fetch/Test/ServerTest.php
@@ -11,6 +11,7 @@
 
 namespace Fetch\Test;
 
+use Fetch\Server;
 
 /**
  * @package Fetch
@@ -18,5 +19,39 @@ namespace Fetch\Test;
  */
 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)),
+        );
+    }
 }