Skip to content
Snippets Groups Projects
Commit 87c4f472 authored by Klaus Fischer's avatar Klaus Fischer
Browse files

Added unit tests for Router

parent 86e28790
No related branches found
No related tags found
Loading
FitConnect
\ No newline at end of file
......@@ -2,11 +2,21 @@ using Autofac;
using FitConnect.Interfaces.Sender;
using FitConnect.Interfaces.Subscriber;
using FitConnect.Models;
using FitConnect.Services;
using FitConnect.Services.Interfaces;
using Microsoft.Extensions.Logging;
namespace FitConnect;
public static class Client {
/// <summary>
/// Creates the Sender Client
/// </summary>
/// <param name="environment">FIT-Connect Environment</param>
/// <param name="clientId">Client ID</param>
/// <param name="clientSecret">Client Secret</param>
/// <param name="logger">An instance of an ILogger</param>
/// <returns></returns>
public static ISender GetSender(FitConnectEnvironment environment, string clientId,
string clientSecret, ILogger? logger = null) {
return new Sender(environment, clientId, clientSecret, logger);
......@@ -15,7 +25,7 @@ public static class Client {
/// <summary>
/// Creates a subscriber client
/// </summary>
/// <param name="environment">FIT Connect Environment</param>
/// <param name="environment">FIT-Connect Environment</param>
/// <param name="clientId">Client ID</param>
/// <param name="clientSecret">Client Secret</param>
/// <param name="privateKeyDecryption">Private key for decryption</param>
......@@ -35,6 +45,18 @@ public static class Client {
privateKeySigning, publicKeyEncryption, publicKeySignatureVerification, logger);
}
/// <summary>
/// Returns a Router API implementation
/// </summary>
/// <param name="environment">FIT-Connect Environment</param>
/// <param name="logger">An instance of an ILogger</param>
/// <returns></returns>
public static IRouter
GetRouter(FitConnectEnvironment environment, ILogger? logger = null) {
return new Router(environment, logger: logger);
}
#if DEBUG
public static ISender GetSender(FitConnectEnvironment environment, string clientId,
string clientSecret, IContainer container) {
......
......@@ -30,7 +30,7 @@ public abstract class FitConnectClient {
OAuthService = new OAuthService(environment.TokenUrl, "V1", clientId, clientSecret, logger);
SubmissionService =
new SubmissionService(environment.SubmissionUrl[0], OAuthService, logger: logger);
RouteService = new RouteService(environment.RoutingUrl, OAuthService, logger: logger);
RouteService = new RouteService(environment.RoutingUrl, logger: logger);
CasesService = new CasesService(environment.SubmissionUrl[0], OAuthService, logger: logger);
DestinationService =
new DestinationService(environment.SubmissionUrl[0], OAuthService, logger: logger);
......
namespace FitConnect;
public interface IRouter {
public Task<List<FitConnect.Services.Models.v1.Routes.Route>> FindDestinationsAsync(
string leiaKey, string? ags = null,
string? ars = null,
string? areaId = null);
}
using FitConnect.Models;
using FitConnect.Services;
using FitConnect.Services.Interfaces;
using Microsoft.Extensions.Logging;
namespace FitConnect;
public class Router : IRouter {
private IRouteService RouteService;
public Router(FitConnectEnvironment environment, ILogger logger = null) {
RouteService = new RouteService(environment.RoutingUrl, "v1", logger: logger);
}
public async Task<List<FitConnect.Services.Models.v1.Routes.Route>> FindDestinationsAsync(string leiaKey, string? ags = null,
string? ars = null,
string? areaId = null) => await RouteService.GetDestinationIdAsync(leiaKey, ags, ars, areaId);
}
......@@ -225,6 +225,14 @@ public class Sender : FitConnectClient, ISender, ISenderWithDestination,
return JsonConvert.SerializeObject(metaData);
}
/// <summary>
/// Finding Areas
/// </summary>
/// <param name="filter"></param>
/// <param name="totalCount"></param>
/// <param name="offset"></param>
/// <param name="limit"></param>
/// <returns></returns>
public IEnumerable<Area> GetAreas(string filter, out int totalCount, int offset = 0,
int limit = 100) {
var dto = RouteService.GetAreas(filter, offset, limit).Result;
......@@ -252,4 +260,4 @@ public class Sender : FitConnectClient, ISender, ISenderWithDestination,
throw;
}
}
}
}
\ No newline at end of file
......@@ -7,11 +7,11 @@ using Route = FitConnect.Services.Models.v1.Routes.Route;
namespace FitConnect.Services;
public class RouteService : RestCallService, IRouteService {
private readonly IOAuthService _oAuthService;
public RouteService(string baseUrl, IOAuthService oAuthService, string version = "v1",
public RouteService(string baseUrl, string version = "v1",
ILogger? logger = null) : base($"{baseUrl}/{version}", logger) {
_oAuthService = oAuthService;
}
/// <summary>
......@@ -22,7 +22,7 @@ public class RouteService : RestCallService, IRouteService {
/// <param name="ars"></param>
/// <param name="areaId"></param>
/// <returns></returns>
public async Task<List<Route>> GetDestinationIdAsync(string leikaKey,
public async Task<List<Route>> GetDestinationIdAsync(string leikaKey,
string? ags, string? ars,
string? areaId) {
if (ars == null && ags == null && areaId == null)
......
using System.Linq;
using FitConnect;
using FitConnect.Interfaces.Sender;
using FitConnect.Models;
using FluentAssertions;
using Microsoft.Extensions.Logging;
using NUnit.Framework;
namespace IntegrationTests.Routing;
[TestFixture]
public class RoutingTests {
private IRouter _router;
private ILogger _logger;
[SetUp]
public void Setup() {
_logger = LoggerFactory.Create(
c => {
c.AddConsole();
c.SetMinimumLevel(LogLevel.Trace);
}
).CreateLogger("FIT-Connect");
_router = Client.GetRouter(FitConnectEnvironment.Development, _logger);
}
[Test]
public void FindDestination_WithArs() {
// Arrange
// Act
var routes = _router.FindDestinationsAsync("99123456760610", ars: "064350014014").Result;
// Assert
routes.Count.Should().BeGreaterThan(0);
var route = routes.First();
route.DestinationId.Should().NotBeNull();
route.DestinationSignature.Should().NotBeNull();
}
[Test]
public void FindDestination_WithAgs() {
// Arrange
// Act
var routes = _router.FindDestinationsAsync("99123456760610", ags: "06435014").Result;
// Assert
routes.Count.Should().BeGreaterThan(0);
var route = routes.First();
route.DestinationId.Should().NotBeNull();
route.DestinationSignature.Should().NotBeNull();
}
[Test]
public void FindDestination_WithAreaId() {
// Arrange
// Act
var routes = _router.FindDestinationsAsync("99123456760610", areaId: "931").Result;
// Assert
routes.Count.Should().BeGreaterThan(0);
var route = routes.First();
route.DestinationId.Should().NotBeNull();
route.DestinationSignature.Should().NotBeNull();
}
}
......@@ -201,4 +201,12 @@ Weißt die Submission zurück.
}
```
# Router
Die Client-Implementierung der Router API
```csharp
Client.GetRouter(FitConnectEnvironment.Development, logger);
```
[glossary](https://docs.fitko.de/fit-connect/docs/glossary/)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment