33using System . Collections . Generic ;
44using System . IdentityModel . Tokens . Jwt ;
55using System . Linq ;
6+ using System . Security . Claims ;
67using System . Text ;
78using System . Threading . Tasks ;
89
@@ -17,18 +18,63 @@ public async Task CreateToken_ShouldGenerateValidJwt()
1718 var handler = new JwtSecurityTokenHandler ( ) ;
1819 var jwt = handler . ReadJwtToken ( token ) ;
1920
20- Console . WriteLine ( jwt ) ;
21+
22+ //var realid = jwt.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid)?.Value;
23+ string ? email = jwt . Claims . FirstOrDefault ( c => c . Type == ClaimTypes . Email ) ? . Value ;
24+ string ? role = jwt . Claims . FirstOrDefault ( c => c . Type == ClaimTypes . Role ) ? . Value ;
25+ var expClaim = jwt . Claims . FirstOrDefault ( c => c . Type == "exp" ) ? . Value ;
26+
27+
28+ using ( Assert . EnterMultipleScope ( ) )
29+ {
30+ Assert . That ( email , Is . EqualTo ( TeacherEmail ) ) ;
31+ Assert . That ( role , Is . EqualTo ( "1" ) ) ;
32+ Assert . That ( jwt . ValidTo , Is . GreaterThan ( DateTime . UtcNow ) ) ;
33+ }
2134 }
2235
2336 [ Test ]
2437 public async Task CreateToken_LongLife_ShouldExpireLater ( ) {
2538 string token = await LoginAndGetToken ( TeacherEmail , TeacherPassword , true , true ) ;
39+ var handler = new JwtSecurityTokenHandler ( ) ;
40+ var jwt = handler . ReadJwtToken ( token ) ;
41+
42+ //var realid = jwt.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid)?.Value;
43+ string ? email = jwt . Claims . FirstOrDefault ( c => c . Type == ClaimTypes . Email ) ? . Value ;
44+ string ? role = jwt . Claims . FirstOrDefault ( c => c . Type == ClaimTypes . Role ) ? . Value ;
45+ var expClaim = jwt . Claims . FirstOrDefault ( c => c . Type == "exp" ) ? . Value ;
46+
47+ //Console.WriteLine(expClaim);
48+ Assert . Multiple ( ( ) =>
49+ {
50+ Assert . That ( email , Is . EqualTo ( TeacherEmail ) ) ;
51+ Assert . That ( role , Is . EqualTo ( "1" ) ) ;
52+ Assert . That ( jwt . ValidTo , Is . GreaterThan ( DateTime . UtcNow . AddDays ( 6.5 ) ) ) ;
53+ Assert . That ( jwt . ValidTo , Is . LessThan ( DateTime . UtcNow . AddDays ( 7.5 ) ) ) ;
54+ } ) ;
2655 }
2756
2857 [ Test ]
2958 public async Task CreateToken_NormalLife_ShouldExpireLater ( )
3059 {
31- string token = await LoginAndGetToken ( TeacherEmail , TeacherPassword , true , true ) ;
60+ string token = await LoginAndGetToken ( TeacherEmail , TeacherPassword ) ;
61+ var handler = new JwtSecurityTokenHandler ( ) ;
62+ var jwt = handler . ReadJwtToken ( token ) ;
63+
64+ //var realid = jwt.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid)?.Value;
65+ string ? email = jwt . Claims . FirstOrDefault ( c => c . Type == ClaimTypes . Email ) ? . Value ;
66+ string ? role = jwt . Claims . FirstOrDefault ( c => c . Type == ClaimTypes . Role ) ? . Value ;
67+ var expClaim = jwt . Claims . FirstOrDefault ( c => c . Type == "exp" ) ? . Value ;
68+
69+ //Console.WriteLine(expClaim);
70+
71+ using ( Assert . EnterMultipleScope ( ) )
72+ {
73+ Assert . That ( email , Is . EqualTo ( TeacherEmail ) ) ;
74+ Assert . That ( role , Is . EqualTo ( "1" ) ) ;
75+ Assert . That ( jwt . ValidTo , Is . GreaterThan ( DateTime . UtcNow . AddMinutes ( 50 ) ) ) ;
76+ Assert . That ( jwt . ValidTo , Is . LessThan ( DateTime . UtcNow . AddHours ( 2 ) ) ) ;
77+ }
3278 }
3379
3480 }
0 commit comments