feat: Cache tokens between calls (#19)
This commit is contained in:
+1
-1
@@ -28,7 +28,7 @@ public sealed class ServiceCollectionExtensionsTests
|
||||
|
||||
var serviceCollection = new ServiceCollection();
|
||||
|
||||
serviceCollection.AddNordigenDotNet(configuration, DateTimeZoneProviders.Tzdb);
|
||||
serviceCollection.AddNordigenDotNet(configuration, SystemClock.Instance, DateTimeZoneProviders.Tzdb);
|
||||
|
||||
var serviceProvider = serviceCollection.BuildServiceProvider();
|
||||
var nordigenClient = serviceProvider.GetRequiredService<INordigenClient>();
|
||||
|
||||
@@ -10,6 +10,7 @@ using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using NodaTime;
|
||||
using NodaTime.Testing;
|
||||
|
||||
using VMelnalksnis.NordigenDotNet.DependencyInjection;
|
||||
|
||||
@@ -22,16 +23,20 @@ public sealed class ServiceProviderFixture
|
||||
|
||||
public ServiceProviderFixture()
|
||||
{
|
||||
Clock = new(SystemClock.Instance.GetCurrentInstant());
|
||||
|
||||
var configuration = new ConfigurationBuilder()
|
||||
.AddEnvironmentVariables()
|
||||
.AddUserSecrets<ServiceProviderFixture>()
|
||||
.Build();
|
||||
|
||||
var serviceCollection = new ServiceCollection();
|
||||
serviceCollection.AddNordigenDotNet(configuration, DateTimeZoneProviders.Tzdb);
|
||||
serviceCollection.AddNordigenDotNet(configuration, Clock, DateTimeZoneProviders.Tzdb);
|
||||
|
||||
_serviceProvider = serviceCollection.BuildServiceProvider();
|
||||
}
|
||||
|
||||
public FakeClock Clock { get; }
|
||||
|
||||
public INordigenClient NordigenClient => _serviceProvider.GetRequiredService<INordigenClient>();
|
||||
}
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
// Copyright 2022 Valters Melnalksnis
|
||||
// Licensed under the Apache License 2.0.
|
||||
// See LICENSE file in the project root for full license information.
|
||||
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using NodaTime.Testing;
|
||||
|
||||
namespace VMelnalksnis.NordigenDotNet.Tests.Integration.Tokens;
|
||||
|
||||
public sealed class TokenDelegatingHandlerTests : IClassFixture<ServiceProviderFixture>
|
||||
{
|
||||
private readonly FakeClock _fakeClock;
|
||||
private readonly INordigenClient _nordigenClient;
|
||||
|
||||
public TokenDelegatingHandlerTests(ServiceProviderFixture serviceProviderFixture)
|
||||
{
|
||||
_fakeClock = serviceProviderFixture.Clock;
|
||||
_nordigenClient = serviceProviderFixture.NordigenClient;
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(86400)]
|
||||
[InlineData(2592000)]
|
||||
public async Task ShouldSucceedAfterPeriod(int seconds)
|
||||
{
|
||||
var expectedAgreement = await _nordigenClient.Agreements.Get().OrderBy(a => a.Created).FirstAsync();
|
||||
|
||||
_fakeClock.AdvanceSeconds(seconds);
|
||||
|
||||
var agreement = await _nordigenClient.Agreements.Get().OrderBy(a => a.Created).FirstAsync();
|
||||
agreement.Should().BeEquivalentTo(expectedAgreement);
|
||||
}
|
||||
}
|
||||
+1
@@ -15,6 +15,7 @@
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.1"/>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.1"/>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0"/>
|
||||
<PackageReference Include="NodaTime.Testing" Version="3.1.0"/>
|
||||
<PackageReference Include="System.Linq.Async" Version="6.0.1"/>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user