b9c1876be398ee0f0b159e730820f0c877b694b5
[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     /**
34      * set up tests
35      */
36     protected function setUp()
37     {
38         Zend_Session::$_unitTestEnabled = true;
39         
40         // get config
41         $configData = @include('phpunitconfig.inc.php');
42         if ($configData === false) {
43             $configData = include('config.inc.php');
44         }
45         if ($configData === false) {
46             die ('central configuration file config.inc.php not found in includepath: ' . get_include_path());
47         }
48         $this->_config = new Zend_Config($configData);
49         
50         $this->_transactionId = Tinebase_TransactionManager::getInstance()->startTransaction(Tinebase_Core::getDb());
51     }
52     
53     /**
54      * tear down tests
55      */
56     protected function tearDown()
57     {
58         Zend_Session::$_unitTestEnabled = false;
59         
60         if ($this->_transactionId) {
61             Tinebase_TransactionManager::getInstance()->rollBack();
62         }
63     }
64     
65     /**
66      * Performs custom preparations on the process isolation template.
67      *
68      * @param Text_Template $template
69      * @since Method available since Release 3.4.0
70      */
71     protected function prepareTemplate(Text_Template $template)
72     {
73         // needed to get bootstrap file included in separate process again
74         $template->setVar(array(
75             'globals' => sprintf("\$GLOBALS['__PHPUNIT_BOOTSTRAP'] = '%s/bootstrap.php';", __DIR__)
76         ));
77     }
78     
79     /**
80      * fetch test user credentials
81      * 
82      * @return array
83      */
84     public function getTestCredentials()
85     {
86         $config = $this->_config;
87         $username = isset($config->login->username) ? $config->login->username : $config->username;
88         $password = isset($config->login->password) ? $config->login->password : $config->password;
89         
90         return array(
91             'username' => $username,
92             'password' => $password
93         );
94     }
95     
96     /**
97      * get account by name
98      * 
99      * @param  string  $name
100      * @return Tinebase_Model_FullUser
101      */
102     public function getAccountByName($name)
103     {
104         return Tinebase_User::getInstance()->getFullUserByLoginName($name);
105     }
106     
107     /**
108      * 
109      * @param  Tinebase_Model_User  $account
110      * @param  string  $recordClass
111      * @return Tinebase_Record_RecordSet
112      */
113     public function getPersonalContainer(Tinebase_Model_User $account, $recordClass)
114     {
115         return Tinebase_Container::getInstance()
116             ->getPersonalContainer($account, $recordClass, $account, Tinebase_Model_Grants::GRANT_ADMIN);
117     }
118 }