new config to disallow webdav clients using user agent strings
[tine20] / tests / tine20 / ServerTestCase.php
1 <?php
2 /**
3  * Tine 2.0 - http://www.tine20.org
4  * 
5  * @package     Tests
6  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
7  * @copyright   Copyright (c) 2013-2014 Metaways Infosystems GmbH (http://www.metaways.de)
8  * @author      Philipp Schüle <p.schuele@metaways.de>
9  */
10
11 /**
12  * Test class for Calendar_Backend_Sql
13  * 
14  * @package     Tests
15  */
16 abstract class ServerTestCase extends PHPUnit_Framework_TestCase
17 {
18     protected $preserveGlobalState = false;
19     protected $runTestInSeparateProcess = true;
20     
21     /**
22      * transaction id if test is wrapped in an transaction
23      * 
24      * @var string
25      */
26     protected $_transactionId = null;
27     
28     /**
29      * @var Zend_Config
30      */
31     protected $_config;
32
33     protected $_oldDenyList;
34     
35     /**
36      * set up tests
37      */
38     protected function setUp()
39     {
40         Zend_Session::$_unitTestEnabled = true;
41         
42         // get config
43         $configData = @include('phpunitconfig.inc.php');
44         if ($configData === false) {
45             $configData = include('config.inc.php');
46         }
47         if ($configData === false) {
48             die ('central configuration file config.inc.php not found in includepath: ' . get_include_path());
49         }
50         $this->_config = new Zend_Config($configData);
51         
52         $this->_transactionId = Tinebase_TransactionManager::getInstance()->startTransaction(Tinebase_Core::getDb());
53
54         $this->_oldDenyList = Tinebase_Config::getInstance()->get(Tinebase_Config::DENY_WEBDAV_CLIENT_LIST);
55     }
56     
57     /**
58      * tear down tests
59      */
60     protected function tearDown()
61     {
62         Zend_Session::$_unitTestEnabled = false;
63         
64         if ($this->_transactionId) {
65             Tinebase_TransactionManager::getInstance()->rollBack();
66         }
67
68         Tinebase_Config::getInstance()->set(Tinebase_Config::DENY_WEBDAV_CLIENT_LIST, $this->_oldDenyList);
69     }
70     
71     /**
72      * Performs custom preparations on the process isolation template.
73      *
74      * @param Text_Template $template
75      * @since Method available since Release 3.4.0
76      */
77     protected function prepareTemplate(Text_Template $template)
78     {
79         // needed to get bootstrap file included in separate process again
80         $template->setVar(array(
81             'globals' => sprintf("\$GLOBALS['__PHPUNIT_BOOTSTRAP'] = '%s/bootstrap.php';", __DIR__)
82         ));
83     }
84     
85     /**
86      * fetch test user credentials
87      * 
88      * @return array
89      */
90     public function getTestCredentials()
91     {
92         $config = $this->_config;
93         $username = isset($config->login->username) ? $config->login->username : $config->username;
94         $password = isset($config->login->password) ? $config->login->password : $config->password;
95         
96         return array(
97             'username' => $username,
98             'password' => $password
99         );
100     }
101     
102     /**
103      * get account by name
104      * 
105      * @param  string  $name
106      * @return Tinebase_Model_FullUser
107      */
108     public function getAccountByName($name)
109     {
110         return Tinebase_User::getInstance()->getFullUserByLoginName($name);
111     }
112     
113     /**
114      * 
115      * @param  Tinebase_Model_User  $account
116      * @param  string  $recordClass
117      * @return Tinebase_Record_RecordSet
118      */
119     public function getPersonalContainer(Tinebase_Model_User $account, $recordClass)
120     {
121         return Tinebase_Container::getInstance()
122             ->getPersonalContainer($account, $recordClass, $account, Tinebase_Model_Grants::GRANT_ADMIN);
123     }
124 }