@@ -16,10 +16,11 @@ public async Task LoginWithInvalidUser()
1616 var command = new LoginCommand ( "test" , "password" ) ;
1717
1818 var logger = Substitute . For < ILogger < LoginHandler > > ( ) ;
19+ var timeProvider = Substitute . For < TimeProvider > ( ) ;
1920 var repository = Substitute . For < IUserRepository > ( ) ;
2021 var passwordService = Substitute . For < IPasswordService > ( ) ;
2122 var tokenService = Substitute . For < ITokenService > ( ) ;
22- var handler = new LoginHandler ( logger , repository , passwordService , tokenService ) ;
23+ var handler = new LoginHandler ( logger , timeProvider , repository , passwordService , tokenService ) ;
2324
2425 var result = await handler . Handle ( command ) ;
2526
@@ -30,17 +31,50 @@ public async Task LoginWithInvalidUser()
3031 public async Task LoginWithLockedUser ( )
3132 {
3233 var command = new LoginCommand ( "test" , "password" ) ;
33- var user = new User { Login = "test" } ;
34+ var user = new User
35+ {
36+ Login = "test" ,
37+ Profile = new UserProfile { Name = "test" } ,
38+ } ;
3439 user . Lock ( ) ;
3540
3641 var logger = Substitute . For < ILogger < LoginHandler > > ( ) ;
42+ var timeProvider = Substitute . For < TimeProvider > ( ) ;
3743 var repository = Substitute . For < IUserRepository > ( ) ;
3844 repository
3945 . GetUserByLogin ( command . Login )
4046 . Returns ( user ) ;
4147 var passwordService = Substitute . For < IPasswordService > ( ) ;
4248 var tokenService = Substitute . For < ITokenService > ( ) ;
43- var handler = new LoginHandler ( logger , repository , passwordService , tokenService ) ;
49+ var handler = new LoginHandler ( logger , timeProvider , repository , passwordService , tokenService ) ;
50+
51+ var result = await handler . Handle ( command ) ;
52+
53+ Assert . That ( result , Is . EqualTo ( LoginResult . Fail ( ) ) ) ;
54+ }
55+
56+ [ Test ]
57+ public async Task LoginWithExpiredPassword ( )
58+ {
59+ var currentDate = DateTimeOffset . UtcNow ;
60+ var command = new LoginCommand ( "test" , "password" ) ;
61+ var user = new User
62+ {
63+ Login = "test" ,
64+ Profile = new UserProfile { Name = "test" } ,
65+ PasswordExpiresAt = currentDate . AddDays ( - 1 ) ,
66+ } ;
67+
68+ var logger = Substitute . For < ILogger < LoginHandler > > ( ) ;
69+ var timeProvider = Substitute . For < TimeProvider > ( ) ;
70+ timeProvider . GetUtcNow ( ) . Returns ( currentDate ) ;
71+ var repository = Substitute . For < IUserRepository > ( ) ;
72+ repository
73+ . GetUserByLogin ( command . Login )
74+ . Returns ( user ) ;
75+ var passwordService = Substitute . For < IPasswordService > ( ) ;
76+ var tokenService = Substitute . For < ITokenService > ( ) ;
77+ var handler = new LoginHandler ( logger , timeProvider , repository , passwordService , tokenService ) ;
4478
4579 var result = await handler . Handle ( command ) ;
4680
@@ -51,9 +85,14 @@ public async Task LoginWithLockedUser()
5185 public async Task LoginWithInvalidCredentials ( )
5286 {
5387 var command = new LoginCommand ( "test" , "password" ) ;
54- var user = new User { Login = "test" } ;
88+ var user = new User
89+ {
90+ Login = "test" ,
91+ Profile = new UserProfile { Name = "test" } ,
92+ } ;
5593
5694 var logger = Substitute . For < ILogger < LoginHandler > > ( ) ;
95+ var timeProvider = Substitute . For < TimeProvider > ( ) ;
5796 var repository = Substitute . For < IUserRepository > ( ) ;
5897 repository
5998 . GetUserByLogin ( command . Login )
@@ -63,7 +102,7 @@ public async Task LoginWithInvalidCredentials()
63102 . VerifyPassword ( command . Password , user . Password , user . Salt )
64103 . Returns ( false ) ;
65104 var tokenService = Substitute . For < ITokenService > ( ) ;
66- var handler = new LoginHandler ( logger , repository , passwordService , tokenService ) ;
105+ var handler = new LoginHandler ( logger , timeProvider , repository , passwordService , tokenService ) ;
67106
68107 var result = await handler . Handle ( command ) ;
69108
@@ -74,12 +113,17 @@ public async Task LoginWithInvalidCredentials()
74113 public async Task LoginWithValidCredentials ( )
75114 {
76115 var command = new LoginCommand ( "test" , "password" ) ;
77- var user = new User { Login = "test" } ;
116+ var user = new User
117+ {
118+ Login = "test" ,
119+ Profile = new UserProfile { Name = "test" } ,
120+ } ;
78121 var jwtTokenPair = new JwtTokenPair (
79122 new Token ( Guid . NewGuid ( ) , "access" , DateTimeOffset . UtcNow ) ,
80123 new Token ( Guid . NewGuid ( ) , "refresh" , DateTimeOffset . UtcNow ) ) ;
81124
82125 var logger = Substitute . For < ILogger < LoginHandler > > ( ) ;
126+ var timeProvider = Substitute . For < TimeProvider > ( ) ;
83127 var repository = Substitute . For < IUserRepository > ( ) ;
84128 repository
85129 . GetUserByLogin ( command . Login )
@@ -92,7 +136,7 @@ public async Task LoginWithValidCredentials()
92136 tokenService
93137 . GenerateTokenPair ( user )
94138 . Returns ( jwtTokenPair ) ;
95- var handler = new LoginHandler ( logger , repository , passwordService , tokenService ) ;
139+ var handler = new LoginHandler ( logger , timeProvider , repository , passwordService , tokenService ) ;
96140
97141 var result = await handler . Handle ( command ) ;
98142
0 commit comments