Fix the Kolab_Session factories now that the Kolab_Server factories are complete...
authorGunnar Wrobel <p@rdus.de>
Wed, 28 Oct 2009 21:39:42 +0000 (22:39 +0100)
committerGunnar Wrobel <p@rdus.de>
Wed, 28 Oct 2009 21:41:17 +0000 (22:41 +0100)
framework/Kolab_Session/lib/Horde/Kolab/Session/Factory/Configuration.php
framework/Kolab_Session/lib/Horde/Kolab/Session/Factory/Default.php
framework/Kolab_Session/lib/Horde/Kolab/Session/Factory/Injector.php
framework/Kolab_Session/lib/Horde/Kolab/Session/Singleton.php
framework/Kolab_Session/test/Horde/Kolab/Session/Class/Factory/ConfigurationTest.php
framework/Kolab_Session/test/Horde/Kolab/Session/Class/Factory/DefaultTest.php
framework/Kolab_Session/test/Horde/Kolab/Session/Class/Factory/InjectorTest.php
framework/Kolab_Session/test/Horde/Kolab/Session/Class/SingletonTest.php
framework/Kolab_Session/test/Horde/Kolab/Session/Integration/SessionTest.php [new file with mode: 0644]
framework/Kolab_Session/test/Horde/Kolab/Session/SessionTest.php [deleted file]

index 52d8864..382f337 100644 (file)
@@ -47,12 +47,28 @@ implements Horde_Kolab_Session_Factory
      *
      * @param array $config Configuration parameters for the session.
      */
