19declare(strict_types=1);
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(
47 $db_mock = $this->createMock(\ilDBInterface::class);
48 $db_mock->expects($this->once())->method(
'replace')->willReturn(1);
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);
54 $repository =
new DBRepository($db_mock, $this->createMock(\ilSetting::class));
56 $returned_token = $repository->getNewTokenForUser($user_mock, $new_email,
$timestamp);
58 $this->assertEquals($our_token, $returned_token);
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(
78 $db_mock = $this->createMock(\ilDBInterface::class);
79 $db_mock->expects($this->once())->method(
'fetchObject')->willReturn(
81 'token' => $token_string,
82 'new_email' => $new_email,
83 'status' => $status->value,
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);
92 $repository =
new DBRepository($db_mock, $this->createMock(\ilSetting::class));
94 $token = $repository->getTokenForTokenString($token_string, $user_mock);
96 $this->assertEquals($our_token,
$token);
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';
108 $db_mock = $this->createMock(\ilDBInterface::class);
109 $db_mock->expects($this->once())->method(
'fetchObject')->willReturn(
111 'token' => $token_string,
112 'new_email' => $new_email,
113 'status' => $status->value,
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);
122 $repository =
new DBRepository($db_mock, $this->createMock(\ilSetting::class));
124 $token = $repository->getTokenForTokenString($token_string, $user_mock);
126 $this->assertEquals(
null,
$token);
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';
138 $db_mock = $this->createMock(\ilDBInterface::class);
139 $db_mock->expects($this->once())->method(
'fetchObject')->willReturn(
141 'token' => $token_string,
142 'new_email' => $new_email,
143 'status' => $status->value,
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);
152 $settings_mock = $this->createMock(\ilSetting::class);
153 $settings_mock->expects($this->once())->method(
'get')->willReturn(
'0');
155 $repository =
new DBRepository($db_mock, $settings_mock);
157 $token = $repository->getTokenForTokenString($token_string, $user_mock);
159 $this->assertEquals(
null,
$token);
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';
171 $expected_token =
new Token(
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);
184 $repository =
new DBRepository($db_mock, $this->createMock(\ilSetting::class));
186 $new_token = $repository->moveToNextStep(
198 $this->assertEquals($expected_token, $new_token);
204 $old_email =
'oldemail@ilias.de';
206 $db_mock = $this->createMock(\ilDBInterface::class);
207 $db_mock->expects($this->never())->method(
'manipulateF');
208 $db_mock->expects($this->never())->method(
'replace');
210 $repository =
new DBRepository($db_mock, $this->createMock(\ilSetting::class));
212 $this->expectException(\Exception::class);
213 $repository->moveToNextStep(
219 Status::EmailConfirmation,
foreach($mandatory_scripts as $file) $timestamp
testMoveToNextStepThrowsErrorIfNotExists()
testGetTokenForTokenStringReturnsCorrectToken()
testGetNewTokenForUserReturnsCorrectToken()
testGetTokenForTokenStringReturnsNullOnExpiredToken()
testGetTokenForTokenStringReturnsNullOnInvalidToken()
testMoveToNextStepReturnsCorrectToken()
const REG_HASH_LIFETIME_MIN_VALUE