diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1128516..21f6245 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,11 +47,10 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true - + resharper: name: Resharper runs-on: ubuntu-latest - if: false #ReSharper currently does not support .NET 7 steps: - uses: actions/checkout@v3.1.0 - uses: actions/setup-dotnet@v3.0.3 @@ -62,5 +61,5 @@ jobs: uses: VMelnalksnis/resharper-inspect-action@v0.2.5 with: solution: NordigenDotNet.sln - resharper-version: 2022.1.2 + resharper-version: 2022.3.0-eap09 treat-warnings-as-errors: true diff --git a/source/VMelnalksnis.NordigenDotNet/Requisitions/Requisition.cs b/source/VMelnalksnis.NordigenDotNet/Requisitions/Requisition.cs index 03f1b74..7b376ec 100644 --- a/source/VMelnalksnis.NordigenDotNet/Requisitions/Requisition.cs +++ b/source/VMelnalksnis.NordigenDotNet/Requisitions/Requisition.cs @@ -52,7 +52,7 @@ public record Requisition /// Gets the end-user-agreement of this requisition. [JsonIgnore] - public Guid? Agreement => string.IsNullOrWhiteSpace(AgreementValue) ? null : Guid.Parse(AgreementValue); + public Guid? Agreement => string.IsNullOrWhiteSpace(AgreementValue) ? null : Guid.Parse(AgreementValue!); /// Gets or sets a two-letter country code (ISO 639-1). [JsonPropertyName("user_language")] diff --git a/source/VMelnalksnis.NordigenDotNet/Serialization/NordigenSerializationContext.cs b/source/VMelnalksnis.NordigenDotNet/Serialization/NordigenSerializationContext.cs index b46b8a8..1d92dc3 100644 --- a/source/VMelnalksnis.NordigenDotNet/Serialization/NordigenSerializationContext.cs +++ b/source/VMelnalksnis.NordigenDotNet/Serialization/NordigenSerializationContext.cs @@ -12,7 +12,7 @@ using VMelnalksnis.NordigenDotNet.Requisitions; namespace VMelnalksnis.NordigenDotNet.Serialization; -/// +/// [JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Metadata, IgnoreReadOnlyProperties = true)] [JsonSerializable(typeof(Account))] [JsonSerializable(typeof(AccountDetailsWrapper))] diff --git a/source/VMelnalksnis.NordigenDotNet/Tokens/TokenSerializationContext.cs b/source/VMelnalksnis.NordigenDotNet/Tokens/TokenSerializationContext.cs index 7de9286..968778f 100644 --- a/source/VMelnalksnis.NordigenDotNet/Tokens/TokenSerializationContext.cs +++ b/source/VMelnalksnis.NordigenDotNet/Tokens/TokenSerializationContext.cs @@ -6,7 +6,7 @@ using System.Text.Json.Serialization; namespace VMelnalksnis.NordigenDotNet.Tokens; -/// +/// [JsonSerializable(typeof(AccessToken))] [JsonSerializable(typeof(Token))] [JsonSerializable(typeof(TokenCreation))] diff --git a/tests/VMelnalksnis.NordigenDotNet.Tests.Integration/Accounts/AccountClientTests.cs b/tests/VMelnalksnis.NordigenDotNet.Tests.Integration/Accounts/AccountClientTests.cs index 0a1257f..854d1ae 100644 --- a/tests/VMelnalksnis.NordigenDotNet.Tests.Integration/Accounts/AccountClientTests.cs +++ b/tests/VMelnalksnis.NordigenDotNet.Tests.Integration/Accounts/AccountClientTests.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License 2.0. // See LICENSE file in the project root for full license information. +using System; using System.Linq; using System.Threading.Tasks; @@ -15,31 +16,35 @@ using static VMelnalksnis.NordigenDotNet.Tests.Integration.ServiceProviderFixtur namespace VMelnalksnis.NordigenDotNet.Tests.Integration.Accounts; -public sealed class AccountClientTests : IClassFixture +public sealed class AccountClientTests : IClassFixture, IAsyncLifetime { private readonly ITestOutputHelper _testOutputHelper; private readonly INordigenClient _nordigenClient; - private readonly Requisition _requisition; + private Requisition _requisition = null!; + private Guid _accountId; public AccountClientTests(ITestOutputHelper testOutputHelper, ServiceProviderFixture serviceProviderFixture) { _testOutputHelper = testOutputHelper; _nordigenClient = serviceProviderFixture.GetNordigenClient(testOutputHelper); + } - _requisition = GetRequisition().GetAwaiter().GetResult(); + public async Task InitializeAsync() + { + _requisition = await GetRequisition(); + _accountId = _requisition.Accounts.OrderBy(guid => guid).First(); } [Fact] public async Task Get_ShouldReturnExpected() { _requisition.Accounts.Should().HaveCount(2); - var id = _requisition.Accounts.First(); - var account = await _nordigenClient.Accounts.Get(id); + var account = await _nordigenClient.Accounts.Get(_accountId); var currentInstant = SystemClock.Instance.GetCurrentInstant(); using (new AssertionScope()) { - account.Id.Should().Be(id); + account.Id.Should().Be(_accountId); account.Created.Should().BeLessThan(account.LastAccessed).And.BeLessThan(currentInstant); account.LastAccessed.Should().BeGreaterThan(currentInstant - Duration.FromMinutes(1)); account.Iban.Should().Be("GL3343697694912188"); @@ -51,9 +56,7 @@ public sealed class AccountClientTests : IClassFixture [Fact] public async Task GetDetails_ShouldReturnExpected() { - var id = _requisition.Accounts.First(); - - var accountDetails = await _nordigenClient.Accounts.GetDetails(id); + var accountDetails = await _nordigenClient.Accounts.GetDetails(_accountId); using (new AssertionScope()) { @@ -70,9 +73,7 @@ public sealed class AccountClientTests : IClassFixture [Fact] public async Task GetBalances_ShouldReturnExpected() { - var id = _requisition.Accounts.First(); - - var balances = await _nordigenClient.Accounts.GetBalances(id); + var balances = await _nordigenClient.Accounts.GetBalances(_accountId); balances.Should().HaveCount(2); @@ -89,16 +90,14 @@ public sealed class AccountClientTests : IClassFixture [Fact] public async Task GetTransactions_ShouldReturnExpected() { - var id = _requisition.Accounts.First(); - var currentInstant = SystemClock.Instance.GetCurrentInstant(); var currentZone = DateTimeZoneProviders.Tzdb.GetSystemDefault(); var currentDate = currentInstant.InZone(currentZone).Date; var dateTo = currentInstant; var dateFrom = dateTo - Duration.FromDays(7); - var transactions = await _nordigenClient.Accounts.GetTransactions(id, new Interval(dateFrom, dateTo)); - var allTransactions = await _nordigenClient.Accounts.GetTransactions(id); + var transactions = await _nordigenClient.Accounts.GetTransactions(_accountId, new Interval(dateFrom, dateTo)); + var allTransactions = await _nordigenClient.Accounts.GetTransactions(_accountId); using (new AssertionScope()) { @@ -131,11 +130,12 @@ public sealed class AccountClientTests : IClassFixture } } + public Task DisposeAsync() => Task.CompletedTask; + private async Task GetRequisition() { var requisition = await _nordigenClient.Requisitions.Get().SingleOrDefaultAsync(r => - r.InstitutionId is IntegrationInstitutionId && - r.Status is RequisitionStatus.Ln); + r is { InstitutionId: IntegrationInstitutionId, Status: RequisitionStatus.Ln }); if (requisition is not null) { diff --git a/tests/VMelnalksnis.NordigenDotNet.Tests.Integration/Requisitions/RequisitionsClientTests.cs b/tests/VMelnalksnis.NordigenDotNet.Tests.Integration/Requisitions/RequisitionsClientTests.cs index 97e8f3c..81bcf10 100644 --- a/tests/VMelnalksnis.NordigenDotNet.Tests.Integration/Requisitions/RequisitionsClientTests.cs +++ b/tests/VMelnalksnis.NordigenDotNet.Tests.Integration/Requisitions/RequisitionsClientTests.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Linq; -using System.Net; using System.Net.Http; using System.Threading; using System.Threading.Tasks; @@ -15,6 +14,10 @@ using VMelnalksnis.NordigenDotNet.Requisitions; using Xunit.Abstractions; +#if NET6_0_OR_GREATER +using System.Net; +#endif + using static VMelnalksnis.NordigenDotNet.Tests.Integration.ServiceProviderFixture; namespace VMelnalksnis.NordigenDotNet.Tests.Integration.Requisitions;