public async void UnexpectedExceptionThrownByRedisDuringRemove() { // Given var connectionMultplexerMock = new Mock <IConnectionMultiplexer>(); var configuration = new ConcurrentRequestLimiterConfiguration(); var loggerMock = new Mock <ILogger <RedisConcurrentRequestsManager> >(); connectionMultplexerMock.Setup(mock => mock.GetDatabase( Moq.It.IsAny <int>(), Moq.It.IsAny <object>())) .Throws <Exception>(); var manager = new RedisConcurrentRequestsManager( connectionMultplexerMock.Object, configuration, loggerMock.Object); // When a request is removed var result = await manager.RemoveAsync( Guid.NewGuid().ToString(), Guid.NewGuid().ToString()); // Then it should log a warning loggerMock.Verify(mock => mock.Log( LogLevel.Warning, Moq.It.IsAny <EventId>(), Moq.It.IsAny <FormattedLogValues>(), Moq.It.IsAny <Exception>(), Moq.It.IsAny <Func <object, Exception, string> >())); // And it should return false result.Should().BeFalse(); }
public async void RequestIsNotRemoved() { // Given var connectionMultplexerMock = new Mock <IConnectionMultiplexer>(); var databaseMock = new Mock <IDatabase>(); var configuration = new ConcurrentRequestLimiterConfiguration(); var loggerMock = new Mock <ILogger <RedisConcurrentRequestsManager> >(); databaseMock.Setup(mock => mock.SortedSetRemoveAsync( Moq.It.IsAny <RedisKey>(), Moq.It.IsAny <RedisValue>(), Moq.It.IsAny <CommandFlags>())) .ReturnsAsync(false); connectionMultplexerMock.Setup(mock => mock.GetDatabase( Moq.It.IsAny <int>(), Moq.It.IsAny <object>())) .Returns(databaseMock.Object); var manager = new RedisConcurrentRequestsManager( connectionMultplexerMock.Object, configuration, loggerMock.Object); // When a request is removed var result = await manager.RemoveAsync( Guid.NewGuid().ToString(), Guid.NewGuid().ToString()); // Then it should log a debug message loggerMock.Verify(mock => mock.Log( LogLevel.Debug, Moq.It.IsAny <EventId>(), Moq.It.IsAny <FormattedLogValues>(), Moq.It.IsAny <Exception>(), Moq.It.IsAny <Func <object, Exception, string> >())); // And it should return false result.Should().BeFalse(); }