Skip to content

Commit 0226996

Browse files
author
Oyvind Timian Dokk Husveg
committed
Added longlife token to tests and token generation
1 parent c83542b commit 0226996

File tree

3 files changed

+51
-7
lines changed

3 files changed

+51
-7
lines changed

exercise.tests/IntegrationTests/BaseIntegrationTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ FROM users u
7474

7575
protected async Task<string> LoginAndGetToken(string email, string password, bool success = true, bool longlife = false)
7676
{
77-
var loginBody = new LoginRequestDTO { email = email, password = password };
77+
var loginBody = new LoginRequestDTO { email = email, password = password, longlifetoken = longlife };
7878
var loginRequestBody = new StringContent(
7979
JsonSerializer.Serialize(loginBody),
8080
Encoding.UTF8,

exercise.tests/IntegrationTests/TokenTests.cs

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.IdentityModel.Tokens.Jwt;
55
using System.Linq;
6+
using System.Security.Claims;
67
using System.Text;
78
using 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
}

exercise.wwwapi/Endpoints/UserEndpoints.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,8 @@ private static IResult Login(IRepository<User> repository, IMapper mapper, Login
143143
}
144144

145145
string token;
146-
147-
//token = CreateToken(user, config);
148146
if (request.longlifetoken.GetValueOrDefault()) token = CreateToken(user, config, 7);
149-
else token = CreateToken(user, config, 0.0416666666666666666666666666666666666667);
147+
else token = CreateToken(user, config, 1.0 / 24);
150148

151149

152150
ResponseDTO <LoginSuccessDTO> response = new ResponseDTO<LoginSuccessDTO>
@@ -286,7 +284,7 @@ private static string CreateToken(User user, IConfigurationSettings config, doub
286284
var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
287285
var token = new JwtSecurityToken(
288286
claims: claims,
289-
expires: DateTime.Now.AddDays(days),
287+
expires: DateTime.UtcNow.AddDays(days),
290288
signingCredentials: credentials
291289
);
292290
var jwt = new JwtSecurityTokenHandler().WriteToken(token);

0 commit comments

Comments
 (0)