feat: Add endpoints
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
<PackageReference Include="FluentAssertions" Version="6.7.0"/>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0"/>
|
||||
<PackageReference Include="xunit" Version="2.4.1"/>
|
||||
<PackageReference Include="xunit.analyzers" Version="0.10.0"/>
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
// Copyright 2022 Valters Melnalksnis
|
||||
// Licensed under the Apache License 2.0.
|
||||
// See LICENSE file in the project root for full license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using NodaTime;
|
||||
|
||||
namespace VMelnalksnis.NordigenDotNet.DependencyInjection.Tests;
|
||||
|
||||
public sealed class ServiceCollectionExtensionsTests
|
||||
{
|
||||
[Fact]
|
||||
public void AddNordigenDotNet_ShouldRegisterRequiredServices()
|
||||
{
|
||||
var configuration = new ConfigurationBuilder()
|
||||
.AddInMemoryCollection(new List<KeyValuePair<string, string>>
|
||||
{
|
||||
new($"{NordigenOptions.SectionName}:{nameof(NordigenOptions.BaseAddress)}", "https://ob.nordigen.com/"),
|
||||
new($"{NordigenOptions.SectionName}:{nameof(NordigenOptions.SecretId)}", $"{Guid.NewGuid():D}"),
|
||||
new($"{NordigenOptions.SectionName}:{nameof(NordigenOptions.SecretKey)}", $"{Guid.NewGuid():N}"),
|
||||
})
|
||||
.Build();
|
||||
|
||||
var serviceCollection = new ServiceCollection();
|
||||
|
||||
serviceCollection.AddNordigenDotNet(configuration, DateTimeZoneProviders.Tzdb);
|
||||
|
||||
var serviceProvider = serviceCollection.BuildServiceProvider();
|
||||
var nordigenClient = serviceProvider.GetRequiredService<INordigenClient>();
|
||||
|
||||
nordigenClient.Should().NotBeNull();
|
||||
}
|
||||
}
|
||||
+5
@@ -6,6 +6,11 @@
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\source\VMelnalksnis.NordigenDotNet\VMelnalksnis.NordigenDotNet.csproj"/>
|
||||
<ProjectReference Include="..\..\VMelnalksnis.NordigenDotNet.DependencyInjection\VMelnalksnis.NordigenDotNet.DependencyInjection.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1"/>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,37 @@
|
||||
// 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 VMelnalksnis.NordigenDotNet.Accounts;
|
||||
using VMelnalksnis.NordigenDotNet.Requisitions;
|
||||
|
||||
namespace VMelnalksnis.NordigenDotNet.Tests.Integration.Accounts;
|
||||
|
||||
public sealed class AccountClientTests : IClassFixture<ServiceProviderFixture>
|
||||
{
|
||||
private readonly IAccountClient _accountClient;
|
||||
private readonly IRequisitionClient _requisitionClient;
|
||||
|
||||
public AccountClientTests(ServiceProviderFixture serviceProviderFixture)
|
||||
{
|
||||
_accountClient = serviceProviderFixture.AccountClient;
|
||||
_requisitionClient = serviceProviderFixture.RequisitionClient;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Get()
|
||||
{
|
||||
var requisition = await _requisitionClient.Get().SingleAsync();
|
||||
|
||||
foreach (var id in requisition.Accounts)
|
||||
{
|
||||
await _accountClient.Get(id);
|
||||
await _accountClient.GetDetails(id);
|
||||
await _accountClient.GetBalances(id);
|
||||
await _accountClient.GetTransactions(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
// Copyright 2022 Valters Melnalksnis
|
||||
// Licensed under the Apache License 2.0.
|
||||
// See LICENSE file in the project root for full license information.
|
||||
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using VMelnalksnis.NordigenDotNet.Institutions;
|
||||
|
||||
namespace VMelnalksnis.NordigenDotNet.Tests.Integration.Institutions;
|
||||
|
||||
public sealed class InstitutionClientTests : IClassFixture<ServiceProviderFixture>
|
||||
{
|
||||
private readonly IInstitutionClient _institutionClient;
|
||||
|
||||
public InstitutionClientTests(ServiceProviderFixture serviceProviderFixture)
|
||||
{
|
||||
_institutionClient = serviceProviderFixture.InstitutionClient;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetByCountry()
|
||||
{
|
||||
var institutions = await _institutionClient.GetByCountry("LV");
|
||||
|
||||
institutions.Count.Should().Be(17);
|
||||
var expectedInstitution = institutions.Should().ContainSingle(i => i.Id == "CITADELE_PARXLV22").Subject;
|
||||
|
||||
var institution = await _institutionClient.Get(expectedInstitution.Id);
|
||||
institution.Should().BeEquivalentTo(expectedInstitution);
|
||||
}
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
// 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.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using VMelnalksnis.NordigenDotNet.Requisitions;
|
||||
|
||||
namespace VMelnalksnis.NordigenDotNet.Tests.Integration.Requisitions;
|
||||
|
||||
public sealed class RequisitionsClientTests : IClassFixture<ServiceProviderFixture>
|
||||
{
|
||||
private readonly IRequisitionClient _requisitionClient;
|
||||
|
||||
public RequisitionsClientTests(ServiceProviderFixture serviceProviderFixture)
|
||||
{
|
||||
_requisitionClient = serviceProviderFixture.RequisitionClient;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Get()
|
||||
{
|
||||
var requisitions = await _requisitionClient.Get().ToListAsync();
|
||||
var expectedRequisition = requisitions.Should().ContainSingle().Subject;
|
||||
|
||||
var requisition = await _requisitionClient.Get(expectedRequisition.Id);
|
||||
requisition.Should().BeEquivalentTo(expectedRequisition);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Post()
|
||||
{
|
||||
var creation = new RequisitionCreation(new("https://gnomeshade.org/"), "CITADELE_PARXLV22");
|
||||
|
||||
var requisition = await _requisitionClient.Post(creation);
|
||||
|
||||
await _requisitionClient.Delete(requisition.Id);
|
||||
|
||||
(await FluentActions
|
||||
.Awaiting(() => _requisitionClient.Get(requisition.Id))
|
||||
.Should()
|
||||
.ThrowExactlyAsync<HttpRequestException>())
|
||||
.Which.StatusCode
|
||||
.Should()
|
||||
.Be(HttpStatusCode.NotFound);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
// Copyright 2022 Valters Melnalksnis
|
||||
// Licensed under the Apache License 2.0.
|
||||
// See LICENSE file in the project root for full license information.
|
||||
|
||||
using System;
|
||||
|
||||
using JetBrains.Annotations;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using NodaTime;
|
||||
|
||||
using VMelnalksnis.NordigenDotNet.Accounts;
|
||||
using VMelnalksnis.NordigenDotNet.DependencyInjection;
|
||||
using VMelnalksnis.NordigenDotNet.Institutions;
|
||||
using VMelnalksnis.NordigenDotNet.Requisitions;
|
||||
|
||||
namespace VMelnalksnis.NordigenDotNet.Tests.Integration;
|
||||
|
||||
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
|
||||
public sealed class ServiceProviderFixture
|
||||
{
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
|
||||
public ServiceProviderFixture()
|
||||
{
|
||||
var configuration = new ConfigurationBuilder()
|
||||
.AddEnvironmentVariables()
|
||||
.AddUserSecrets<ServiceProviderFixture>()
|
||||
.Build();
|
||||
|
||||
var serviceCollection = new ServiceCollection();
|
||||
serviceCollection.AddNordigenDotNet(configuration, DateTimeZoneProviders.Tzdb);
|
||||
|
||||
_serviceProvider = serviceCollection.BuildServiceProvider();
|
||||
}
|
||||
|
||||
public IAccountClient AccountClient => _serviceProvider.GetRequiredService<IAccountClient>();
|
||||
|
||||
public IInstitutionClient InstitutionClient => _serviceProvider.GetRequiredService<IInstitutionClient>();
|
||||
|
||||
public IRequisitionClient RequisitionClient => _serviceProvider.GetRequiredService<IRequisitionClient>();
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<UserSecretsId>471f5b3c-5334-4315-8d06-7bcfb17af644</UserSecretsId>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\source\VMelnalksnis.NordigenDotNet\VMelnalksnis.NordigenDotNet.csproj" />
|
||||
<ProjectReference Include="..\..\VMelnalksnis.NordigenDotNet.DependencyInjection\VMelnalksnis.NordigenDotNet.DependencyInjection.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
|
||||
<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="System.Linq.Async" Version="6.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,14 +0,0 @@
|
||||
// Copyright 2022 Valters Melnalksnis
|
||||
// Licensed under the Apache License 2.0.
|
||||
// See LICENSE file in the project root for full license information.
|
||||
|
||||
namespace VMelnalksnis.NordigenDotNet.Tests;
|
||||
|
||||
public sealed class PlaceholderTests
|
||||
{
|
||||
[Fact]
|
||||
public void Pass()
|
||||
{
|
||||
Assert.True(true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user