Skip to content

Commit d013593

Browse files
committed
test: add unit tests for JwtTokenGenerator to validate token generation logic
1 parent fc02138 commit d013593

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
using Ecommerce.Application.Common.Interfaces.Providers.Date;
2+
using Ecommerce.Infrastructure.Services.Authentication;
3+
using FluentAssertions;
4+
using Microsoft.Extensions.Logging;
5+
using Microsoft.Extensions.Options;
6+
using Moq;
7+
8+
namespace Ecommerce.UnitTests.Infrastructure.Services;
9+
10+
public class JwtTokenGeneratorTests
11+
{
12+
private JwtTokenGenerator _jwtTokenGenerator;
13+
14+
private Mock<IOptions<JwtSettings>> _jwtSettingsMock;
15+
private Mock<IDateTimeProvider> _dateTimeProviderMock;
16+
private Mock<ILogger<JwtTokenGenerator>> _loggerMock;
17+
18+
// Fixtures
19+
private readonly IOptions<JwtSettings> _jwtSettingsFixture = new OptionsWrapper<JwtSettings>(
20+
new JwtSettings
21+
{
22+
Audience = Utils.JwtSettings.Audience,
23+
Issuer = Utils.JwtSettings.Issuer,
24+
SecretKey = Utils.JwtSettings.SecretKey,
25+
ExpiryMinutes = Utils.JwtSettings.ExpiryMinutes,
26+
}
27+
);
28+
29+
public JwtTokenGeneratorTests()
30+
{
31+
_jwtSettingsMock = new Mock<IOptions<JwtSettings>>();
32+
_jwtSettingsMock.Setup(x => x.Value).Returns(_jwtSettingsFixture.Value);
33+
34+
_dateTimeProviderMock = new Mock<IDateTimeProvider>();
35+
_loggerMock = new Mock<ILogger<JwtTokenGenerator>>();
36+
37+
_jwtTokenGenerator = new JwtTokenGenerator(
38+
_jwtSettingsMock.Object,
39+
_dateTimeProviderMock.Object,
40+
_loggerMock.Object
41+
);
42+
}
43+
44+
[Fact]
45+
public void GenerateToken_ReturnsInternalError_WhenSecretKeyIsNull()
46+
{
47+
//arrange
48+
var user = Utils.User.Create();
49+
50+
_jwtSettingsMock
51+
.Setup(x => x.Value)
52+
.Returns(
53+
new JwtSettings
54+
{
55+
Audience = Utils.JwtSettings.Audience,
56+
Issuer = Utils.JwtSettings.Issuer,
57+
SecretKey = null, // Set SecretKey to null
58+
ExpiryMinutes = Utils.JwtSettings.ExpiryMinutes,
59+
}
60+
);
61+
62+
_jwtTokenGenerator = new JwtTokenGenerator(
63+
_jwtSettingsMock.Object,
64+
_dateTimeProviderMock.Object,
65+
_loggerMock.Object
66+
);
67+
68+
// act
69+
var result = _jwtTokenGenerator.GenerateToken(
70+
user.Id,
71+
user.Email,
72+
user.FirstName,
73+
user.LastName
74+
);
75+
76+
//assert
77+
78+
result.IsFailed.Should().BeTrue();
79+
}
80+
81+
[Fact]
82+
public void GenerateToken_ShouldReturnOkWithValidToken_WhenValidParametersAreProvided()
83+
{
84+
//arrange
85+
var user = Utils.User.Create();
86+
87+
// act
88+
var result = _jwtTokenGenerator.GenerateToken(
89+
user.Id,
90+
user.Email,
91+
user.FirstName,
92+
user.LastName
93+
);
94+
95+
//assert
96+
result.IsSuccess.Should().BeTrue();
97+
result.Value.Should().NotBeNullOrEmpty();
98+
}
99+
}

0 commit comments

Comments
 (0)