ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ChangeMailTokenDBRepositoryTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
27
29{
31 {
32 $timestamp = time() + 1000;
33 $user_id = 5;
34 $old_email = 'oldemail@ilias.de';
35 $status = Status::Login;
36 $token_string = hash('md5', "{$timestamp}-{$user_id}-{$old_email}-{$status->value}");
37 $new_email = 'newemail@ilias.de';
38 $our_token = new Token(
40 $old_email,
41 $new_email,
43 $status,
44 $token_string
45 );
46
47 $db_mock = $this->createMock(\ilDBInterface::class);
48 $db_mock->expects($this->once())->method('replace')->willReturn(1);
49
50 $user_mock = $this->createMock(\ilObjUser::class);
51 $user_mock->expects($this->once())->method('getId')->willReturn(5);
52 $user_mock->expects($this->once())->method('getEmail')->willReturn($old_email);
53
54 $repository = new DBRepository($db_mock, $this->createMock(\ilSetting::class));
55
56 $returned_token = $repository->getNewTokenForUser($user_mock, $new_email, $timestamp);
57
58 $this->assertEquals($our_token, $returned_token);
59 }
60
62 {
63 $timestamp = time() + 1000;
64 $user_id = 5;
65 $old_email = 'oldemail@ilias.de';
66 $status = Status::EmailConfirmation;
67 $token_string = hash('md5', "{$timestamp}-{$user_id}-{$old_email}-{$status->value}");
68 $new_email = 'newemail@ilias.de';
69 $our_token = new Token(
71 $old_email,
72 $new_email,
74 $status,
75 $token_string
76 );
77
78 $db_mock = $this->createMock(\ilDBInterface::class);
79 $db_mock->expects($this->once())->method('fetchObject')->willReturn(
80 (object) [
81 'token' => $token_string,
82 'new_email' => $new_email,
83 'status' => $status->value,
84 'created_ts' => $timestamp
85 ]
86 );
87
88 $user_mock = $this->createMock(\ilObjUser::class);
89 $user_mock->expects($this->once())->method('getId')->willReturn($user_id);
90 $user_mock->expects($this->once())->method('getEmail')->willReturn($old_email);
91
92 $repository = new DBRepository($db_mock, $this->createMock(\ilSetting::class));
93
94 $token = $repository->getTokenForTokenString($token_string, $user_mock);
95
96 $this->assertEquals($our_token, $token);
97 }
98
100 {
101 $timestamp = time() + 1000;
102 $user_id = 5;
103 $old_email = 'oldemail@ilias.de';
104 $status = Status::EmailConfirmation;
105 $token_string = hash('md5', "{$timestamp}-{$user_id}-{$old_email}-{$status->value}");
106 $new_email = 'newemail@ilias.de';
107
108 $db_mock = $this->createMock(\ilDBInterface::class);
109 $db_mock->expects($this->once())->method('fetchObject')->willReturn(
110 (object) [
111 'token' => $token_string,
112 'new_email' => $new_email,
113 'status' => $status->value,
114 'created_ts' => $timestamp
115 ]
116 );
117
118 $user_mock = $this->createMock(\ilObjUser::class);
119 $user_mock->expects($this->once())->method('getId')->willReturn(2);
120 $user_mock->expects($this->once())->method('getEmail')->willReturn($old_email);
121
122 $repository = new DBRepository($db_mock, $this->createMock(\ilSetting::class));
123
124 $token = $repository->getTokenForTokenString($token_string, $user_mock);
125
126 $this->assertEquals(null, $token);
127 }
128
130 {
132 $user_id = 5;
133 $old_email = 'oldemail@ilias.de';
134 $status = Status::EmailConfirmation;
135 $token_string = hash('md5', "{$timestamp}-{$user_id}-{$old_email}-{$status->value}");
136 $new_email = 'newemail@ilias.de';
137
138 $db_mock = $this->createMock(\ilDBInterface::class);
139 $db_mock->expects($this->once())->method('fetchObject')->willReturn(
140 (object) [
141 'token' => $token_string,
142 'new_email' => $new_email,
143 'status' => $status->value,
144 'created_ts' => $timestamp
145 ]
146 );
147
148 $user_mock = $this->createMock(\ilObjUser::class);
149 $user_mock->expects($this->once())->method('getId')->willReturn($user_id);
150 $user_mock->expects($this->once())->method('getEmail')->willReturn($old_email);
151
152 $settings_mock = $this->createMock(\ilSetting::class);
153 $settings_mock->expects($this->once())->method('get')->willReturn('0');
154
155 $repository = new DBRepository($db_mock, $settings_mock);
156
157 $token = $repository->getTokenForTokenString($token_string, $user_mock);
158
159 $this->assertEquals(null, $token);
160 }
161
163 {
164 $timestamp = time() + 1000;
165 $user_id = 5;
166 $old_email = 'oldemail@ilias.de';
167 $status = Status::EmailConfirmation;
168 $token_string = hash('md5', "{$timestamp}-{$user_id}-{$old_email}-{$status->value}");
169 $new_email = 'newemail@ilias.de';
170
171 $expected_token = new Token(
172 $user_id,
173 $old_email,
174 $new_email,
176 $status,
177 $token_string
178 );
179
180 $db_mock = $this->createMock(\ilDBInterface::class);
181 $db_mock->expects($this->once())->method('manipulateF')->willReturn(0);
182 $db_mock->expects($this->once())->method('replace')->willReturn(0);
183
184 $repository = new DBRepository($db_mock, $this->createMock(\ilSetting::class));
185
186 $new_token = $repository->moveToNextStep(
187 new Token(
188 $user_id,
189 $old_email,
190 $new_email,
191 123,
192 Status::Login,
193 'abc'
194 ),
196 );
197
198 $this->assertEquals($expected_token, $new_token);
199 }
200
202 {
203 $user_id = 5;
204 $old_email = 'oldemail@ilias.de';
205
206 $db_mock = $this->createMock(\ilDBInterface::class);
207 $db_mock->expects($this->never())->method('manipulateF');
208 $db_mock->expects($this->never())->method('replace');
209
210 $repository = new DBRepository($db_mock, $this->createMock(\ilSetting::class));
211
212 $this->expectException(\Exception::class);
213 $repository->moveToNextStep(
214 new Token(
215 $user_id,
216 $old_email,
217 'newemail@ilias.de',
218 123,
219 Status::EmailConfirmation,
220 'abc'
221 ),
222 time() + 1000
223 );
224 }
225}
foreach($mandatory_scripts as $file) $timestamp
Definition: buildRTE.php:70
Token
The string representation of these tokens must not occur in the names of metadata elements.
Definition: Token.php:28
$token
Definition: xapitoken.php:70