-    public function __construct(
-        Horde_Kolab_Session_Factory $factory,
-        array $config
-    ) {
+    public function __construct(array $config)
+    {
         $this->_configuration = $config;
 
+        if (isset($config['server'])) {
+            $server_configuration = $config['server'];
+        } elseif (isset($config['ldap'])) {
+            $server_configuration = $config['ldap'];
+        } else {
+            throw new Horde_Kolab_Session_Exception(
+                'The server configuration is missing!'
+            );
+        }
+
+        $server_factory = new Horde_Kolab_Server_Factory_Configuration(
+            $server_configuration
+        );
+
+        $factory = new Horde_Kolab_Session_Factory_Default(
+            $config, $server_factory
+        );
+
         if (isset($config['logger'])) {
             $factory = new Horde_Kolab_Session_Factory_Logged(
                 $factory, $config['logger']
index 4150c4f..5c6d365 100644 (file)
@@ -65,7 +65,7 @@ extends Horde_Kolab_Session_Factory_Base
      */
     public function getServer()
     {
-        return $this->_server_factory->getServer();
+        return $this->_server_factory->getComposite();
     }
 
     /**
index 2da569f..161919d 100644 (file)
@@ -90,9 +90,10 @@ extends Horde_Kolab_Session_Factory_Base
      */
     private function _setupStorage()
     {
-        $this->_injector->bindImplementation(
+        $this->_injector->bindFactory(
             'Horde_Kolab_Session_Storage',
-            'Horde_Kolab_Session_Storage_Sessionobjects'
+            'Horde_Kolab_Session_Factory_Injector',
+            'getStorage'
         );
     }
 
@@ -123,13 +124,34 @@ extends Horde_Kolab_Session_Factory_Base
     }
 
     /**
+     * A helper method to seed the injector with a Horde_Kolab_Server factory
+     * definition. This should usually be done by an external setup method
+     * before constructing the session injcetion factory.
+     *
+     * @parm Horde_Injector 
+     *
+     * @return NULL
+     */
+    static public function setupMockServerFactory(
+        Horde_Injector $injector
+    ) {
+        Horde_Kolab_Server_Factory_Injector::setup(
+            'Horde_Kolab_Server_Factory_Conn_Mock',
+            array('basedn' => ''),
+            $injector
+        );
+        /** Setup the injector by constructing the server factory */
+        $injector->getInstance('Horde_Kolab_Server_Factory_Injector');
+    }
+
+    /**
      * Return the kolab user db connection.
      *
      * @return Horde_Kolab_Server The server connection.
      */
     public function getServer()
     {
-        return $this->_injector->getInstance('Horde_Kolab_Server');
+        return $this->_injector->getInstance('Horde_Kolab_Server_Composite');
     }
 
     /**
@@ -159,6 +181,9 @@ extends Horde_Kolab_Session_Factory_Base
      */
     public function getSessionStorage()
     {
-        return $this->_injector->getInstance('Horde_Kolab_Session_Storage');
+        $storage = new Horde_Kolab_Session_Storage_Sessionobjects(
+            Horde_SessionObjects::singleton()
+        );
+        return $storage;
     }
 }
index edef55c..e060043 100644 (file)
@@ -56,14 +56,10 @@ class Horde_Kolab_Session_Singleton
         global $conf;
 
         if (!isset(self::$_instance)) {
+            $config            = $conf['kolab'];
             $config['logger']  = Horde::getLogger();
-            $config['server']  = $conf['kolab']['server'];
-            $server_factory = new Horde_Kolab_Server_Factory_Default($config);
-            $server_factory = new Horde_Kolab_Server_Factory_Configuration($server_factory, $config);
-            $factory = new Horde_Kolab_Session_Factory_Default($config, $server_factory);
-            $factory = new Horde_Kolab_Session_Factory_Configuration($factory, $config);
+            $factory = new Horde_Kolab_Session_Factory_Configuration($config);
             self::$_instance = $factory->getSession($user);
-            self::$_instance->connect($credentials);
         }
         return self::$_instance;
     }
index 69a2aea..7a65610 100644 (file)
@@ -38,21 +38,31 @@ class Horde_Kolab_Session_Class_Factory_ConfigurationTest extends Horde_Kolab_Se
         $this->setupLogger();
     }
 
+    public function testMethodConstructThrowsExceptionIfTheServerConfigurationIsMissing()
+    {
+        try {
+            $factory = new Horde_Kolab_Session_Factory_Configuration(array());
+            $this->fail('No exception!');
+        } catch (Horde_Kolab_Session_Exception $e) {
+            $this->assertEquals(
+                'The server configuration is missing!',
+                $e->getMessage()
+            );
+        }
+    }
+
     public function testMethodCreatesessionHasResultHordekolabsessionanonymousIfConfiguredThatWay()
     {
-        $session = $this->getMock('Horde_Kolab_Session');
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('createSession')
-            ->will($this->returnValue($session));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory,
             array(
                 'session' => array(
                     'anonymous' => array(
                         'user' => 'anonymous',
                         'pass' => ''
                     )
+                ),
+                'server' => array(
+                    'basedn' => ''
                 )
             )
         );
@@ -64,13 +74,13 @@ class Horde_Kolab_Session_Class_Factory_ConfigurationTest extends Horde_Kolab_Se
 
     public function testMethodCreatesessionHasResultHordekolabsessionloggedIfConfiguredThatWay()
     {
-        $session = $this->getMock('Horde_Kolab_Session');
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('createSession')
-            ->will($this->returnValue($session));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory, array('logger' => $this->logger)
+            array(
+                'logger' => $this->logger,
+                'server' => array(
+                    'basedn' => ''
+                )
+            )
         );
         $this->assertType(
             'Horde_Kolab_Session_Logged',
@@ -82,13 +92,13 @@ class Horde_Kolab_Session_Class_Factory_ConfigurationTest extends Horde_Kolab_Se
     {
         $session = $this->getMock('Horde_Kolab_Session');
         $auth = $this->getMock('Horde_Kolab_Session_Auth');
-        $validator = $this->getMock('Horde_Kolab_Session_Valid');
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('getSessionValidator')
-            ->will($this->returnValue($validator));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory,  array('logger' => $this->logger)
+            array(
+                'logger' => $this->logger,
+                'server' => array(
+                    'basedn' => ''
+                )
+            )
         );
         $this->assertType(
             'Horde_Kolab_Session_Valid_Logged',
@@ -96,28 +106,29 @@ class Horde_Kolab_Session_Class_Factory_ConfigurationTest extends Horde_Kolab_Se
         );
     }
 
-    public function testMethodGetserverGetsDelegated()
+    public function testMethodGetserverHasResultServercomposite()
     {
-        $server = $this->getMock('Horde_Kolab_Server');
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('getServer')
-            ->will($this->returnValue($server));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory, array()
+            array(
+                'server' => array(
+                    'basedn' => ''
+                )
+            )
+        );
+        $this->assertType(
+            'Horde_Kolab_Server_Composite',
+            $factory->getServer()
         );
-        $this->assertType('Horde_Kolab_Server', $factory->getServer());
     }
 
