瀏覽代碼

ZF-6942 - Fixed some small problems and added a testsuite for Zend_Application_Resource_Session

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18203 44c647ce-9c0f-0410-b52a-842ac1e357ba
beberlei 16 年之前
父節點
當前提交
cac6758913

+ 10 - 1
library/Zend/Application/Resource/Session.php

@@ -64,6 +64,7 @@ class Zend_Application_Resource_Session extends Zend_Application_Resource_Resour
                 if (!array_key_exists('class', $this->_saveHandler)) {
                     throw new Zend_Application_Resource_Exception('Session save handler class not provided in options');
                 }
+                $options = array();
                 if (array_key_exists('options', $this->_saveHandler)) {
                     $options = $this->_saveHandler['options'];
                 }
@@ -81,6 +82,14 @@ class Zend_Application_Resource_Session extends Zend_Application_Resource_Resour
     }
 
     /**
+     * @return bool
+     */
+    protected function _hasSaveHandler()
+    {
+        return ($this->_saveHandler !== null);
+    }
+
+    /**
      * Defined by Zend_Application_Resource_Resource
      *
      * @return void
@@ -96,7 +105,7 @@ class Zend_Application_Resource_Session extends Zend_Application_Resource_Resour
             Zend_Session::setOptions($options);
         }
 
-        if ($this->_saveHandler !== null) {
+        if ($this->_hasSaveHandler()) {
             Zend_Session::setSaveHandler($this->getSaveHandler());
         }
     }

+ 2 - 0
tests/Zend/Application/Resource/AllTests.php

@@ -36,6 +36,7 @@ require_once 'Zend/Application/Resource/LayoutTest.php';
 require_once 'Zend/Application/Resource/LocaleTest.php';
 require_once 'Zend/Application/Resource/ModulesTest.php';
 require_once 'Zend/Application/Resource/NavigationTest.php';
+require_once 'Zend/Application/Resource/SessionTest.php';
 require_once 'Zend/Application/Resource/ViewTest.php';
 
 /**
@@ -65,6 +66,7 @@ class Zend_Application_Resource_AllTests
         $suite->addTestSuite('Zend_Application_Resource_LocaleTest');
         $suite->addTestSuite('Zend_Application_Resource_ModulesTest');
         $suite->addTestSuite('Zend_Application_Resource_NavigationTest');
+        $suite->addTestSuite('Zend_Application_Resource_SessionTest');
         $suite->addTestSuite('Zend_Application_Resource_ViewTest');
 
         return $suite;

+ 73 - 0
tests/Zend/Application/Resource/SessionTest.php

@@ -0,0 +1,73 @@
+<?php
+
+require_once "Zend/Application/Resource/ResourceAbstract.php";
+require_once "Zend/Application/Resource/Session.php";
+require_once "Zend/Session.php";
+require_once "Zend/Session/SaveHandler/Interface.php";
+
+class Zend_Application_Resource_SessionTest extends PHPUnit_Framework_TestCase
+{
+    public $resource;
+
+    public function setUp()
+    {
+        $this->resource = new Zend_Application_Resource_Session();
+    }
+
+    public function testSetSaveHandler()
+    {
+        $saveHandler = $this->getMock('Zend_Session_SaveHandler_Interface');
+
+        $this->resource->setSaveHandler($saveHandler);
+        $this->assertSame($saveHandler, $this->resource->getSaveHandler());
+    }
+
+    public function testSetSaveHandlerString()
+    {
+        $saveHandlerClassName = 'Zend_Application_Resource_SessionTestHandlerMock1';
+        $saveHandler = $this->getMock('Zend_Session_SaveHandler_Interface', array(), array(), $saveHandlerClassName);
+
+        $this->resource->setSaveHandler($saveHandlerClassName);
+
+        $this->assertType($saveHandlerClassName, $this->resource->getSaveHandler());
+    }
+
+    public function testSetSaveHandlerArray()
+    {
+        $saveHandlerClassName = 'Zend_Application_Resource_SessionTestHandlerMock2';
+        $saveHandler = $this->getMock('Zend_Session_SaveHandler_Interface', array(), array(), $saveHandlerClassName);
+
+        $this->resource->setSaveHandler(array('class' => $saveHandlerClassName));
+
+        $this->assertType($saveHandlerClassName, $this->resource->getSaveHandler());
+    }
+
+    public function testSetOptions()
+    {
+        Zend_Session::setOptions(array(
+            'use_only_cookies' => false,
+            'remember_me_seconds' => 3600,
+        ));
+
+        $this->resource->setOptions(array(
+             'use_only_cookies' => true,
+             'remember_me_seconds' => 7200,
+        ));
+
+        $this->resource->init();
+
+        $this->assertEquals(1, Zend_Session::getOptions('use_only_cookies'));
+        $this->assertEquals(7200, Zend_Session::getOptions('remember_me_seconds'));
+    }
+
+    public function testInitSetsSaveHandler()
+    {
+        $saveHandler = $this->getMock('Zend_Session_SaveHandler_Interface');
+
+        $this->resource->setSaveHandler($saveHandler);
+
+        $this->resource->init();
+
+        $this->assertSame($saveHandler, Zend_Session::getSaveHandler());
+    }
+}