From 5007aaaead71414bf147121c39870ff5943bdd5e Mon Sep 17 00:00:00 2001 From: meysamhadeli Date: Mon, 9 May 2022 23:59:40 +0430 Subject: [PATCH] some change in test base --- Directory.Build.props | 16 +- src/ApiGateway/src/ApiGateway.csproj | 8 +- src/ApiGateway/src/appsettings.docker.json | 8 +- src/BuildingBlocks/BuildingBlocks.csproj | 182 ++++++------ src/BuildingBlocks/CAP/Extensions.cs | 4 +- src/BuildingBlocks/Caching/CachingBehavior.cs | 87 +++--- src/BuildingBlocks/Domain/Model/IEntity.cs | 5 + src/BuildingBlocks/EFCore/AppDbContextBase.cs | 10 +- .../EFCore/EfIdentityTxBehavior.cs | 2 +- src/BuildingBlocks/EFCore/EfTxBehavior.cs | 2 +- src/BuildingBlocks/EFCore/IDbContext.cs | 2 +- .../Utils/ConfigurationExtensions.cs | 10 +- .../src/Booking.Api/Booking.Api.csproj | 4 +- .../Booking/src/Booking.Api/appsettings.json | 6 +- .../Booking/src/Booking/Booking.csproj | 4 +- .../Flight/src/Flight.Api/Flight.Api.csproj | 6 +- src/Services/Flight/src/Flight.Api/Program.cs | 137 ++++----- src/Services/Flight/src/Flight/Flight.csproj | 13 +- .../GetFlightById/GetFlightByIdEndpoint.cs | 4 +- .../Flight/tests/Integration.Test.csproj | 56 ++-- src/Services/Flight/tests/TestFixture.cs | 270 ++++++++++++------ .../src/Identity.Api/Identity.Api.csproj | 4 +- ...-key-31079AE9DF4ED1F2D492E52BA5A644F5.json | 10 +- ...-key-74ABBD16A9EF6567607D1F748BB91597.json | 10 +- ...-key-9258A527F8A78F2F47D30E7F145FD59F.json | 10 +- .../src/Identity/Data/IdentityContext.cs | 9 +- .../Identity/src/Identity/Identity.csproj | 4 +- .../src/Passenger.Api/Passenger.Api.csproj | 4 +- .../appsettings.Development.json | 1 - .../Passenger/src/Passenger/Passenger.csproj | 6 +- 30 files changed, 523 insertions(+), 371 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 456ef29..308f857 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,6 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -10,38 +10,38 @@ PrivateAssets="all" Condition="$(MSBuildProjectExtension) == '.csproj'" /> - - - - - - - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/ApiGateway/src/ApiGateway.csproj b/src/ApiGateway/src/ApiGateway.csproj index f9270e5..35f3ce0 100644 --- a/src/ApiGateway/src/ApiGateway.csproj +++ b/src/ApiGateway/src/ApiGateway.csproj @@ -6,13 +6,13 @@ - - - + + + - + diff --git a/src/ApiGateway/src/appsettings.docker.json b/src/ApiGateway/src/appsettings.docker.json index d1addbf..bda427a 100644 --- a/src/ApiGateway/src/appsettings.docker.json +++ b/src/ApiGateway/src/appsettings.docker.json @@ -4,28 +4,28 @@ "flight": { "destinations": { "destination1": { - "address" : "http://flight" + "address": "http://flight" } } }, "identity": { "destinations": { "destination1": { - "address" : "http://identity" + "address": "http://identity" } } }, "passenger": { "destinations": { "destination1": { - "address" : "http://passenger" + "address": "http://passenger" } } }, "booking": { "destinations": { "destination1": { - "address" : "http://booking" + "address": "http://booking" } } } diff --git a/src/BuildingBlocks/BuildingBlocks.csproj b/src/BuildingBlocks/BuildingBlocks.csproj index 97d850b..6d5cf38 100644 --- a/src/BuildingBlocks/BuildingBlocks.csproj +++ b/src/BuildingBlocks/BuildingBlocks.csproj @@ -7,114 +7,114 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + - - + + diff --git a/src/BuildingBlocks/CAP/Extensions.cs b/src/BuildingBlocks/CAP/Extensions.cs index 85469fc..cf1c6fa 100644 --- a/src/BuildingBlocks/CAP/Extensions.cs +++ b/src/BuildingBlocks/CAP/Extensions.cs @@ -6,13 +6,13 @@ using DotNetCore.CAP.Messages; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using OpenTelemetry.Trace; namespace BuildingBlocks.CAP; public static class Extensions { - public static IServiceCollection AddCustomCap(this IServiceCollection services) where TDbContext : DbContext + public static IServiceCollection AddCustomCap(this IServiceCollection services) + where TDbContext : DbContext { var rabbitMqOptions = services.GetOptions("RabbitMq"); diff --git a/src/BuildingBlocks/Caching/CachingBehavior.cs b/src/BuildingBlocks/Caching/CachingBehavior.cs index 3a93d0f..4bd3889 100644 --- a/src/BuildingBlocks/Caching/CachingBehavior.cs +++ b/src/BuildingBlocks/Caching/CachingBehavior.cs @@ -1,63 +1,54 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using EasyCaching.Core; +using EasyCaching.Core; using MediatR; using Microsoft.Extensions.Logging; -namespace BuildingBlocks.Caching +namespace BuildingBlocks.Caching; + +public class CachingBehavior : IPipelineBehavior + where TRequest : notnull, IRequest + where TResponse : notnull { - public class CachingBehavior : IPipelineBehavior - where TRequest : notnull, IRequest - where TResponse : notnull + private readonly ICacheRequest _cacheRequest; + private readonly IEasyCachingProvider _cachingProvider; + private readonly ILogger> _logger; + private readonly int defaultCacheExpirationInHours = 1; + + public CachingBehavior(IEasyCachingProviderFactory cachingFactory, + ILogger> logger, + ICacheRequest cacheRequest) { - private readonly ILogger> _logger; - private readonly IEasyCachingProvider _cachingProvider; - private readonly ICacheRequest _cacheRequest; - private readonly int defaultCacheExpirationInHours = 1; + _logger = logger; + _cachingProvider = cachingFactory.GetCachingProvider("mem"); + _cacheRequest = cacheRequest; + } - public CachingBehavior(IEasyCachingProviderFactory cachingFactory, - ILogger> logger, - ICacheRequest cacheRequest) + + public async Task Handle(TRequest request, CancellationToken cancellationToken, + RequestHandlerDelegate next) + { + if (request is not ICacheRequest || _cacheRequest == null) + // No cache request found, so just continue through the pipeline + return await next(); + + var cacheKey = _cacheRequest.CacheKey; + var cachedResponse = await _cachingProvider.GetAsync(cacheKey); + if (cachedResponse.Value != null) { - _logger = logger; - _cachingProvider = cachingFactory.GetCachingProvider("mem"); - _cacheRequest = cacheRequest; + _logger.LogDebug("Response retrieved {TRequest} from cache. CacheKey: {CacheKey}", + typeof(TRequest).FullName, cacheKey); + return cachedResponse.Value; } + var response = await next(); - public async Task Handle(TRequest request, CancellationToken cancellationToken, - RequestHandlerDelegate next) - { + var expirationTime = _cacheRequest.AbsoluteExpirationRelativeToNow ?? + DateTime.Now.AddHours(defaultCacheExpirationInHours); - if (request is not ICacheRequest || _cacheRequest == null) - { - // No cache request found, so just continue through the pipeline - return await next(); - } + await _cachingProvider.SetAsync(cacheKey, response, expirationTime.TimeOfDay); - var cacheKey = _cacheRequest.CacheKey; - var cachedResponse = await _cachingProvider.GetAsync(cacheKey); - if (cachedResponse.Value != null) - { - _logger.LogDebug("Response retrieved {TRequest} from cache. CacheKey: {CacheKey}", - typeof(TRequest).FullName, cacheKey); - return cachedResponse.Value; - } + _logger.LogDebug("Caching response for {TRequest} with cache key: {CacheKey}", typeof(TRequest).FullName, + cacheKey); - var response = await next(); - - var expirationTime = _cacheRequest.AbsoluteExpirationRelativeToNow ?? - DateTime.Now.AddHours(defaultCacheExpirationInHours); - - await _cachingProvider.SetAsync(cacheKey, response, expirationTime.TimeOfDay); - - _logger.LogDebug("Caching response for {TRequest} with cache key: {CacheKey}", typeof(TRequest).FullName, - cacheKey); - - return response; - } + return response; } } diff --git a/src/BuildingBlocks/Domain/Model/IEntity.cs b/src/BuildingBlocks/Domain/Model/IEntity.cs index be3e512..c7b88a5 100644 --- a/src/BuildingBlocks/Domain/Model/IEntity.cs +++ b/src/BuildingBlocks/Domain/Model/IEntity.cs @@ -1,5 +1,10 @@ namespace BuildingBlocks.Domain.Model; +public interface IEntity +{ + long Id { get; } +} + public interface IEntity { TId Id { get; } diff --git a/src/BuildingBlocks/EFCore/AppDbContextBase.cs b/src/BuildingBlocks/EFCore/AppDbContextBase.cs index 2458209..b43409a 100644 --- a/src/BuildingBlocks/EFCore/AppDbContextBase.cs +++ b/src/BuildingBlocks/EFCore/AppDbContextBase.cs @@ -27,10 +27,14 @@ public abstract class AppDbContextBase : DbContext, IDbContext base.OnModelCreating(builder); } - public async Task BeginTransactionAsync(IsolationLevel isolationLevel, - CancellationToken cancellationToken = default) + public async Task BeginTransactionAsync(CancellationToken cancellationToken = default) { - _currentTransaction ??= await Database.BeginTransactionAsync(isolationLevel, cancellationToken); + if (_currentTransaction != null) + { + return; + } + + _currentTransaction = await Database.BeginTransactionAsync(IsolationLevel.ReadCommitted, cancellationToken); } public async Task CommitTransactionAsync(CancellationToken cancellationToken = default) diff --git a/src/BuildingBlocks/EFCore/EfIdentityTxBehavior.cs b/src/BuildingBlocks/EFCore/EfIdentityTxBehavior.cs index fba037e..e89b788 100644 --- a/src/BuildingBlocks/EFCore/EfIdentityTxBehavior.cs +++ b/src/BuildingBlocks/EFCore/EfIdentityTxBehavior.cs @@ -41,7 +41,7 @@ public class EfIdentityTxBehavior : IPipelineBehavior), typeof(TRequest).FullName); - await _dbContextBase.BeginTransactionAsync(IsolationLevel.ReadCommitted, cancellationToken); + await _dbContextBase.BeginTransactionAsync(cancellationToken); try { diff --git a/src/BuildingBlocks/EFCore/EfTxBehavior.cs b/src/BuildingBlocks/EFCore/EfTxBehavior.cs index 6373ee9..1220846 100644 --- a/src/BuildingBlocks/EFCore/EfTxBehavior.cs +++ b/src/BuildingBlocks/EFCore/EfTxBehavior.cs @@ -45,7 +45,7 @@ public class EfTxBehavior : IPipelineBehavior), typeof(TRequest).FullName); - await _dbContextBase.BeginTransactionAsync(IsolationLevel.ReadCommitted, cancellationToken); + await _dbContextBase.BeginTransactionAsync(cancellationToken); try { diff --git a/src/BuildingBlocks/EFCore/IDbContext.cs b/src/BuildingBlocks/EFCore/IDbContext.cs index 03d0e50..1f40e48 100644 --- a/src/BuildingBlocks/EFCore/IDbContext.cs +++ b/src/BuildingBlocks/EFCore/IDbContext.cs @@ -9,7 +9,7 @@ public interface IDbContext DbSet Set() where TEntity : class; IReadOnlyList GetDomainEvents(); - Task BeginTransactionAsync(IsolationLevel isolationLevel, CancellationToken cancellationToken = default); + Task BeginTransactionAsync(CancellationToken cancellationToken = default); Task CommitTransactionAsync(CancellationToken cancellationToken = default); Task RollbackTransactionAsync(CancellationToken cancellationToken = default); Task SaveChangesAsync(CancellationToken cancellationToken = default); diff --git a/src/BuildingBlocks/Utils/ConfigurationExtensions.cs b/src/BuildingBlocks/Utils/ConfigurationExtensions.cs index 44f8686..ace0c7b 100644 --- a/src/BuildingBlocks/Utils/ConfigurationExtensions.cs +++ b/src/BuildingBlocks/Utils/ConfigurationExtensions.cs @@ -1,3 +1,4 @@ +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -19,4 +20,11 @@ public static class ConfigurationExtensions configuration?.GetSection(section).Bind(model); return model; } -} \ No newline at end of file + + public static TModel GetOptions(this WebApplication app, string section) where TModel : new() + { + var model = new TModel(); + app.Configuration?.GetSection(section).Bind(model); + return model; + } +} diff --git a/src/Services/Booking/src/Booking.Api/Booking.Api.csproj b/src/Services/Booking/src/Booking.Api/Booking.Api.csproj index fe73e9a..b78bb73 100644 --- a/src/Services/Booking/src/Booking.Api/Booking.Api.csproj +++ b/src/Services/Booking/src/Booking.Api/Booking.Api.csproj @@ -5,9 +5,9 @@ enable enable - + - + diff --git a/src/Services/Booking/src/Booking.Api/appsettings.json b/src/Services/Booking/src/Booking.Api/appsettings.json index 72103ab..423f603 100644 --- a/src/Services/Booking/src/Booking.Api/appsettings.json +++ b/src/Services/Booking/src/Booking.Api/appsettings.json @@ -15,9 +15,9 @@ "DefaultConnection": "Server=.\\sqlexpress;Database=BookingDB;Trusted_Connection=True;MultipleActiveResultSets=true" }, "Jwt": { - "Authority": "https://localhost:5005", - "Audience": "booking-api" -}, + "Authority": "https://localhost:5005", + "Audience": "booking-api" + }, "RabbitMq": { "HostName": "localhost", "ExchangeName": "booking", diff --git a/src/Services/Booking/src/Booking/Booking.csproj b/src/Services/Booking/src/Booking/Booking.csproj index 1cd1e12..620f3da 100644 --- a/src/Services/Booking/src/Booking/Booking.csproj +++ b/src/Services/Booking/src/Booking/Booking.csproj @@ -13,11 +13,11 @@ - + - + diff --git a/src/Services/Flight/src/Flight.Api/Flight.Api.csproj b/src/Services/Flight/src/Flight.Api/Flight.Api.csproj index 7db9fe4..e1016b5 100644 --- a/src/Services/Flight/src/Flight.Api/Flight.Api.csproj +++ b/src/Services/Flight/src/Flight.Api/Flight.Api.csproj @@ -7,11 +7,11 @@ - + - + @@ -19,5 +19,5 @@ Always - + diff --git a/src/Services/Flight/src/Flight.Api/Program.cs b/src/Services/Flight/src/Flight.Api/Program.cs index 25c5716..cd4d5e5 100644 --- a/src/Services/Flight/src/Flight.Api/Program.cs +++ b/src/Services/Flight/src/Flight.Api/Program.cs @@ -8,7 +8,6 @@ using BuildingBlocks.Jwt; using BuildingBlocks.Logging; using BuildingBlocks.Mapster; using BuildingBlocks.MassTransit; -using BuildingBlocks.Mongo; using BuildingBlocks.OpenTelemetry; using BuildingBlocks.Swagger; using BuildingBlocks.Utils; @@ -24,78 +23,84 @@ using Microsoft.AspNetCore.Mvc.ApiExplorer; using Prometheus; using Serilog; - var builder = WebApplication.CreateBuilder(args); -var configuration = builder.Configuration; -var appOptions = builder.Services.GetOptions("AppOptions"); -Console.WriteLine(FiggleFonts.Standard.Render(appOptions.Name)); - -builder.Services.AddCustomDbContext(configuration, typeof(FlightRoot).Assembly); -builder.Services.AddMongoDbContext(configuration); - -builder.Services.AddScoped(); -builder.AddCustomSerilog(); -builder.Services.AddJwt(); -builder.Services.AddControllers(); -builder.Services.AddCustomSwagger(builder.Configuration, typeof(FlightRoot).Assembly); -builder.Services.AddCustomVersioning(); -builder.Services.AddCustomMediatR(); -builder.Services.AddValidatorsFromAssembly(typeof(FlightRoot).Assembly); -builder.Services.AddCustomProblemDetails(); -builder.Services.AddCustomMapster(typeof(FlightRoot).Assembly); -builder.Services.AddHttpContextAccessor(); -builder.Services.AddTransient(); -builder.Services.AddCustomMassTransit(typeof(FlightRoot).Assembly); -builder.Services.AddCustomOpenTelemetry(); -builder.Services.AddRouting(options => options.LowercaseUrls = true); - -builder.Services.AddGrpc(options => -{ - options.Interceptors.Add(); -}); - -builder.Services.AddMagicOnion(); - -SnowFlakIdGenerator.Configure(1); - -builder.Services.AddCachingRequest(new List -{ - typeof(FlightRoot).Assembly -}); - -builder.Services.AddEasyCaching(options => { options.UseInMemory(configuration, "mem"); }); +RegisterServices(builder); var app = builder.Build(); -if (app.Environment.IsDevelopment()) -{ - var provider = app.Services.GetService(); - app.UseCustomSwagger(provider); -} +ConfigureApplication(app); -app.UseSerilogRequestLogging(); -app.UseCorrelationId(); -app.UseRouting(); -app.UseHttpMetrics(); -app.UseMigrations(); -app.UseProblemDetails(); -app.UseHttpsRedirection(); -app.UseAuthentication(); -app.UseAuthorization(); - - - -app.UseEndpoints(endpoints => -{ - endpoints.MapControllers(); - endpoints.MapMetrics(); - endpoints.MapMagicOnionService(); -}); - -app.MapGet("/", x => x.Response.WriteAsync(appOptions.Name)); app.Run(); -public partial class Program +static void RegisterServices(WebApplicationBuilder builder) { + var configuration = builder.Configuration; + var services = builder.Services; + + var appOptions = services.GetOptions("AppOptions"); + Console.WriteLine(FiggleFonts.Standard.Render(appOptions.Name)); + + builder.AddCustomSerilog(); + + services.AddCustomDbContext(configuration, typeof(FlightRoot).Assembly); + services.AddScoped(); + services.AddJwt(); + services.AddControllers(); + services.AddCustomSwagger(builder.Configuration, typeof(FlightRoot).Assembly); + services.AddCustomVersioning(); + services.AddCustomMediatR(); + services.AddValidatorsFromAssembly(typeof(FlightRoot).Assembly); + services.AddCustomProblemDetails(); + services.AddCustomMapster(typeof(FlightRoot).Assembly); + services.AddHttpContextAccessor(); + services.AddTransient(); + services.AddCustomMassTransit(typeof(FlightRoot).Assembly); + services.AddCustomOpenTelemetry(); + services.AddRouting(options => options.LowercaseUrls = true); + + services.AddGrpc(options => + { + options.Interceptors.Add(); + }); + + services.AddMagicOnion(); + + SnowFlakIdGenerator.Configure(1); + + services.AddCachingRequest(new List {typeof(FlightRoot).Assembly}); + + services.AddEasyCaching(options => { options.UseInMemory(configuration, "mem"); }); } + +static void ConfigureApplication(WebApplication app) +{ + var appOptions = app.GetOptions("AppOptions"); + + if (app.Environment.IsDevelopment()) + { + var provider = app.Services.GetService(); + app.UseCustomSwagger(provider); + } + + app.UseSerilogRequestLogging(); + app.UseCorrelationId(); + app.UseRouting(); + app.UseHttpMetrics(); + app.UseMigrations(); + app.UseProblemDetails(); + app.UseHttpsRedirection(); + app.UseAuthentication(); + app.UseAuthorization(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + endpoints.MapMetrics(); + endpoints.MapMagicOnionService(); + }); + + app.MapGet("/", x => x.Response.WriteAsync(appOptions.Name)); +} + +public partial class Program { } diff --git a/src/Services/Flight/src/Flight/Flight.csproj b/src/Services/Flight/src/Flight/Flight.csproj index 6bc9a74..ce19486 100644 --- a/src/Services/Flight/src/Flight/Flight.csproj +++ b/src/Services/Flight/src/Flight/Flight.csproj @@ -12,15 +12,16 @@ - - - - - + + + + + + - + diff --git a/src/Services/Flight/src/Flight/Flights/Features/GetFlightById/GetFlightByIdEndpoint.cs b/src/Services/Flight/src/Flight/Flights/Features/GetFlightById/GetFlightByIdEndpoint.cs index 4d93d06..d6678ad 100644 --- a/src/Services/Flight/src/Flight/Flights/Features/GetFlightById/GetFlightByIdEndpoint.cs +++ b/src/Services/Flight/src/Flight/Flights/Features/GetFlightById/GetFlightByIdEndpoint.cs @@ -1,3 +1,4 @@ +using System; using System.Threading; using System.Threading.Tasks; using BuildingBlocks.Web; @@ -11,13 +12,14 @@ namespace Flight.Flights.Features.GetFlightById; [Route(BaseApiPath + "/flight")] public class GetFlightByIdEndpoint: BaseController { - [Authorize] + // [Authorize] [HttpGet("{id}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] [SwaggerOperation(Summary = "Get flight by id", Description = "Get flight by id")] public async Task GetById([FromRoute] GetFlightByIdQuery query, CancellationToken cancellationToken) { + throw new Exception(); var result = await Mediator.Send(query, cancellationToken); return Ok(result); diff --git a/src/Services/Flight/tests/Integration.Test.csproj b/src/Services/Flight/tests/Integration.Test.csproj index ab5e0e7..ce02b74 100644 --- a/src/Services/Flight/tests/Integration.Test.csproj +++ b/src/Services/Flight/tests/Integration.Test.csproj @@ -1,36 +1,34 @@ - - net6.0 + + net6.0 + false + + - false - + - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - - - - - + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + diff --git a/src/Services/Flight/tests/TestFixture.cs b/src/Services/Flight/tests/TestFixture.cs index 0d0735b..1fa5b94 100644 --- a/src/Services/Flight/tests/TestFixture.cs +++ b/src/Services/Flight/tests/TestFixture.cs @@ -1,19 +1,12 @@ using System; using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Security.Claims; using System.Threading.Tasks; +using BuildingBlocks.Domain.Model; using Flight.Data; using MediatR; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Testing; -using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.VisualStudio.TestPlatform.TestHost; -using Moq; using Respawn; using Xunit; @@ -24,97 +17,214 @@ public class SliceFixtureCollection : ICollectionFixture { } +// ref: https://github.com/jbogard/ContosoUniversityDotNetCore-Pages/blob/master/ContosoUniversity.IntegrationTests/SliceFixture.cs public class TestFixture : IAsyncLifetime { private readonly Checkpoint _checkpoint; private readonly IConfiguration _configuration; private readonly WebApplicationFactory _factory; - private static IServiceScopeFactory _scopeFactory = null!; + private readonly IServiceScopeFactory _scopeFactory; public TestFixture() { - _factory = new FlightTestApplicationFactory(); + var factory = FlightTestApplicationFactory(); - _configuration = _factory.Services.GetRequiredService(); - _scopeFactory = _factory.Services.GetRequiredService(); + _configuration = factory.Services.GetRequiredService(); + _scopeFactory = factory.Services.GetRequiredService(); _checkpoint = new Checkpoint(); } - class FlightTestApplicationFactory : WebApplicationFactory - { - protected override void ConfigureWebHost(IWebHostBuilder builder) - { - // builder.ConfigureAppConfiguration((_, configBuilder) => - // { - // configBuilder.AddInMemoryCollection(new Dictionary - // { - // {"ConnectionStrings:DefaultConnection", _connectionString} - // }); - // }); - - builder.ConfigureServices(services => - { - services.AddLogging(); - var httpContextAccessorService = services.FirstOrDefault(d => - d.ServiceType == typeof(IHttpContextAccessor)); - services.Remove(httpContextAccessorService); - services.AddSingleton(_ => Mock.Of()); - - services.AddSingleton(Mock.Of(w => - w.EnvironmentName == "Flight.IntegrationTest" && - w.ApplicationName == "Flight")); - - // services.AddMassTransitTestHarness(); - // - // // MassTransit Harness Setup -- Do Not Delete Comment - // services.AddMassTransitInMemoryTestHarness(cfg => - // { - // // Consumer Registration -- Do Not Delete Comment - // // cfg.AddConsumer(); - // // cfg.AddConsumerTestHarness(); - // }); - - EnsureDatabase(); - }); - } - - } - - - private static void EnsureDatabase() - { - using var scope = _scopeFactory.CreateScope(); - - var context = scope.ServiceProvider.GetService(); - - context?.Database.Migrate(); - } - - public static TScopedService GetService() - { - var scope = _scopeFactory.CreateScope(); - var service = scope.ServiceProvider.GetService(); - return service; - } - - - public static Task SendAsync(IRequest request) - { - using var scope = _scopeFactory.CreateScope(); - - var mediator = scope.ServiceProvider.GetService(); - - return mediator.Send(request); - } - public Task InitializeAsync() - => _checkpoint.Reset(_configuration.GetConnectionString("FlightConnection")); + { + return _checkpoint.Reset(_configuration.GetConnectionString("DefaultConnection")); + } public Task DisposeAsync() { _factory?.Dispose(); return Task.CompletedTask; } + + public WebApplicationFactory FlightTestApplicationFactory() + { + return new WebApplicationFactory() + .WithWebHostBuilder(builder => + { + builder.ConfigureAppConfiguration((_, configBuilder) => + { + configBuilder.AddInMemoryCollection(new Dictionary + { + { + "ConnectionStrings:DefaultConnection", + "Server=db;Database=FlightDB;User ID=sa;Password=@Aa123456" + } + }); + }); + }); + } + + public async Task ExecuteScopeAsync(Func action) + { + using var scope = _scopeFactory.CreateScope(); + var dbContext = scope.ServiceProvider.GetRequiredService(); + + try + { + await dbContext.BeginTransactionAsync(); + + await action(scope.ServiceProvider); + + await dbContext.CommitTransactionAsync(); + } + catch (Exception) + { + await dbContext.RollbackTransactionAsync(); + throw; + } + } + + public async Task ExecuteScopeAsync(Func> action) + { + using var scope = _scopeFactory.CreateScope(); + var dbContext = scope.ServiceProvider.GetRequiredService(); + + try + { + await dbContext.BeginTransactionAsync(); + + var result = await action(scope.ServiceProvider); + + await dbContext.CommitTransactionAsync(); + + return result; + } + catch (Exception) + { + await dbContext.RollbackTransactionAsync(); + throw; + } + } + + public Task ExecuteDbContextAsync(Func action) + { + return ExecuteScopeAsync(sp => action(sp.GetService())); + } + + public Task ExecuteDbContextAsync(Func action) + { + return ExecuteScopeAsync(sp => action(sp.GetService()).AsTask()); + } + + public Task ExecuteDbContextAsync(Func action) + { + return ExecuteScopeAsync(sp => action(sp.GetService(), sp.GetService())); + } + + public Task ExecuteDbContextAsync(Func> action) + { + return ExecuteScopeAsync(sp => action(sp.GetService())); + } + + public Task ExecuteDbContextAsync(Func> action) + { + return ExecuteScopeAsync(sp => action(sp.GetService()).AsTask()); + } + + public Task ExecuteDbContextAsync(Func> action) + { + return ExecuteScopeAsync(sp => action(sp.GetService(), sp.GetService())); + } + + public Task InsertAsync(params T[] entities) where T : class + { + return ExecuteDbContextAsync(db => + { + foreach (var entity in entities) db.Set().Add(entity); + return db.SaveChangesAsync(); + }); + } + + public Task InsertAsync(TEntity entity) where TEntity : class + { + return ExecuteDbContextAsync(db => + { + db.Set().Add(entity); + + return db.SaveChangesAsync(); + }); + } + + public Task InsertAsync(TEntity entity, TEntity2 entity2) + where TEntity : class + where TEntity2 : class + { + return ExecuteDbContextAsync(db => + { + db.Set().Add(entity); + db.Set().Add(entity2); + + return db.SaveChangesAsync(); + }); + } + + public Task InsertAsync(TEntity entity, TEntity2 entity2, TEntity3 entity3) + where TEntity : class + where TEntity2 : class + where TEntity3 : class + { + return ExecuteDbContextAsync(db => + { + db.Set().Add(entity); + db.Set().Add(entity2); + db.Set().Add(entity3); + + return db.SaveChangesAsync(); + }); + } + + public Task InsertAsync(TEntity entity, TEntity2 entity2, TEntity3 entity3, + TEntity4 entity4) + where TEntity : class + where TEntity2 : class + where TEntity3 : class + where TEntity4 : class + { + return ExecuteDbContextAsync(db => + { + db.Set().Add(entity); + db.Set().Add(entity2); + db.Set().Add(entity3); + db.Set().Add(entity4); + + return db.SaveChangesAsync(); + }); + } + + public Task FindAsync(int id) + where T : class, IEntity + { + return ExecuteDbContextAsync(db => db.Set().FindAsync(id).AsTask()); + } + + public Task SendAsync(IRequest request) + { + return ExecuteScopeAsync(sp => + { + var mediator = sp.GetRequiredService(); + + return mediator.Send(request); + }); + } + + public Task SendAsync(IRequest request) + { + return ExecuteScopeAsync(sp => + { + var mediator = sp.GetRequiredService(); + + return mediator.Send(request); + }); + } } diff --git a/src/Services/Identity/src/Identity.Api/Identity.Api.csproj b/src/Services/Identity/src/Identity.Api/Identity.Api.csproj index 2715513..1a10b24 100644 --- a/src/Services/Identity/src/Identity.Api/Identity.Api.csproj +++ b/src/Services/Identity/src/Identity.Api/Identity.Api.csproj @@ -7,11 +7,11 @@ - + - <_ContentIncludedByDefault Remove="keys\is-signing-key-C01EF7C986B61650360AFA59291E65BC.json" /> + <_ContentIncludedByDefault Remove="keys\is-signing-key-C01EF7C986B61650360AFA59291E65BC.json"/> diff --git a/src/Services/Identity/src/Identity.Api/keys/is-signing-key-31079AE9DF4ED1F2D492E52BA5A644F5.json b/src/Services/Identity/src/Identity.Api/keys/is-signing-key-31079AE9DF4ED1F2D492E52BA5A644F5.json index 2349aa7..8465fff 100644 --- a/src/Services/Identity/src/Identity.Api/keys/is-signing-key-31079AE9DF4ED1F2D492E52BA5A644F5.json +++ b/src/Services/Identity/src/Identity.Api/keys/is-signing-key-31079AE9DF4ED1F2D492E52BA5A644F5.json @@ -1 +1,9 @@ -{"Version":1,"Id":"31079AE9DF4ED1F2D492E52BA5A644F5","Created":"2022-04-18T20:26:55.3256244Z","Algorithm":"RS256","IsX509Certificate":false,"Data":"CfDJ8P3RLEnEd5JHjUIOTYyyJAzVTUgXKNFkjwfEWELe3r9iozJI4zF_jAjqORPS_C37DAQiHHtMYbgB7_j1Wwqck7qb_wv8CuDfNW8Hx0_UdWaO6vD0Sf_hIbBmN4RrwFwdMia8IUcNCUpwL9XJl95TLzD9FjpuyuWElQ8_5ZnF3SuErstPenQa4q9MYsj9XmPhNSk-BQan-cimxIAPYm1BgZNm5DMylT98sus9ScYTgOowV2n13MW0uA7kk9JOZIIjG07UuaSnuEQei03AU9zkejYD8yLwBi98ON5s0_jW2V3ebY-01VBQXhztu5Iev_SCynNyqQW-uqEzL9SSlzX8dEa79KKmOJEo2o325AVeDOBvco2XDCCra5RkRhUIPV3ZHvQr4EZJNqvi1zelWs3-FJ9vXE02-6XZkZKd6TzhPfiMDc1Z88-eVlx-uwhPjvJyfUSU9cAgbNDREDETxUcmIAMqqbXVAUCnaPkpbxy0VZ6YGSNsD9w77L6nIKiz-0KkVtxDZKCXh5BbDwAiWza8KWKclnVUnMLGhnjANEgKzzvmb1UJr1wZ0xRZ9KXyxr9oy0kP1Be-ysFSUd-YUTSgDvuQZV_DPjH2XP99tXqmfWJ8PJN9hswaRGhp5Jxo003l93u7Ivy-XR1BEhxVoYpvV9fCh8lo-N9ayHYpYlEsdArk1qvkuGRSlkBWNeEr_ZsvODbwM8Jp5q7pLK7cUy0bRHnYwkyHReS_fh6_tTdnfcQZPWb7fLN967XwebcVNOEENn5FX9oszCiy5BG9HQDIPffIx8bkKrZCMV77e5Qria9wNwkhIi3-7SOjRD-v5azkwiV0hTToAQTYsAT8DRTJklI90PF4JbsiMvObeoJtbwPy3E-K1_4DOxAjNwQFHf_zqWEbo9vmxGF-IerSwaJNSVfUUxnnYT8JWFYHYzWGyMvqtdymk1pmBaOJ64dgTVVcao7S0PwfV4DNUzxKQX-jNzqMihaXu4y8lyGIPJycJezm7nfGJiHhhhV4EWSQ1Y2ypBGv_s1iZ5pvTCeGkthY2Q4pe-GYKrFGTnBSLWwHqsVA2gwb1McjYjUGNgu_mnzyB45ZpKrqXQDDiozbQ4Ju7DJb5Vi_EoPmeHQDj5h5sFwAWtq0NGI_lRAog2K_QnZvSV3SFDVlaKDq9PjgIORc6wi5bzbAusWbjDd_sb211QsrNfW-0SWWgYwz9qRg14OiuntGESXSq9Cmx8WgPaK5H0FQGZUlzq3Bk8ov6GUhPeZSKP4gUyfRloSyj2DBZSe_0JOXO3e4Q6BFZLqhpStyAxoUZftEW_J3pKNjCrvKCOm-Taz0EVBEH9zqLTJwwXEoR86YYNTrtpARTOHo2qco_oMSX_2O4cpAfDZz0ZMHuqxunNnannVdFv5SdAHXngHLguLwAVuUTGlrg_xnUeW4Msi9-CKXpmmEQv6BCIW8Q4S5rn0vp394QgMCCo4473jOEeOX1G4_CUOhJZydGOCEbC5cMrM_54SKBu7hz8P9MCkDLj1ZsPwPDB1YyDwLFJlxb9oEZoRC4whvTJAfX2xNP4wv73ojxwrOII2ivNrnqNX6EM41bxmqMrF9tltSut-OR2XHO-DdJduoRnJjmKJl_WaZQypbZqfVepURuDNGChqyby--xsGMA-yQBBrVigXSKliuYG7dxWBp3TJFrvD4Aym1gAQOgjlObIHknv1cA83g_rHx6vq7JfwqMFYu6H6IZ6eeTUde1IixstE7EzU_4u5LzkQb8HKSMt3j9m3dlH4OigcPvcSJy8aJoN-UCFInfnE7IX0ul_S5HAgvgLM_BEVa3KTa0u8nxAY7xaIXrwWJZ23fhiZrOkNYJI1XAiN11sjtVgVS8viZCkTabUtpEtX2nPe767IbwVzPdOG-C6W_-8uNN_j1WjYeQfsSjmAjab2jZqx3BCDOjTbHkP_vKSzdABFA6bu2Fqt3io2UVTYq-a_Jf2b4JGmuiHomXjhsH3KZp_MDw1nZ8zf1mejyuH_NHFScVzb-vO_ieZ-RDQZn32VPaaDlylSMGa4kE9-54tHZUkFR4Jy1vpyKjXBa3uIEQBE5RFn7XCKbVA4Ea9BCou5ku7E6Zod0SfjMmmknB6jzLTVSBgMP2AkFb98m943O1XXsDQstMmTZdqmNJTOirLoL2Vu1AXqsdS7O-DrVcDImR7ekSGPhUSg2LQkObRPT26sSeiygKlNDi3PktIA1duuJ066NoIHCJupl2mugbFDrZ90SBaQ9n72Ya7fjKdrSdp3izCxqlldeZPANZMMZ5KwjX9WZnl-lPNsn3iCNaEhBCqSWne7YN6xxRS6gKoMobVav-HsZ841qr5iaYzDFD2kA4R35A-Dm5zJyfSCV4NPdUEGzIIbjg1-kYv8PFR_kImuXIwGXT86BxpgEY6PRaD8-ZFZMzerGvEhS8R39NpQ-hiZ_P_ZY3wamWHlwttaTvX3fqpflHlhKV_9AI9HZ","DataProtected":true} \ No newline at end of file +{ + "Version": 1, + "Id": "31079AE9DF4ED1F2D492E52BA5A644F5", + "Created": "2022-04-18T20:26:55.3256244Z", + "Algorithm": "RS256", + "IsX509Certificate": false, + "Data": "CfDJ8P3RLEnEd5JHjUIOTYyyJAzVTUgXKNFkjwfEWELe3r9iozJI4zF_jAjqORPS_C37DAQiHHtMYbgB7_j1Wwqck7qb_wv8CuDfNW8Hx0_UdWaO6vD0Sf_hIbBmN4RrwFwdMia8IUcNCUpwL9XJl95TLzD9FjpuyuWElQ8_5ZnF3SuErstPenQa4q9MYsj9XmPhNSk-BQan-cimxIAPYm1BgZNm5DMylT98sus9ScYTgOowV2n13MW0uA7kk9JOZIIjG07UuaSnuEQei03AU9zkejYD8yLwBi98ON5s0_jW2V3ebY-01VBQXhztu5Iev_SCynNyqQW-uqEzL9SSlzX8dEa79KKmOJEo2o325AVeDOBvco2XDCCra5RkRhUIPV3ZHvQr4EZJNqvi1zelWs3-FJ9vXE02-6XZkZKd6TzhPfiMDc1Z88-eVlx-uwhPjvJyfUSU9cAgbNDREDETxUcmIAMqqbXVAUCnaPkpbxy0VZ6YGSNsD9w77L6nIKiz-0KkVtxDZKCXh5BbDwAiWza8KWKclnVUnMLGhnjANEgKzzvmb1UJr1wZ0xRZ9KXyxr9oy0kP1Be-ysFSUd-YUTSgDvuQZV_DPjH2XP99tXqmfWJ8PJN9hswaRGhp5Jxo003l93u7Ivy-XR1BEhxVoYpvV9fCh8lo-N9ayHYpYlEsdArk1qvkuGRSlkBWNeEr_ZsvODbwM8Jp5q7pLK7cUy0bRHnYwkyHReS_fh6_tTdnfcQZPWb7fLN967XwebcVNOEENn5FX9oszCiy5BG9HQDIPffIx8bkKrZCMV77e5Qria9wNwkhIi3-7SOjRD-v5azkwiV0hTToAQTYsAT8DRTJklI90PF4JbsiMvObeoJtbwPy3E-K1_4DOxAjNwQFHf_zqWEbo9vmxGF-IerSwaJNSVfUUxnnYT8JWFYHYzWGyMvqtdymk1pmBaOJ64dgTVVcao7S0PwfV4DNUzxKQX-jNzqMihaXu4y8lyGIPJycJezm7nfGJiHhhhV4EWSQ1Y2ypBGv_s1iZ5pvTCeGkthY2Q4pe-GYKrFGTnBSLWwHqsVA2gwb1McjYjUGNgu_mnzyB45ZpKrqXQDDiozbQ4Ju7DJb5Vi_EoPmeHQDj5h5sFwAWtq0NGI_lRAog2K_QnZvSV3SFDVlaKDq9PjgIORc6wi5bzbAusWbjDd_sb211QsrNfW-0SWWgYwz9qRg14OiuntGESXSq9Cmx8WgPaK5H0FQGZUlzq3Bk8ov6GUhPeZSKP4gUyfRloSyj2DBZSe_0JOXO3e4Q6BFZLqhpStyAxoUZftEW_J3pKNjCrvKCOm-Taz0EVBEH9zqLTJwwXEoR86YYNTrtpARTOHo2qco_oMSX_2O4cpAfDZz0ZMHuqxunNnannVdFv5SdAHXngHLguLwAVuUTGlrg_xnUeW4Msi9-CKXpmmEQv6BCIW8Q4S5rn0vp394QgMCCo4473jOEeOX1G4_CUOhJZydGOCEbC5cMrM_54SKBu7hz8P9MCkDLj1ZsPwPDB1YyDwLFJlxb9oEZoRC4whvTJAfX2xNP4wv73ojxwrOII2ivNrnqNX6EM41bxmqMrF9tltSut-OR2XHO-DdJduoRnJjmKJl_WaZQypbZqfVepURuDNGChqyby--xsGMA-yQBBrVigXSKliuYG7dxWBp3TJFrvD4Aym1gAQOgjlObIHknv1cA83g_rHx6vq7JfwqMFYu6H6IZ6eeTUde1IixstE7EzU_4u5LzkQb8HKSMt3j9m3dlH4OigcPvcSJy8aJoN-UCFInfnE7IX0ul_S5HAgvgLM_BEVa3KTa0u8nxAY7xaIXrwWJZ23fhiZrOkNYJI1XAiN11sjtVgVS8viZCkTabUtpEtX2nPe767IbwVzPdOG-C6W_-8uNN_j1WjYeQfsSjmAjab2jZqx3BCDOjTbHkP_vKSzdABFA6bu2Fqt3io2UVTYq-a_Jf2b4JGmuiHomXjhsH3KZp_MDw1nZ8zf1mejyuH_NHFScVzb-vO_ieZ-RDQZn32VPaaDlylSMGa4kE9-54tHZUkFR4Jy1vpyKjXBa3uIEQBE5RFn7XCKbVA4Ea9BCou5ku7E6Zod0SfjMmmknB6jzLTVSBgMP2AkFb98m943O1XXsDQstMmTZdqmNJTOirLoL2Vu1AXqsdS7O-DrVcDImR7ekSGPhUSg2LQkObRPT26sSeiygKlNDi3PktIA1duuJ066NoIHCJupl2mugbFDrZ90SBaQ9n72Ya7fjKdrSdp3izCxqlldeZPANZMMZ5KwjX9WZnl-lPNsn3iCNaEhBCqSWne7YN6xxRS6gKoMobVav-HsZ841qr5iaYzDFD2kA4R35A-Dm5zJyfSCV4NPdUEGzIIbjg1-kYv8PFR_kImuXIwGXT86BxpgEY6PRaD8-ZFZMzerGvEhS8R39NpQ-hiZ_P_ZY3wamWHlwttaTvX3fqpflHlhKV_9AI9HZ", + "DataProtected": true +} diff --git a/src/Services/Identity/src/Identity.Api/keys/is-signing-key-74ABBD16A9EF6567607D1F748BB91597.json b/src/Services/Identity/src/Identity.Api/keys/is-signing-key-74ABBD16A9EF6567607D1F748BB91597.json index d66299e..c2370f0 100644 --- a/src/Services/Identity/src/Identity.Api/keys/is-signing-key-74ABBD16A9EF6567607D1F748BB91597.json +++ b/src/Services/Identity/src/Identity.Api/keys/is-signing-key-74ABBD16A9EF6567607D1F748BB91597.json @@ -1 +1,9 @@ -{"Version":1,"Id":"74ABBD16A9EF6567607D1F748BB91597","Created":"2022-03-29T20:44:37.9948898Z","Algorithm":"RS256","IsX509Certificate":false,"Data":"CfDJ8P3RLEnEd5JHjUIOTYyyJAzeYir0LDVxp1O__t0rzDUFxCBt5XtK6FK6fLgopH3OcjrMTbORu_DJp3lf4bf015LKnOk0yjzfzZ5xRX3qwHwz1jvdXKqzt-Pf85kiRlrNv6qiTH7UXP5xGTY3Tn7TdkVJfPmvfHtQyw1FhIPJnx5KQ469H2DRnoxmpwpspHrGlrPA5cJn3Uc7xFnTNEe0laORnilL1rxTTsKFFhJCWCcoxMozgh_SQqEhy9B7Vb4rQHn-ULb8qO4IaKDvbuCJNuGD2nJxy5lBNkdFKJD724IlGIB1nV3w5LR3YVYcxxIc1bLrbK3byHbVHsl8i9uacpN4-JP2Z16Sku9jhsQ21d1tNssE7gmxe8u6qE4RQjL2URSci8_XdSsRa0DBYNaVOSLv60M4dtwg6pJeWB6GfvJ8_JFnTDFDs51rXc77RL4tANblHLzuQl2C3gMMbJPoviWSs8R0hg2mCp0-pQWwSzNvNmtWwsMNXPgHtfIrJTGDKTQEiYIkvkf34gsBaweyea3Q5H2prmt10qVHr47LpkjGqxpHvi9eboJQkG2y-1MBptNpdiYZ4gbViplu8Ru5M4YsCmb0zZF2Q1DZsKVM-T_PFZCgyy1LjLwSHczvcflQh__6YmSwhehI7Nka86m3lK80nwAr9u0qoUyqjavte-XjNiRbUd7MHaEy2bT_jj40oqdh6sGURIkmmJljxPQfu7Scqgcs6chQSY4JXEnfLBa0AK40mefPwpk76QOJBQRBJ3PvnSLc5RMhgs2c2Vc54j4VuQU0tjiHoDPcgerj5oRIQCDiA2_ylleNmxBEomENO0FRortejvV7FNb2qzTfey1r6bTwJvN81EFfMhGUCsj7X0KkBywJMESsQlU3pbs_JChQfX-6rMjofkMYEtnupYnCutUFVO-xZoXrJvw5AOxtJn4JoPHBYeEhC29zjHvtzfSnnnDzCQxiJkWO6pyuAFVIyJUK50Bx_yuaiDicscEjShfd-fQEN_l3eFsUzTGa5rX9gfsPckH8jkpkFkXJlUKFt-nt_9FDnqi5WM6Hf_d891jocGkgiSLM2YURz5Fkyq8S6o-hrBnVf4Pz4dtfsQBw-NnOAl4FPnaknsVdDLZ-qe9gaZdN3wbHQMwFq2eTmm36M6ky47A2xO8MksDSlh4ROcrqJZOBaCWE6fFowcot1sJXFAqNw5iuEKNmtFtJU6oPWxTGY5C0BdjExksQZzqmg2JkjbqZE0zRBFBs0oSJHZsQTnBZmTELIUzMjZVO5eXfVp0tBoOWoW0KgTdHEhlHhNXkvZDoNIdQKu7RVEmhF3AmWWUYzpAW1Y_oEPAsF1Jf-msAlCiMnchbg3yxDG7n6VKAPssQQs3RGPjPLCjOKtHtK4X_3ivVvHbX0xxZhUk44DBv8HDd72rQLEenrXKuIEr_L6VzZ93BpisnxMWxJV6pRcYe1LTtu4nQGZ20hiJs98zHRHomwWJFqxIlPZrSrqTrxUAN4jCl4WSLgf-c2zRfO3AHqvlVCt518s92IUx75372znyoM7-xB5h95T2yxg9x9dlY-_-wICdlyPiQ8arAQ824Cl_2QkSU_ba30gAvWlXGYRVFpg3PSmP0mIhq-ffA8HLB0ARZfYl1_vMspd9kbPyJVCRSaFObC_L-AwvKV8f7Oqqd6bwbUYvdA_6cw1gFUeiqH2wuggOjFI3WDp-5ttVdmZnDVDK--LR3y5b2cYHAf3EG2N-7qMBwZqpOb3ivnRFX_SUlB9V9BlvSe_sLU5zJphBoSWm2-_4j9rWQjCaswlBLbScRA3r1KC5BFxFgbFFv7p4hWk_xjdAx5q4RHM6wqFfGj1WkrjRtdnMC7z1ZM7Bdsno-5yt6PQBP-y4QIvpSpefXl8E4_gBJ6dzToQwLS_Tpk7CjzlIV3oUZ5XfMV0s14Flky6ErsvBdXMzNbHwvxwCAoxbYDrjZ9U-w9gibGOOVBYmKjhkeGLGs8ejqc8TxrzEEFL1li1ZfXxeNAcu4zyNwTHsWaaLVciWaw-UuPqA4uDFxMNmxI6kfXa49L0voFkQaeMo48J2lVjH00QV8f-nXnVaZFztiTU7fYYlpK-RxRSL1q0qQOFMEKOdltqqKxKbM7grNSoBQz-ZHqQq7ZR4v7NRl-yyTGmcGvOzTaDfLP9snbDfiU2QnqH-S2pgtobbYJ_UZvGfg8AZurvNBbl-KuBOrN3yarxe5STJY9mHY_8y2c8C_foQifRSNr_oDANvMbfsukrV8HJimtMk9WF15Qaz51BCiZ9NIxiCsgaJHZ48Oi8EUput8rtTInjNjAvb33N4whgDKQVLWXE59k13dlZX7xA1V-pFbY9TvFLFsWwWS6Jrj8okejPb5Fsb9zraapVTTCIEr3VYR9BB_V7tgkldqpNatO6_qqczD4owmZ-dL6IDyE4f2u_2FCgUV1FP30UMdkRmKHAbhZ9kGCK-ZI5XS33qh","DataProtected":true} \ No newline at end of file +{ + "Version": 1, + "Id": "74ABBD16A9EF6567607D1F748BB91597", + "Created": "2022-03-29T20:44:37.9948898Z", + "Algorithm": "RS256", + "IsX509Certificate": false, + "Data": "CfDJ8P3RLEnEd5JHjUIOTYyyJAzeYir0LDVxp1O__t0rzDUFxCBt5XtK6FK6fLgopH3OcjrMTbORu_DJp3lf4bf015LKnOk0yjzfzZ5xRX3qwHwz1jvdXKqzt-Pf85kiRlrNv6qiTH7UXP5xGTY3Tn7TdkVJfPmvfHtQyw1FhIPJnx5KQ469H2DRnoxmpwpspHrGlrPA5cJn3Uc7xFnTNEe0laORnilL1rxTTsKFFhJCWCcoxMozgh_SQqEhy9B7Vb4rQHn-ULb8qO4IaKDvbuCJNuGD2nJxy5lBNkdFKJD724IlGIB1nV3w5LR3YVYcxxIc1bLrbK3byHbVHsl8i9uacpN4-JP2Z16Sku9jhsQ21d1tNssE7gmxe8u6qE4RQjL2URSci8_XdSsRa0DBYNaVOSLv60M4dtwg6pJeWB6GfvJ8_JFnTDFDs51rXc77RL4tANblHLzuQl2C3gMMbJPoviWSs8R0hg2mCp0-pQWwSzNvNmtWwsMNXPgHtfIrJTGDKTQEiYIkvkf34gsBaweyea3Q5H2prmt10qVHr47LpkjGqxpHvi9eboJQkG2y-1MBptNpdiYZ4gbViplu8Ru5M4YsCmb0zZF2Q1DZsKVM-T_PFZCgyy1LjLwSHczvcflQh__6YmSwhehI7Nka86m3lK80nwAr9u0qoUyqjavte-XjNiRbUd7MHaEy2bT_jj40oqdh6sGURIkmmJljxPQfu7Scqgcs6chQSY4JXEnfLBa0AK40mefPwpk76QOJBQRBJ3PvnSLc5RMhgs2c2Vc54j4VuQU0tjiHoDPcgerj5oRIQCDiA2_ylleNmxBEomENO0FRortejvV7FNb2qzTfey1r6bTwJvN81EFfMhGUCsj7X0KkBywJMESsQlU3pbs_JChQfX-6rMjofkMYEtnupYnCutUFVO-xZoXrJvw5AOxtJn4JoPHBYeEhC29zjHvtzfSnnnDzCQxiJkWO6pyuAFVIyJUK50Bx_yuaiDicscEjShfd-fQEN_l3eFsUzTGa5rX9gfsPckH8jkpkFkXJlUKFt-nt_9FDnqi5WM6Hf_d891jocGkgiSLM2YURz5Fkyq8S6o-hrBnVf4Pz4dtfsQBw-NnOAl4FPnaknsVdDLZ-qe9gaZdN3wbHQMwFq2eTmm36M6ky47A2xO8MksDSlh4ROcrqJZOBaCWE6fFowcot1sJXFAqNw5iuEKNmtFtJU6oPWxTGY5C0BdjExksQZzqmg2JkjbqZE0zRBFBs0oSJHZsQTnBZmTELIUzMjZVO5eXfVp0tBoOWoW0KgTdHEhlHhNXkvZDoNIdQKu7RVEmhF3AmWWUYzpAW1Y_oEPAsF1Jf-msAlCiMnchbg3yxDG7n6VKAPssQQs3RGPjPLCjOKtHtK4X_3ivVvHbX0xxZhUk44DBv8HDd72rQLEenrXKuIEr_L6VzZ93BpisnxMWxJV6pRcYe1LTtu4nQGZ20hiJs98zHRHomwWJFqxIlPZrSrqTrxUAN4jCl4WSLgf-c2zRfO3AHqvlVCt518s92IUx75372znyoM7-xB5h95T2yxg9x9dlY-_-wICdlyPiQ8arAQ824Cl_2QkSU_ba30gAvWlXGYRVFpg3PSmP0mIhq-ffA8HLB0ARZfYl1_vMspd9kbPyJVCRSaFObC_L-AwvKV8f7Oqqd6bwbUYvdA_6cw1gFUeiqH2wuggOjFI3WDp-5ttVdmZnDVDK--LR3y5b2cYHAf3EG2N-7qMBwZqpOb3ivnRFX_SUlB9V9BlvSe_sLU5zJphBoSWm2-_4j9rWQjCaswlBLbScRA3r1KC5BFxFgbFFv7p4hWk_xjdAx5q4RHM6wqFfGj1WkrjRtdnMC7z1ZM7Bdsno-5yt6PQBP-y4QIvpSpefXl8E4_gBJ6dzToQwLS_Tpk7CjzlIV3oUZ5XfMV0s14Flky6ErsvBdXMzNbHwvxwCAoxbYDrjZ9U-w9gibGOOVBYmKjhkeGLGs8ejqc8TxrzEEFL1li1ZfXxeNAcu4zyNwTHsWaaLVciWaw-UuPqA4uDFxMNmxI6kfXa49L0voFkQaeMo48J2lVjH00QV8f-nXnVaZFztiTU7fYYlpK-RxRSL1q0qQOFMEKOdltqqKxKbM7grNSoBQz-ZHqQq7ZR4v7NRl-yyTGmcGvOzTaDfLP9snbDfiU2QnqH-S2pgtobbYJ_UZvGfg8AZurvNBbl-KuBOrN3yarxe5STJY9mHY_8y2c8C_foQifRSNr_oDANvMbfsukrV8HJimtMk9WF15Qaz51BCiZ9NIxiCsgaJHZ48Oi8EUput8rtTInjNjAvb33N4whgDKQVLWXE59k13dlZX7xA1V-pFbY9TvFLFsWwWS6Jrj8okejPb5Fsb9zraapVTTCIEr3VYR9BB_V7tgkldqpNatO6_qqczD4owmZ-dL6IDyE4f2u_2FCgUV1FP30UMdkRmKHAbhZ9kGCK-ZI5XS33qh", + "DataProtected": true +} diff --git a/src/Services/Identity/src/Identity.Api/keys/is-signing-key-9258A527F8A78F2F47D30E7F145FD59F.json b/src/Services/Identity/src/Identity.Api/keys/is-signing-key-9258A527F8A78F2F47D30E7F145FD59F.json index e18a41b..8bac5d8 100644 --- a/src/Services/Identity/src/Identity.Api/keys/is-signing-key-9258A527F8A78F2F47D30E7F145FD59F.json +++ b/src/Services/Identity/src/Identity.Api/keys/is-signing-key-9258A527F8A78F2F47D30E7F145FD59F.json @@ -1 +1,9 @@ -{"Version":1,"Id":"9258A527F8A78F2F47D30E7F145FD59F","Created":"2022-02-15T09:58:48.5269984Z","Algorithm":"RS256","IsX509Certificate":false,"Data":"CfDJ8HYLA_44KBlEtnKYw5Y6NgZcbR_xFrM2Jsvq7lBG7H9pe38jngLl4EUknvBtq5hxuuwWtTX5qnwK_90h5-sbgF98Tio47qnnv-wA50LawMrDvcEbWMjdBXeFD4hE4QCSCi43i3oRms09g1c6gHipjTOTGmZ0Tj6wGAJZHkdJz6uBuvnWkuypYjaZG1vap_baLugSmjP71PUzn7jgFR1dQDEOcZE91-dERlCPeU7RXdDOTrUJMjD4yvfXO3VdB53YiZErMIgCv7rx1qZhzBPmyg2Z3XK86kY877HD4I-DOerJKeqPYl9vfVmFQgRRLFdOhi5ZpmUwJaRKG0zjTDDfOuvFG16WNPCrr3-_AIU3ANaCvL4Lg44t2lamlRaKlEvT5aKxphO2cVZjSWsTPJMHgHXWYM01e09i3WDbL07g35vJWsnRrrhxhiMoVJJG68-WrZVtev47fT69of6Z5_lhFcc7donENuxlN3K2V8P90Nkxu4eYbHwp267IvadONcgCMO_wHdKwZZswFUs5HYVyYVOZKtmE2T4I7JJWrOeL2iM_VWSFwkwV0hCLQyKazQZwVIe8s2s3glYY8ektc36reTZoSg4ykhanq26OLX4VKw9UzvfyV_J-EozNh2WXlhtgGqoeomjVrNp6U612ywre3QLN-lvSDjd2MoQsZ-CG4S6kyTuXNT0KxsdXs-hXUlXRNbri8fshIjSkYjCVWUKvNFvn7IMJ5AxYakWekKdPL7r75Q7HNJMMYxt8jh7fv7N8QKWuOnWWy_kA8N6qXIsHsetBeBfGBHbq92mQkfcdArVKuysqTzSy2wm9t4mLNFbzO1QPAQ9VS6aYS3DcWh2NF_pc2xlRCRt9Mb1P9IYEUQk7P2iakeYUhKH1MMNh0GuMwkCIaed4XCTEVZfSB70YtPUCawgNFP9hn5ENUVNRWBf6717gT1ioybimXghodrCOHiYxxQDDpss3e8MIl_x-BaqW8C2zYFd6xE0pVFXV5-X7O6XP2sc3ClOd1EyVnLRT1-87Uof-1KYA2kzTyPfWrnC72maTbOJzeje2f6oT98BfsgkvakOAchAkEl_FJz_Dv_KdJ9ZwC9Xv0Wan4dvSS5aR35iifXptuZ0du0pc2t6_CoHGLZxOG6SvXm7AN24XYFcWnRPvGUS2M5NG4pHJn73vOPaon1SAIBUrLiDXSWeW_27G_5UG5P1lPXYecFMjVG2vdKPEDxygu3yj1e5CDyeVmvcnI3-Hl_4skomLB14as8U950O7fr-CuS_BAli6m0mplgAPCOrfeyq_o-xWdM9vNoaEHRGA5e2ZfEIknCinSY7CuoGCnMmR0O8eT2P3aQ34TKHRRspvCVs8GAyzCZaVT8_ZeOHCl4FU8Ac5NIe3OMRPuZs1uJaBfBIVlPP9MfhKgEA_S5t8vfa3RJhiU0jMy5h9OToqnBOQsiIkY0mjSMsn3VvsqeNutK5DKoTpATX822sSHCSYXAewk7F-agvqKnM_cPVhib9Z1r0UXLS2neLZwF5ob7uI1nYU8TNb6cawcWPGBz9FoMjtxXsMsAci5luEVg1ZfGTU9kShAa3sdfRYC5E4L37_Fy_4EZyNEKEMPxx8I20PCPfqEPR_JB0geDv0Up9ZfD2ZwgwovYDVbGv3qIbgbkEH2Z7zf2e4gH9sZClvei1XigDL9gjfJ0b9IdA3QpWw6b3uleR-WbNWag5S2Phz6kPB2irBgoN7oG_gUegXQTzCif0mgeQSwbea1vXOngXBLG1PiyRk_iPKPhZMmg1UoMeqXQlXqDL4VFRnMOsYdOKr-BWsgdCM9zE3CCyVueBX0zTuZU0kM0P8hUH9RsZYdqPOXS0d4Fy0YUmQZTHWwSMbCUG1XmJ4QN3y1FKUKBvRRHZmZboYHz5EKFMHhAbk9ZHZRCpLm4hIlH81IiSgRlYm3CacJqjlAiLp0Tc0zF6oFlZFipA-nM5znhgDJMSV-CSW1FSDvYFvHolOxR4U0hlw_XG6NeytrkiAR7-wvU3ufkslsWowtcyswCNHcT7eg-tpptSXyT0RJaQhWwAc9L9lYWZnCBwknUCak23u1V7jM8ZldOM5jiQrjRvEBv-sqMto4Qo6129AatIKri04PYD9VlHzLP76KY4F-UHUcu-9g3cJp9mnbnzhmD1LvNPQmH2giY0pc9hFWW6_Ablz7GmW2cngb9xwHAgi-WBSrZYoW6l2dAdkm72ECwWmMguwT6OZdaZZzjBYixHKM-mnb4uzVT6CU-pp4-G9dYtX5EPqhKcmsmwbV6qiziV61rGYypP37spT8H_SWTFmqD-sMPg6jJj1PncSFd2mlZFBkuFJDvF6Aorf35t9-rePPRc18k14Poa8J8j_mYVJo3lEIrtRDLF3d8EvZ9UEjmgBj25gSiYhOJBPriRop1qmlVVSUjoTBIJaXlTXefbcZTqc8vguzQ5Oy8rjzTaxeP1-OgsCDO0xw7ibWEeN","DataProtected":true} \ No newline at end of file +{ + "Version": 1, + "Id": "9258A527F8A78F2F47D30E7F145FD59F", + "Created": "2022-02-15T09:58:48.5269984Z", + "Algorithm": "RS256", + "IsX509Certificate": false, + "Data": "CfDJ8HYLA_44KBlEtnKYw5Y6NgZcbR_xFrM2Jsvq7lBG7H9pe38jngLl4EUknvBtq5hxuuwWtTX5qnwK_90h5-sbgF98Tio47qnnv-wA50LawMrDvcEbWMjdBXeFD4hE4QCSCi43i3oRms09g1c6gHipjTOTGmZ0Tj6wGAJZHkdJz6uBuvnWkuypYjaZG1vap_baLugSmjP71PUzn7jgFR1dQDEOcZE91-dERlCPeU7RXdDOTrUJMjD4yvfXO3VdB53YiZErMIgCv7rx1qZhzBPmyg2Z3XK86kY877HD4I-DOerJKeqPYl9vfVmFQgRRLFdOhi5ZpmUwJaRKG0zjTDDfOuvFG16WNPCrr3-_AIU3ANaCvL4Lg44t2lamlRaKlEvT5aKxphO2cVZjSWsTPJMHgHXWYM01e09i3WDbL07g35vJWsnRrrhxhiMoVJJG68-WrZVtev47fT69of6Z5_lhFcc7donENuxlN3K2V8P90Nkxu4eYbHwp267IvadONcgCMO_wHdKwZZswFUs5HYVyYVOZKtmE2T4I7JJWrOeL2iM_VWSFwkwV0hCLQyKazQZwVIe8s2s3glYY8ektc36reTZoSg4ykhanq26OLX4VKw9UzvfyV_J-EozNh2WXlhtgGqoeomjVrNp6U612ywre3QLN-lvSDjd2MoQsZ-CG4S6kyTuXNT0KxsdXs-hXUlXRNbri8fshIjSkYjCVWUKvNFvn7IMJ5AxYakWekKdPL7r75Q7HNJMMYxt8jh7fv7N8QKWuOnWWy_kA8N6qXIsHsetBeBfGBHbq92mQkfcdArVKuysqTzSy2wm9t4mLNFbzO1QPAQ9VS6aYS3DcWh2NF_pc2xlRCRt9Mb1P9IYEUQk7P2iakeYUhKH1MMNh0GuMwkCIaed4XCTEVZfSB70YtPUCawgNFP9hn5ENUVNRWBf6717gT1ioybimXghodrCOHiYxxQDDpss3e8MIl_x-BaqW8C2zYFd6xE0pVFXV5-X7O6XP2sc3ClOd1EyVnLRT1-87Uof-1KYA2kzTyPfWrnC72maTbOJzeje2f6oT98BfsgkvakOAchAkEl_FJz_Dv_KdJ9ZwC9Xv0Wan4dvSS5aR35iifXptuZ0du0pc2t6_CoHGLZxOG6SvXm7AN24XYFcWnRPvGUS2M5NG4pHJn73vOPaon1SAIBUrLiDXSWeW_27G_5UG5P1lPXYecFMjVG2vdKPEDxygu3yj1e5CDyeVmvcnI3-Hl_4skomLB14as8U950O7fr-CuS_BAli6m0mplgAPCOrfeyq_o-xWdM9vNoaEHRGA5e2ZfEIknCinSY7CuoGCnMmR0O8eT2P3aQ34TKHRRspvCVs8GAyzCZaVT8_ZeOHCl4FU8Ac5NIe3OMRPuZs1uJaBfBIVlPP9MfhKgEA_S5t8vfa3RJhiU0jMy5h9OToqnBOQsiIkY0mjSMsn3VvsqeNutK5DKoTpATX822sSHCSYXAewk7F-agvqKnM_cPVhib9Z1r0UXLS2neLZwF5ob7uI1nYU8TNb6cawcWPGBz9FoMjtxXsMsAci5luEVg1ZfGTU9kShAa3sdfRYC5E4L37_Fy_4EZyNEKEMPxx8I20PCPfqEPR_JB0geDv0Up9ZfD2ZwgwovYDVbGv3qIbgbkEH2Z7zf2e4gH9sZClvei1XigDL9gjfJ0b9IdA3QpWw6b3uleR-WbNWag5S2Phz6kPB2irBgoN7oG_gUegXQTzCif0mgeQSwbea1vXOngXBLG1PiyRk_iPKPhZMmg1UoMeqXQlXqDL4VFRnMOsYdOKr-BWsgdCM9zE3CCyVueBX0zTuZU0kM0P8hUH9RsZYdqPOXS0d4Fy0YUmQZTHWwSMbCUG1XmJ4QN3y1FKUKBvRRHZmZboYHz5EKFMHhAbk9ZHZRCpLm4hIlH81IiSgRlYm3CacJqjlAiLp0Tc0zF6oFlZFipA-nM5znhgDJMSV-CSW1FSDvYFvHolOxR4U0hlw_XG6NeytrkiAR7-wvU3ufkslsWowtcyswCNHcT7eg-tpptSXyT0RJaQhWwAc9L9lYWZnCBwknUCak23u1V7jM8ZldOM5jiQrjRvEBv-sqMto4Qo6129AatIKri04PYD9VlHzLP76KY4F-UHUcu-9g3cJp9mnbnzhmD1LvNPQmH2giY0pc9hFWW6_Ablz7GmW2cngb9xwHAgi-WBSrZYoW6l2dAdkm72ECwWmMguwT6OZdaZZzjBYixHKM-mnb4uzVT6CU-pp4-G9dYtX5EPqhKcmsmwbV6qiziV61rGYypP37spT8H_SWTFmqD-sMPg6jJj1PncSFd2mlZFBkuFJDvF6Aorf35t9-rePPRc18k14Poa8J8j_mYVJo3lEIrtRDLF3d8EvZ9UEjmgBj25gSiYhOJBPriRop1qmlVVSUjoTBIJaXlTXefbcZTqc8vguzQ5Oy8rjzTaxeP1-OgsCDO0xw7ibWEeN", + "DataProtected": true +} diff --git a/src/Services/Identity/src/Identity/Data/IdentityContext.cs b/src/Services/Identity/src/Identity/Data/IdentityContext.cs index c681b3e..396fd0d 100644 --- a/src/Services/Identity/src/Identity/Data/IdentityContext.cs +++ b/src/Services/Identity/src/Identity/Data/IdentityContext.cs @@ -33,9 +33,14 @@ public sealed class IdentityContext : IdentityDbContext - + - + diff --git a/src/Services/Passenger/src/Passenger.Api/Passenger.Api.csproj b/src/Services/Passenger/src/Passenger.Api/Passenger.Api.csproj index d30af3b..f39ceab 100644 --- a/src/Services/Passenger/src/Passenger.Api/Passenger.Api.csproj +++ b/src/Services/Passenger/src/Passenger.Api/Passenger.Api.csproj @@ -4,9 +4,9 @@ net6.0 enable - + - + diff --git a/src/Services/Passenger/src/Passenger.Api/appsettings.Development.json b/src/Services/Passenger/src/Passenger.Api/appsettings.Development.json index 0db3279..2c63c08 100644 --- a/src/Services/Passenger/src/Passenger.Api/appsettings.Development.json +++ b/src/Services/Passenger/src/Passenger.Api/appsettings.Development.json @@ -1,3 +1,2 @@ { - } diff --git a/src/Services/Passenger/src/Passenger/Passenger.csproj b/src/Services/Passenger/src/Passenger/Passenger.csproj index 487d10d..e7d7f7e 100644 --- a/src/Services/Passenger/src/Passenger/Passenger.csproj +++ b/src/Services/Passenger/src/Passenger/Passenger.csproj @@ -13,12 +13,12 @@ - - + + - +