Subversion-Projekte lars-tiefland.prado

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
 
3
require_once(dirname(__FILE__).'/BaseTestCase.php');
4
 
5
class UserDaoTestCase extends BaseTestCase
6
{
7
	protected $userDao;
8
 
9
	function setup()
10
	{
11
		parent::setup();
12
		$app = Prado::getApplication();
13
		$this->userDao = $app->getModule('daos')->getDao('UserDao');
14
		$this->flushDatabase();
15
	}
16
 
17
	function assertIsAdmin($user)
18
	{
19
		if(!$user)
20
			return $this->fail();
21
		$this->assertEqual($user->getName(), 'admin');
22
		$this->assertEqual($user->getEmailAddress(), 'admin@pradosoft.com');
23
	}
24
 
25
	function assertSameUser($user1, $user2)
26
	{
27
		if(is_null($user1) || is_null($user2))
28
			return $this->fail();
29
 
30
		$this->assertEqual($user1->getName(), $user2->getName());
31
		$this->assertEqual($user1->getEmailAddress(), $user2->getEmailAddress());
32
	}
33
 
34
	function assertIsAdminRole($user)
35
	{
36
		if(is_null($user))
37
			return $this->fail();
38
 
39
		$this->assertTrue($user->isInRole('admin'));
40
	}
41
 
42
	function assertIsManagerRole($user)
43
	{
44
		if(is_null($user))
45
			return $this->fail();
46
 
47
		$this->assertTrue($user->isInRole('manager'));
48
	}
49
 
50
	function assertIsConsultantRole($user)
51
	{
52
		if(is_null($user))
53
			return $this->fail();
54
 
55
		$this->assertTrue($user->isInRole('consultant'));
56
	}
57
 
58
	function assertNotConsultantRole($user)
59
	{
60
		if(is_null($user))
61
			return $this->fail();
62
 
63
		$this->assertFalse($user->isInRole('consultant'));
64
	}
65
 
66
	function testGetUserByName()
67
	{
68
		$user = $this->userDao->getUserByName('admin');
69
		$this->assertNotNull($user);
70
		$this->assertIsAdmin($user);
71
	}
72
 
73
	function testGetNonExistentUser()
74
	{
75
		$user = $this->userDao->getUserByName('none');
76
		$this->assertNull($user);
77
	}
78
 
79
	function testGetUsers()
80
	{
81
		$users = $this->userDao->getAllUsers();
82
		$this->assertEqual(count($users), 3);
83
	}
84
 
85
	function testUserLogon()
86
	{
87
		$success = $this->userDao->validateUser('admin', 'admin');
88
		$this->assertTrue($success);
89
	}
90
 
91
	function testBadLogin()
92
	{
93
		$success = $this->userDao->validateUser('admin', 'hahah');
94
		$this->assertFalse($success);
95
	}
96
 
97
 
98
	function testAddNewUser()
99
	{
100
		$user = new TimeTrackerUser(new UserManager());
101
		$user->Name = "user1";
102
		$user->EmailAddress = 'user1@pradosoft.com';
103
 
104
		$this->userDao->addNewUser($user, 'password');
105
 
106
		$check = $this->userDao->getUserByName($user->Name);
107
 
108
		$this->assertSameUser($check, $user);
109
	}
110
 
111
	function testDeleteUserByName()
112
	{
113
		$this->userDao->deleteUserByName('admin');
114
 
115
		$admin = $this->userDao->getUserByName('admin');
116
		$this->assertNull($admin);
117
 
118
		$users = $this->userDao->getAllUsers();
119
		$this->assertEqual(count($users), 2);
120
	}
121
 
122
	function testAutoSignon()
123
	{
124
		$user = new TimeTrackerUser(new UserManager());
125
		$user->Name = "admin";
126
 
127
		$token = $this->userDao->createSignonToken($user);
128
 
129
		$check = $this->userDao->validateSignon($token);
130
 
131
		$this->assertIsAdmin($check);
132
	}
133
 
134
 
135
	function testBadAutoSignon()
136
	{
137
		$user = new TimeTrackerUser(new UserManager());
138
		$user->Name = "admin";
139
 
140
		$token = $this->userDao->createSignonToken($user);
141
 
142
		$check = $this->userDao->validateSignon('adasd');
143
		$this->assertNull($check);
144
	}
145
 
146
	function testAdminRoles()
147
	{
148
		$user = $this->userDao->getUserByName('admin');
149
		$this->assertIsAdminRole($user);
150
		$this->assertIsManagerRole($user);
151
		$this->assertIsConsultantRole($user);
152
	}
153
 
154
	function testSetUserRoles()
155
	{
156
		$user = new TimeTrackerUser(new UserManager());
157
		$user->Name = "user1";
158
		$user->EmailAddress = 'user1@pradosoft.com';
159
		$user->Roles = array("manager", "consultant");
160
 
161
		$this->userDao->addNewUser($user, 'password');
162
		$check = $this->userDao->getUserByName('user1');
163
 
164
		$this->assertIsManagerRole($check);
165
		$this->assertIsConsultantRole($check);
166
	}
167
 
168
	function testSetUserRoleNoNullUser()
169
	{
170
		$user = new TimeTrackerUser(new UserManager());
171
		$user->Name = "user1";
172
		$user->EmailAddress = 'user1@pradosoft.com';
173
		$user->Roles = array("manager", "consultant");
174
 
175
		try
176
		{
177
			$this->userDao->updateUserRoles($user);
178
			$this->fail();
179
		}
180
		catch(TDbException $e)
181
		{
182
			$this->pass();
183
		}
184
 
185
		$check = $this->sqlmap->queryForObject('GetUserByName', 'user1');
186
		$this->assertNull($check);
187
	}
188
 
189
	function testUpdateUser()
190
	{
191
		$user = $this->userDao->getUserByName('admin');
192
		$user->EmailAddress = 'something@pradosoft.com';
193
		$user->Roles = array('manager', 'admin');
194
 
195
		$this->userDao->updateUser($user);
196
 
197
		$check = $this->userDao->getUserByName('admin');
198
		$this->assertIsAdminRole($check);
199
		$this->assertIsManagerRole($check);
200
		$this->assertNotConsultantRole($check);
201
	}
202
 
203
	function testUpdateUserPassword()
204
	{
205
		$user = $this->userDao->getUserByName('admin');
206
		$user->EmailAddress = 'something@pradosoft.com';
207
		$user->Roles = array('manager', 'admin');
208
 
209
		$pass = 'newpasword';
210
 
211
		$this->userDao->updateUser($user, $pass);
212
 
213
		$success = $this->userDao->validateUser('admin', $pass);
214
 
215
		$this->assertTrue($success);
216
	}
217
 
218
	function testClearSignonTokens()
219
	{
220
		$user = new TimeTrackerUser(new UserManager());
221
		$user->Name = "admin";
222
 
223
		$token1 = $this->userDao->createSignonToken($user);
224
		sleep(1);
225
		$token2 = $this->userDao->createSignonToken($user);
226
		$this->assertNotEqual($token1, $token2);
227
 
228
		$check1 = $this->userDao->validateSignon($token1);
229
		$check2 = $this->userDao->validateSignon($token2);
230
 
231
		$this->assertIsAdmin($check1);
232
		$this->assertIsAdmin($check2);
233
 
234
		$this->userDao->clearSignonTokens($user);
235
 
236
		$check3 = $this->userDao->validateSignon($token1);
237
		$check4 = $this->userDao->validateSignon($token2);
238
 
239
		$this->assertNull($check3);
240
		$this->assertNull($check4);
241
	}
242
 
243
	function testClearAllSigonTokens()
244
	{
245
		$user1 = new TimeTrackerUser(new UserManager());
246
		$user1->Name = "admin";
247
 
248
		$user2 = new TimeTrackerUser(new UserManager());
249
		$user2->Name = "manager";
250
 
251
		$token1 = $this->userDao->createSignonToken($user1);
252
		$token2 = $this->userDao->createSignonToken($user2);
253
 
254
		$check1 = $this->userDao->validateSignon($token1);
255
		$check2 = $this->userDao->validateSignon($token2);
256
 
257
		$this->assertIsAdmin($check1);
258
		$this->assertNotNull($check2);
259
		$this->assertEqual($check2->Name, $user2->Name);
260
 
261
		$this->userDao->clearSignonTokens();
262
 
263
		$check3 = $this->userDao->validateSignon($token1);
264
		$check4 = $this->userDao->validateSignon($token2);
265
 
266
		$this->assertNull($check3);
267
		$this->assertNull($check4);
268
	}
269
}
270
 
271
?>