-    public function testMethodGetsessionauthGetsDelegated()
+    public function testMethodGetsessionauthHasResultSessionauth()
     {
-        $auth = $this->getMock('Horde_Kolab_Session_Auth');
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('getSessionAuth')
-            ->will($this->returnValue($auth));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory, array()
+            array(
+                'server' => array(
+                    'basedn' => ''
+                )
+            )
         );
         $this->assertType(
             'Horde_Kolab_Session_Auth',
@@ -125,27 +136,26 @@ class Horde_Kolab_Session_Class_Factory_ConfigurationTest extends Horde_Kolab_Se
         );
     }
 
-    public function testMethodGetsessionconfigurationGetsDelegated()
+    public function testMethodGetsessionconfigurationHasResultArray()
     {
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('getSessionConfiguration')
-            ->will($this->returnValue(array()));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory, array()
+            array(
+                'server' => array(
+                    'basedn' => ''
+                )
+            )
         );
         $this->assertType('array', $factory->getSessionConfiguration());
     }
 
-    public function testMethodGetsessionstorageGetsDelegated()
+    public function testMethodGetsessionstorageHasresultSessionstorage()
     {
-        $storage = $this->getMock('Horde_Kolab_Session_Storage');
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('getSessionStorage')
-            ->will($this->returnValue($storage));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory, array()
+            array(
+                'server' => array(
+                    'basedn' => ''
+                )
+            )
         );
         $this->assertType(
             'Horde_Kolab_Session_Storage',
@@ -153,17 +163,16 @@ class Horde_Kolab_Session_Class_Factory_ConfigurationTest extends Horde_Kolab_Se
         );
     }
 
-    public function testMethodGetsessionvalidatorGetsDelegated()
+    public function testMethodGetsessionvalidatorHasResultSessionvalid()
     {
         $session = $this->getMock('Horde_Kolab_Session');
         $auth = $this->getMock('Horde_Kolab_Session_Auth');
-        $validator = $this->getMock('Horde_Kolab_Session_Valid');
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('getSessionValidator')
-            ->will($this->returnValue($validator));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory, array()
+            array(
+                'server' => array(
+                    'basedn' => ''
+                )
+            )
         );
         $this->assertType(
             'Horde_Kolab_Session_Valid',
@@ -171,41 +180,39 @@ class Horde_Kolab_Session_Class_Factory_ConfigurationTest extends Horde_Kolab_Se
         );
     }
 
-    public function testMethodValidateGetsDelegated()
+    public function testMethodValidateHasResultBooleanTrueIfTheSessionIsStillValid()
     {
         $session = $this->getMock('Horde_Kolab_Session');
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('validate')
-            ->will($this->returnValue(true));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory, array()
+            array(
+                'server' => array(
+                    'basedn' => ''
+                )
+            )
         );
-        $this->assertTrue($factory->validate($session, 'test'));
+        $this->assertTrue($factory->validate($session, ''));
     }
 
-    public function testMethodCreatesessionGetsDelegated()
+    public function testMethodCreatesessionHasResultSession()
     {
-        $session = $this->getMock('Horde_Kolab_Session');
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('createSession')
-            ->will($this->returnValue($session));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory, array()
+            array(
+                'server' => array(
+                    'basedn' => ''
+                )
+            )
         );
         $this->assertType('Horde_Kolab_Session', $factory->createSession());
     }
 
-    public function testMethodGetsessionGetsDelegated()
+    public function testMethodGetsessionHasResultSession()
     {
-        $session = $this->getMock('Horde_Kolab_Session');
-        $factory = $this->getMock('Horde_Kolab_Session_Factory');
-        $factory->expects($this->once())
-            ->method('getSession')
-            ->will($this->returnValue($session));
         $factory = new Horde_Kolab_Session_Factory_Configuration(
-            $factory, array()
+            array(
+                'server' => array(
+                    'basedn' => ''
+                )
+            )
         );
         $this->assertType('Horde_Kolab_Session', $factory->getSession());
     }
