/// <summary> /// Initializes a new instance of the <see cref="AuthenticationFlowTest"/> class. /// </summary> /// <param name="outputHelper">The test output helper.</param> public AuthenticationFlowTest(ITestOutputHelper outputHelper) { this.outputHelper = outputHelper; this.testDatabase = new TestDatabase(outputHelper); this.dbContext = this.testDatabase.CreateContext(); this.identityInstance = IdentityTestHelper.CreateInstance(this.testDatabase, this.outputHelper); this.usedHttpContext = new DefaultHttpContext(); this.httpConctextAccessorMock = new Mock <IHttpContextAccessor>(); this.jwtCrypoMock = new Mock <IJwtCryptoProvider>(); this.momentMock = MomentTestHelper.CreateMomentMock(); this.optionsMonitorMock = OptionsTestHelper.CreateBackendOptionsMock(); this.randomGenerator = new SecureRandomGenerator(); this.loggerFactory = LoggingTestHelper.CreateLoggerFactory(this.outputHelper); this.httpConctextAccessorMock.SetupGet(m => m.HttpContext).Returns(this.usedHttpContext); this.jwtCrypoMock.SetupGet(c => c.Algorithm).Returns(SigningAlgorithm); this.jwtCrypoMock.SetupGet(c => c.SecurityKey).Returns(SigningKey); this.authenticationFlow = new AuthenticationFlow( this.httpConctextAccessorMock.Object, this.jwtCrypoMock.Object, this.identityInstance.UserManager, this.dbContext, this.randomGenerator, this.momentMock.Object, this.optionsMonitorMock.Object, this.loggerFactory.CreateLogger <AuthenticationFlow>()); }
public async Task RetrieverReturnsNullManagerReturnsNullWithoutCallingResizingStrategy() { var imageRetrieverMock = new Mock <IMapImageRetriever>(); var imageResizerMock = new Mock <IImageResizingStrategy>(); var optionsMock = OptionsTestHelper.CreateBackendOptionsMock(); var logger = LoggingTestHelper.CreateLogger <GeoManager>(this.outputHelper); var manager = new GeoManager(imageRetrieverMock.Object, imageResizerMock.Object, optionsMock.Object, logger); var zipCode = "1234AB"; var houseNumber = 1; var zoomLevel = ZoomLevel.CITY; imageRetrieverMock.Setup(x => x.GetMapImageAsync( zipCode, houseNumber, zoomLevel, It.IsAny <CancellationToken>())) .ReturnsAsync(null as Stream) .Verifiable(); var imageStream = await manager.GetMapImageAsync( zipCode, houseNumber, zoomLevel,
public async Task DoesNotEvictWithinCachePeriod() { var evictionPeriod = TimeSpan.FromDays(14); var imageAccessTime = DateTimeOffset.UtcNow - (evictionPeriod - TimeSpan.FromDays(2)); var postalCode = "1234"; var zoomLevel = ZoomLevel.CITY; var optionsMock = OptionsTestHelper.CreateBackendOptionsMock( x => x.Geo.CacheTimesPerZoomLevel = ImmutableDictionary <ZoomLevel, TimeSpan> .Empty .Add(zoomLevel, evictionPeriod)); using var testDb = new TestDatabase(this.outputHelper); using (var ctx = await testDb.CreateContextAsync().ConfigureAwait(true)) { ctx.MapImages.Add( new MapImage { ImageData = new byte[] { 0x01 }, LastTimeAccessed = imageAccessTime, PostalCode = postalCode, ZoomLevel = zoomLevel, }); await ctx.SaveChangesAsync().ConfigureAwait(true); } using (var ctx = await testDb.CreateContextAsync().ConfigureAwait(true)) { var task = new GeoMapImageCacheCleaningTask( ctx, optionsMock.Object, LoggingTestHelper.CreateLogger <GeoMapImageCacheCleaningTask>(this.outputHelper)); await task.RunAsync(default).ConfigureAwait(true);
public async Task GetEntitiesReturnsEntitiesFromDatabaseAsync() { using var database = new TestDatabase(this.outputHelper); var dummyLevels = CreateEntityCollection <Level>(this.AddLevelsWithQuestions).ToList(); var expectedLevelNumbers = dummyLevels.Where(level => level.Number >= 1) .Select(level => level.Number); var expectedQuestionCount = dummyLevels.Where(level => level.Number >= 1) .Sum(question => question.Questions.Count()); using (var context = await database.CreateContextAsync().ConfigureAwait(true)) { context.Levels.AddRange(dummyLevels); await context.SaveChangesAsync().ConfigureAwait(true); } using (var context = await database.CreateContextAsync().ConfigureAwait(true)) { var manager = new LevelManager(context, LoggingTestHelper.CreateLogger <LevelManager>(this.outputHelper)); var levels = new List <Level>(); // All levels except level 0 including Questions property, will expect to take 10 will debug log that this is 9 foreach (var level in (await manager.GetPagedEntitiesPage(10, 0, default, new Func <IQueryable <Level>, IQueryable <Level> >(query => query.Where(level => level.Number >= 1).Include("Questions"))).ConfigureAwait(false)).Data)
private MathManager CreateMathManager(FvectContext dbContext) => new MathManager( dbContext, LoggingTestHelper.CreateLogger <MathManager>(this.outputHelper));
public async Task CachableImageWithinCacheRetrievesFromCache() { using var db = new TestDatabase(this.outputHelper); var zipCode = "1234 AB"; var zipCodeNormalized = "1234"; var houseNumber = 1; var zoomLevel = ZoomLevel.CITY; var imageData = new byte[] { 0, 1, 2, 3, }; var optionsMock = OptionsTestHelper.CreateBackendOptionsMock( x => x.Geo.CacheTimesPerZoomLevel = ImmutableDictionary <ZoomLevel, TimeSpan> .Empty.Add( zoomLevel, TimeSpan.MaxValue)); var innerMock = new Mock <IMapImageRetriever>(); var logger = LoggingTestHelper.CreateLogger <CachedMapImageRetriever>(this.outputHelper); var imageInCache = new MapImage { PostalCode = zipCodeNormalized, ImageData = imageData, ZoomLevel = zoomLevel, LastTimeAccessed = DateTimeOffset.UtcNow, }; using (var ctx = await db.CreateContextAsync().ConfigureAwait(true)) { ctx.MapImages.Add(imageInCache); await ctx.SaveChangesAsync().ConfigureAwait(true); } Stream?imageStream = default; using (var ctx = await db.CreateContextAsync().ConfigureAwait(true)) { var retriever = new CachedMapImageRetriever( ctx, innerMock.Object, optionsMock.Object, logger); imageStream = await retriever.GetMapImageAsync( zipCode, houseNumber, zoomLevel, default) .ConfigureAwait(true); } imageStream .Should() .NotBeNull( because: "the value should have been retrieved from the cache"); using var ms = new MemoryStream(); imageStream !.Position = 0; await imageStream.CopyToAsync(ms).ConfigureAwait(true); ms.ToArray() .Should() .BeEquivalentTo( imageData, because: "the retrieved value should be equal to the data intially stored in the cache"); innerMock.VerifyNoOtherCalls(); }
private DataConflictExceptionHandlerMiddleware CreateMiddleware( RequestDelegate @delegate) => new DataConflictExceptionHandlerMiddleware( @delegate, LoggingTestHelper.CreateLogger <DataConflictExceptionHandlerMiddleware>(this.outputHelper));