1+ <?php
2+
3+ namespace Tests ;
4+
5+ use ByJG \Authenticate \Enum \LoginField ;
6+
7+ class UsersDBDatasetByEmailOrUsernameTest extends UsersDBDatasetByUsernameTestUsersBase
8+ {
9+ #[\Override]
10+ public function setUp (): void
11+ {
12+ $ this ->__setUp (LoginField::EmailOrUsername);
13+ }
14+
15+ #[\Override]
16+ public function testIsValidUser (): void
17+ {
18+ // Both username and email must work
19+ $ user = $ this ->object ->isValidUser ('user3 ' , 'pwd3 ' );
20+ $ this ->assertEquals ('User 3 ' , $ user ->getName ());
21+
22+ $ user = $ this ->object ->isValidUser ('user3@gmail.com ' , 'pwd3 ' );
23+ $ this ->assertEquals ('User 3 ' , $ user ->getName ());
24+
25+ // Wrong password returns null regardless of field used
26+ $ this ->assertNull ($ this ->object ->isValidUser ('user3 ' , 'wrongpwd ' ));
27+ $ this ->assertNull ($ this ->object ->isValidUser ('user3@gmail.com ' , 'wrongpwd ' ));
28+
29+ // Non-existent identifier returns null
30+ $ this ->assertNull ($ this ->object ->isValidUser ('nonexistent ' , 'pwd3 ' ));
31+ }
32+
33+ public function testGetByLoginWithUsername (): void
34+ {
35+ $ user = $ this ->object ->getByLogin ('user1 ' );
36+ $ this ->assertNotNull ($ user );
37+ $ this ->assertEquals ('User 1 ' , $ user ->getName ());
38+ $ this ->assertEquals ('user1 ' , $ user ->getUsername ());
39+ }
40+
41+ public function testGetByLoginWithEmail (): void
42+ {
43+ $ user = $ this ->object ->getByLogin ('user1@gmail.com ' );
44+ $ this ->assertNotNull ($ user );
45+ $ this ->assertEquals ('User 1 ' , $ user ->getName ());
46+ $ this ->assertEquals ('user1@gmail.com ' , $ user ->getEmail ());
47+ }
48+
49+ public function testGetLoginValueReturnsUsername (): void
50+ {
51+ $ user = $ this ->object ->getByLogin ('user2 ' );
52+ $ this ->assertEquals ('user2 ' , $ this ->object ->getLoginValue ($ user ));
53+ }
54+
55+ public function testGetLoginFieldIsEmailOrUsername (): void
56+ {
57+ $ this ->assertEquals (LoginField::EmailOrUsername, $ this ->object ->getLoginField ());
58+ }
59+ }
0 commit comments