index d6c856c..a2fc27d 100644 (file)
@@ -34,17 +34,18 @@ class Horde_Kolab_Session_Class_Factory_DefaultTest extends Horde_Kolab_Session_
 {
     public function testMethodGetserverHasResultHordekolabserver()
     {
-        $this->markTestIncomplete('The factory in the Kolab_Server package needs to be fixed.');
-        $server = $this->getMock('Horde_Kolab_Server');
+        $server = $this->getMock(
+            'Horde_Kolab_Server_Composite', array(), array(), '', false, false
+        );
         $server_factory = $this->getMock('Horde_Kolab_Server_Factory');
         $server_factory->expects($this->once())
-            ->method('getServer')
+            ->method('getComposite')
             ->will($this->returnValue($server));
         $factory = new Horde_Kolab_Session_Factory_Default(
             array('server' => array()),
             $server_factory
         );
-        $this->assertType('Horde_Kolab_Server', $factory->getServer());
+        $this->assertType('Horde_Kolab_Server_Composite', $factory->getServer());
     }
 
     public function testMethodGetsessionauthHasResultHordekolabsessionauth()
index a6ec495..a5fab4a 100644 (file)
@@ -35,7 +35,7 @@ class Horde_Kolab_Session_Class_Factory_InjectorTest extends Horde_Kolab_Session
     public function setUp()
     {
         $this->injector = new Horde_Injector(new Horde_Injector_TopLevel());
-        $this->markTestIncomplete('This needs an injector factory in the Kolab_Server package.');
+        Horde_Kolab_Session_Factory_Injector::setupMockServerFactory($this->injector);
     }
 
     public function testMethodGetserverHasResultHordekolabserver()
@@ -43,7 +43,7 @@ class Horde_Kolab_Session_Class_Factory_InjectorTest extends Horde_Kolab_Session
         $factory = new Horde_Kolab_Session_Factory_Injector(
             array('server' => array()), $this->injector
         );
-        $this->assertType('Horde_Kolab_Server', $factory->getServer());
+        $this->assertType('Horde_Kolab_Server_Composite', $factory->getServer());
     }
 
     public function testMethodGetsessionauthHasResultHordekolabsessionauth()
