Skip to content

Commit add66f1

Browse files
committed
chore: Cleanup Access Layer
1 parent 38a3627 commit add66f1

File tree

4 files changed

+18
-13
lines changed

4 files changed

+18
-13
lines changed

src/app/ApplicationTemplate.Access/Configuration/SerializationConfiguration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace ApplicationTemplate;
1414
[JsonSerializable(typeof(AuthenticationToken))]
1515
[JsonSerializable(typeof(AuthenticationData))]
1616
[JsonSerializable(typeof(ApplicationSettings))]
17-
[JsonSerializable(typeof(ProblemDetails))]
17+
[JsonSerializable(typeof(Refit.ProblemDetails))]
1818
[JsonSerializable(typeof(PostData))]
1919
[JsonSerializable(typeof(PostData[]))]
2020
[JsonSerializable(typeof(DadJokesResponse))]

src/app/ApplicationTemplate.Tests.Functional/ApplicationTemplate.Tests.Functional.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
<ItemGroup>
1414
<PackageReference Include="AutoFixture.Xunit2" Version="4.18.1" />
15+
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" Version="9.3.0" />
1516
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
1617
<PackageReference Include="NSubstitute" Version="5.3.0" />
1718
<PackageReference Include="NSubstitute.Analyzers.CSharp" Version="1.0.17">

src/app/ApplicationTemplate.Tests.Unit/ApplicationTemplate.Tests.Unit.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
<ItemGroup>
1313
<PackageReference Include="AutoFixture.Xunit2" Version="4.18.1" />
14+
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" Version="9.3.0" />
1415
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
1516
<PackageReference Include="NSubstitute" Version="5.3.0" />
1617
<PackageReference Include="NSubstitute.Analyzers.CSharp" Version="1.0.17">

src/app/ApplicationTemplate.Tests.Unit/AuthenticationServiceShould.cs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,18 @@ public sealed class AuthenticationServiceShould : IDisposable
2020
{
2121
private readonly IAuthenticationService _authenticationService;
2222
private readonly IApplicationSettingsRepository _applicationSettingsRepository;
23-
private readonly IAuthenticationApiClient _authenticationRepository;
23+
private readonly IAuthenticationApiClient _authenticationApiClient;
2424
private readonly BehaviorSubject<ApplicationSettings> _applicationSettingsSubject;
2525

2626
public AuthenticationServiceShould()
2727
{
2828
_applicationSettingsRepository = Substitute.For<IApplicationSettingsRepository>();
29-
_authenticationRepository = Substitute.For<IAuthenticationApiClient>();
29+
_authenticationApiClient = Substitute.For<IAuthenticationApiClient>();
3030

3131
_authenticationService = new AuthenticationService(
3232
Substitute.For<ILoggerFactory>(),
3333
_applicationSettingsRepository,
34-
_authenticationRepository
34+
_authenticationApiClient
3535
);
3636

3737
_applicationSettingsSubject = new BehaviorSubject<ApplicationSettings>(CreateApplicationSettings());
@@ -51,7 +51,7 @@ public async Task ReturnAuthenticationData_WhenLoggingIn()
5151
var password = "password";
5252
var authenticationData = CreateAuthenticationData(email: email);
5353

54-
_authenticationRepository.Login(Arg.Any<CancellationToken>(), Arg.Any<string>(), Arg.Any<string>()).Returns(authenticationData);
54+
_authenticationApiClient.Login(Arg.Any<CancellationToken>(), Arg.Any<string>(), Arg.Any<string>()).Returns(authenticationData);
5555

5656
// Act
5757
var result = await _authenticationService.Login(CancellationToken.None, email, password);
@@ -66,19 +66,22 @@ public async Task ReturnAuthenticationData_WhenRefreshingTheToken()
6666
// Arrange
6767
var email = "email";
6868
var password = "password";
69-
var refreshedEmail = "RefreshedEmail";
70-
var authenticationData = CreateAuthenticationData(email: email);
71-
var refreshAuthenticationData = CreateAuthenticationData(email: refreshedEmail);
69+
var now = DateTimeOffset.Now;
70+
var authenticationData = CreateAuthenticationData(email: email, now: now);
71+
72+
now = now.Add(TimeSpan.FromMinutes(1)); // Advance the time to simulate the token expiration.
73+
74+
var refreshAuthenticationData = CreateAuthenticationData(email: email, now: now);
7275

73-
_authenticationRepository.Login(Arg.Any<CancellationToken>(), Arg.Any<string>(), Arg.Any<string>()).Returns(authenticationData);
74-
_authenticationRepository.RefreshToken(Arg.Any<CancellationToken>(), Arg.Any<AuthenticationData>()).Returns(refreshAuthenticationData);
76+
_authenticationApiClient.Login(Arg.Any<CancellationToken>(), Arg.Any<string>(), Arg.Any<string>()).Returns(authenticationData);
77+
_authenticationApiClient.RefreshToken(Arg.Any<CancellationToken>(), Arg.Any<AuthenticationData>()).Returns(refreshAuthenticationData);
7578

7679
// Act
7780
var loginResult = await _authenticationService.Login(CancellationToken.None, email, password);
7881
var result = await _authenticationService.RefreshToken(CancellationToken.None, new HttpRequestMessage(), loginResult);
7982

8083
// Assert
81-
Assert.Equal(result.AccessToken.Payload.Email, refreshedEmail);
84+
Assert.True(result.AccessToken.Payload.IssuedAt > loginResult.AccessToken.Payload.IssuedAt);
8285
}
8386

8487
[Fact]
@@ -173,11 +176,11 @@ private void ResetApplicationSettings()
173176
_applicationSettingsSubject.OnNext(CreateApplicationSettings());
174177
}
175178

176-
private AuthenticationData CreateAuthenticationData(string email, bool isAccessTokenNull = false)
179+
private AuthenticationData CreateAuthenticationData(string email, DateTimeOffset? now = null)
177180
{
178181
return new AuthenticationData
179182
{
180-
AccessToken = isAccessTokenNull ? null : new JwtData<AuthenticationToken>(AuthenticationApiClientMock.CreateJsonWebToken(email: email, serializerOptions: SerializationConfiguration.DefaultJsonSerializerOptions)),
183+
AccessToken = new JwtData<AuthenticationToken>(AuthenticationApiClientMock.CreateJsonWebToken(email: email, now: now, serializerOptions: SerializationConfiguration.DefaultJsonSerializerOptions)),
181184
RefreshToken = "RefreshToken",
182185
};
183186
}

0 commit comments

Comments
 (0)