index f9969cb..bf12f46 100644 (file)
@@ -32,9 +32,16 @@ require_once dirname(__FILE__) . '/../Autoload.php';
  */
 class Horde_Kolab_Session_Class_SingletonTest extends Horde_Kolab_Session_SessionTestCase
 {
+    public function setUp()
+    {
+        global $conf;
+
+        /** Provide a minimal configuration for the server */
+        $conf['kolab']['ldap']['basedn'] = '';
+    }
+
     public function testMethodSingletonHasResultHordekolabsession()
     {
-        $this->markTestIncomplete('The factory in the Kolab_Server package needs to be fixed.');
         $this->assertType(
             'Horde_Kolab_Session',
             Horde_Kolab_Session_Singleton::singleton(
@@ -45,7 +52,6 @@ class Horde_Kolab_Session_Class_SingletonTest extends Horde_Kolab_Session_Sessio
 
     public function testMethodSingletonHasResultHordekolabsessionAlwaysTheSameIfTheSessionIsValid()
     {
-        $this->markTestIncomplete('The factory in the Kolab_Server package needs to be fixed.');
         $session1 = Horde_Kolab_Session_Singleton::singleton(
             'user', array('password' => 'pass')
         );
diff --git a/framework/Kolab_Session/test/Horde/Kolab/Session/Integration/SessionTest.php b/framework/Kolab_Session/test/Horde/Kolab/Session/Integration/SessionTest.php
new file mode 100644 (file)
index 0000000..f56009e
--- /dev/null
@@ -0,0 +1,222 @@
+<?php
+/**
+ * Test the Kolab session handler.
+ *
+ * PHP version 5
+ *
+ * @category Kolab
+ * @package  Kolab_Session
+ * @author   Gunnar Wrobel <wrobel@pardus.de>
+ * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link     http://pear.horde.org/index.php?package=Kolab_Session
+ */
+
+/**
+ * Prepare the test setup.
+ */
+require_once dirname(__FILE__) . '/Autoload.php';
+
+/**
+ * Test the Kolab session handler.
+ *
+ * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @category Kolab
+ * @package  Kolab_Session
+ * @author   Gunnar Wrobel <wrobel@pardus.de>
+ * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link     http://pear.horde.org/index.php?package=Kolab_Session
+ */
+class Horde_Kolab_Session_Integration_SessionTest extends Horde_Kolab_Session_SessionTestCase
+{
+    /**
+     * Setup function.
+     *
+     * @return NULL.
+     */
+    protected function setUp()
+    {
+        $this->markTestIncomplete('Needs to be fixed');
+    }
+
+    /**
+     * Test class construction.
+     *
+     * @return NULL
+     */
+    public function testConstructEmpty()
+    {
+        global $conf;
+        $conf['kolab']['imap']['allow_special_users'] = true;
+
+        $session = Horde_Kolab_Session::singleton();
+
+        $this->assertEquals('anonymous', $session->user_mail);
+
+        $params = $session->getImapParams();
+        $this->assertNoError($params);
+        $this->assertEquals('localhost', $params['hostspec']);
+        $this->assertEquals(143, $params['port']);
+    }
+
+    /**
+     * Test old style class construction.
+     *
+     * @return NULL
+     */
+    public function testConstructSimple()
+    {
+        global $conf;
+        $conf['kolab']['imap']['server']     = 'example.com';
+        $conf['kolab']['imap']['port']       = 200;
+        $conf['kolab']['freebusy']['server'] = 'fb.example.com';
+
+        $session = new Horde_Kolab_Session();
+        $params  = $session->getImapParams();
+        if (is_a($params, 'PEAR_Error')) {
+            $this->assertEquals('', $params->getMessage());
+        }
+        $this->assertEquals('example.com', $params['hostspec']);
+        $this->assertEquals(200, $params['port']);
+    }
+
+    /**
+     * Test IMAP server retrieval.
+     *
+     * @return NULL
+     */
+    public function testGetSession()
+    {
+        $this->markTestSkipped();
+        $server = &$this->prepareEmptyKolabServer();
+        $result = $server->add($this->provideBasicUserTwo());
+        $this->assertNoError($result);
+        $this->assertEquals(1, count($GLOBALS['KOLAB_SERVER_TEST_DATA']));
+
+        $session = Horde_Kolab_Session::singleton('test',
+                                                  array('password' => 'test'));
+
+        $this->assertNoError($session->auth);
+        $this->assertEquals('test@example.org', $session->user_mail);
+
+        $params = $session->getImapParams();
+        $this->assertNoError($params);
+        $this->assertEquals('home.example.org', $params['hostspec']);
+        $this->assertEquals(143, $params['port']);
+        $this->assertEquals('test@example.org', $session->user_mail);
+
+        $session->shutdown();
+
+        $hs = Horde_SessionObjects::singleton();
+
+        $recovered_session = &$hs->query('kolab_session');
+        $params            = $recovered_session->getImapParams();
+        $this->assertNoError($params);
+        $this->assertEquals('home.example.org', $params['hostspec']);
+        $this->assertEquals(143, $params['port']);
+        $this->assertEquals('test@example.org', $session->user_mail);
+
+        $this->assertEquals('https://fb.example.org/freebusy', $session->freebusy_server);
+    }
+
+    /**
+     * Test retrieving the FreeBusy server for the unauthenticated state.
+     *
+     * @return NULL
+     */
+    public function testGetFreeBusySession()
+    {
+        $this->markTestSkipped();
+        $server = $this->prepareEmptyKolabServer();
+        $result = $server->add($this->provideBasicUserTwo());
+        $this->assertNoError($result);
+        $session = Horde_Kolab_Session::singleton();
+        $this->assertEquals('', $session->freebusy_server);
+    }
+
+    /**
+     * Test group based login allow implemention.
+     *
+     * @return NULL
+     */
+    public function testLoginAllow()
+    {
+        global $conf;
+        $conf['kolab']['server']['allow_group'] = 'group2@example.org';
+        $conf['kolab']['server']['deny_group'] = null;
+
+        $this->markTestSkipped();
+        $server = &$this->prepareEmptyKolabServer();
+        $result = $server->add($this->provideBasicUserOne());
+        $this->assertNoError($result);
+        $result = $server->add($this->provideBasicUserTwo());
+        $this->assertNoError($result);
+        $groups = $this->validGroups();
+        foreach ($groups as $group) {
+            $result = $server->add($group[0]);
+            $this->assertNoError($result);
+        }
+
+        $session = Horde_Kolab_Session::singleton('wrobel',
+                                                  array('password' => 'none'),
+                                                  true);
+
+        $this->assertNoError($session->auth);
+        $this->assertEquals('wrobel@example.org', $session->user_mail);
+
+        try {
+            $session = Horde_Kolab_Session::singleton('test',
+                                                      array('password' => 'test'),
+                                                      true);
+        } catch (Horde_Kolab_Session_Exception $e) {
+            $this->assertError($e, 'You are no member of a group that may login on this server.');
+        }
+        // FIXME: Ensure that the session gets overwritten
+        //$this->assertTrue(empty($session->user_mail));
+    }
+
+    /**
+     * Test group based login deny implemention.
+     *
+     * @return NULL
+     */
+    public function testLoginDeny()
+    {
+        global $conf;
+        $conf['kolab']['server']['deny_group'] = 'group2@example.org';
+        unset($conf['kolab']['server']['allow_group']);
+
+        $this->markTestSkipped();
+        $server = &$this->prepareEmptyKolabServer();
+        $result = $server->add($this->provideBasicUserOne());
+        $this->assertNoError($result);
+        $result = $server->add($this->provideBasicUserTwo());
+        $this->assertNoError($result);
+        $groups = $this->validGroups();
+        foreach ($groups as $group) {
+            $result = $server->add($group[0]);
+            $this->assertNoError($result);
+        }
+
+        $session = Horde_Kolab_Session::singleton('test',
+                                                  array('password' => 'test'),
+                                                  true);
+
+        $this->assertNoError($session->auth);
+        $this->assertEquals('test@example.org', $session->user_mail);
+
+        try {
+            $session = Horde_Kolab_Session::singleton('wrobel',
+                                                      array('password' => 'none'),
+                                                      true);
+        } catch (Horde_Kolab_Session_Exception $e) {
+            $this->assertError($e, 'You are member of a group that may not login on this server.');
+        }
+        // FIXME: Ensure that the session gets overwritten
+        //$this->assertTrue(empty($session->user_mail));
+    }
+
+}
diff --git a/framework/Kolab_Session/test/Horde/Kolab/Session/SessionTest.php b/framework/Kolab_Session/test/Horde/Kolab/Session/SessionTest.php
deleted file mode 100644 (file)
index 2ec886b..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-<?php
-/**
- * Test the Kolab session handler.
- *
- * PHP version 5
- *
- * @category Kolab
- * @package  Kolab_Session
- * @author   Gunnar Wrobel <wrobel@pardus.de>
- * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
- * @link     http://pear.horde.org/index.php?package=Kolab_Session
- */
-
-/**
- * Prepare the test setup.
- */
-require_once dirname(__FILE__) . '/Autoload.php';
-
-/**
- * Test the Kolab session handler.
- *
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @category Kolab
- * @package  Kolab_Session
- * @author   Gunnar Wrobel <wrobel@pardus.de>
- * @license  http://www.fsf.org/copyleft/lgpl.html LGPL
- * @link     http://pear.horde.org/index.php?package=Kolab_Session
- */
-class Horde_Kolab_Session_SessionTest extends Horde_Kolab_Session_SessionTestCase
-{
-    /**
-     * Setup function.
-     *
-     * @return NULL.
-     */
-    protected function setUp()
-    {
-        $this->markTestIncomplete('Needs to be fixed');
-    }
-
-    /**
-     * Test class construction.
-     *
-     * @return NULL
-     */
-    public function testConstructEmpty()
-    {
-        global $conf;
-        $conf['kolab']['imap']['allow_special_users'] = true;
-
-        $session = Horde_Kolab_Session::singleton();
-
-        $this->assertEquals('anonymous', $session->user_mail);
-
-        $params = $session->getImapParams();
-        $this->assertNoError($params);
-        $this->assertEquals('localhost', $params['hostspec']);
-        $this->assertEquals(143, $params['port']);
-    }
-
-    /**
-     * Test old style class construction.
-     *
-     * @return NULL
-     */
-    public function testConstructSimple()
-    {
-        global $conf;
-        $conf['kolab']['imap']['server']     = 'example.com';
-        $conf['kolab']['imap']['port']       = 200;
-        $conf['kolab']['freebusy']['server'] = 'fb.example.com';
-
-        $session = new Horde_Kolab_Session();
-        $params  = $session->getImapParams();
-        if (is_a($params, 'PEAR_Error')) {
-            $this->assertEquals('', $params->getMessage());
-        }
-        $this->assertEquals('example.com', $params['hostspec']);
-        $this->assertEquals(200, $params['port']);
-    }
-
-    /**
-     * Test IMAP server retrieval.
-     *
-     * @return NULL
-     */
-    public function testGetSession()
-    {
-        $this->markTestSkipped();
-        $server = &$this->prepareEmptyKolabServer();
-        $result = $server->add($this->provideBasicUserTwo());
-        $this->assertNoError($result);
-        $this->assertEquals(1, count($GLOBALS['KOLAB_SERVER_TEST_DATA']));
-
-        $session = Horde_Kolab_Session::singleton('test',
-                                                  array('password' => 'test'));
-
-        $this->assertNoError($session->auth);
-        $this->assertEquals('test@example.org', $session->user_mail);
-
-        $params = $session->getImapParams();
-        $this->assertNoError($params);
-        $this->assertEquals('home.example.org', $params['hostspec']);
-        $this->assertEquals(143, $params['port']);
-        $this->assertEquals('test@example.org', $session->user_mail);
-
-        $session->shutdown();
-
-        $hs = Horde_SessionObjects::singleton();
-
-        $recovered_session = &$hs->query('kolab_session');
-        $params            = $recovered_session->getImapParams();
-        $this->assertNoError($params);
-        $this->assertEquals('home.example.org', $params['hostspec']);
-        $this->assertEquals(143, $params['port']);
-        $this->assertEquals('test@example.org', $session->user_mail);
-
-        $this->assertEquals('https://fb.example.org/freebusy', $session->freebusy_server);
-    }
-
-    /**
-     * Test retrieving the FreeBusy server for the unauthenticated state.
-     *
-     * @return NULL
-     */
-    public function testGetFreeBusySession()
-    {
-        $this->markTestSkipped();
-        $server = $this->prepareEmptyKolabServer();
-        $result = $server->add($this->provideBasicUserTwo());
-        $this->assertNoError($result);
-        $session = Horde_Kolab_Session::singleton();
-        $this->assertEquals('', $session->freebusy_server);
-    }
-
-    /**
-     * Test group based login allow implemention.
-     *
-     * @return NULL
-     */
-    public function testLoginAllow()
-    {
-        global $conf;
-        $conf['kolab']['server']['allow_group'] = 'group2@example.org';
-        $conf['kolab']['server']['deny_group'] = null;
-
-        $this->markTestSkipped();
-        $server = &$this->prepareEmptyKolabServer();
-        $result = $server->add($this->provideBasicUserOne());
-        $this->assertNoError($result);
-        $result = $server->add($this->provideBasicUserTwo());
-        $this->assertNoError($result);
-        $groups = $this->validGroups();
-        foreach ($groups as $group) {
-            $result = $server->add($group[0]);
-            $this->assertNoError($result);
-        }
-
-        $session = Horde_Kolab_Session::singleton('wrobel',
-                                                  array('password' => 'none'),
-                                                  true);
-
-        $this->assertNoError($session->auth);
-        $this->assertEquals('wrobel@example.org', $session->user_mail);
-
-        try {
-            $session = Horde_Kolab_Session::singleton('test',
-                                                      array('password' => 'test'),
-                                                      true);
-        } catch (Horde_Kolab_Session_Exception $e) {
-            $this->assertError($e, 'You are no member of a group that may login on this server.');
-        }
-        // FIXME: Ensure that the session gets overwritten
-        //$this->assertTrue(empty($session->user_mail));
-    }
-
-    /**
-     * Test group based login deny implemention.
-     *
-     * @return NULL
-     */
-    public function testLoginDeny()
-    {
-        global $conf;
-        $conf['kolab']['server']['deny_group'] = 'group2@example.org';
-        unset($conf['kolab']['server']['allow_group']);
-
-        $this->markTestSkipped();
-        $server = &$this->prepareEmptyKolabServer();
-        $result = $server->add($this->provideBasicUserOne());
-        $this->assertNoError($result);
-        $result = $server->add($this->provideBasicUserTwo());
-        $this->assertNoError($result);
-        $groups = $this->validGroups();
-        foreach ($groups as $group) {
-            $result = $server->add($group[0]);
-            $this->assertNoError($result);
-        }
-
-        $session = Horde_Kolab_Session::singleton('test',
-                                                  array('password' => 'test'),
-                                                  true);
-
-        $this->assertNoError($session->auth);
-        $this->assertEquals('test@example.org', $session->user_mail);
-
-        try {
-            $session = Horde_Kolab_Session::singleton('wrobel',
-                                                      array('password' => 'none'),
-                                                      true);
-        } catch (Horde_Kolab_Session_Exception $e) {
-            $this->assertError($e, 'You are member of a group that may not login on this server.');
-        }
-        // FIXME: Ensure that the session gets overwritten
-        //$this->assertTrue(empty($session->user_mail));
-    }
-
-}