public async Task Handle_開始と終了でログが出力される() { var logger = new TestLogger <LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse> >(); var logging = new LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse>(new ServiceFactory(type => { return(type.GenericTypeArguments[0].GetGenericTypeDefinition() == typeof(ILogger <>) ? new List <ILogger <LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse> > >() { (ILogger <LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse> >)logger } : new List <ILoggingInOutValueCollector <TestBehaviorRequest, TestBehaviorResponse> >()); })); await logging.Handle(new TestBehaviorRequest(), new CancellationToken(), () => { logger.Logs.Should().HaveCount(1); var logInfo = logger.Logs[0]; logInfo.LogLevel.Should().Be(LogLevel.Information); logInfo.State.First(s => s.Key == "Request").Value.Should().Be(typeof(TestBehaviorRequest).Name); logInfo.State.Any(s => s.Key == "Input").Should().BeFalse(); return(Task.FromResult(new TestBehaviorResponse())); }); logger.Logs.Should().HaveCount(2); var logInfo = logger.Logs[1]; logInfo.LogLevel.Should().Be(LogLevel.Information); logInfo.State.First(s => s.Key == "Request").Value.Should().Be(typeof(TestBehaviorRequest).Name); logInfo.State.Any(s => s.Key == "Elapsed").Should().BeTrue(); logInfo.State.Any(s => s.Key == "Output").Should().BeFalse(); }
public async Task Handle_例外が発生した場合は例外も出力しそのままリスローする() { var logger = new TestLogger <LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse> >(); var logging = new LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse>(new ServiceFactory(type => { return(type.GenericTypeArguments[0].GetGenericTypeDefinition() == typeof(ILogger <>) ? new List <ILogger <LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse> > >() { logger } : null); })); Func <Task> act = () => logging.Handle(new TestBehaviorRequest() { Value = "A" }, new CancellationToken(), () => { logger.Logs.Should().HaveCount(1); throw new InvalidOperationException(); }); await act.Should().ThrowAsync <InvalidOperationException>(); logger.Logs.Should().HaveCount(2); var logInfo = logger.Logs[1]; logInfo.Exception.Should().NotBeNull().And.BeOfType <InvalidOperationException>(); logInfo.State.First(s => s.Key == "Request").Value.Should().Be(typeof(TestBehaviorRequest).Name); logInfo.State.Any(s => s.Key == "Elapsed").Should().BeTrue(); }
public async Task HandleAsyncTest() { const string requestString = "Request"; const string responseString = "Response"; var fakeRequest = new FakeRequest { FakeIntProperty = 42, FakeStringProperty = "Test String" }; var serializedFakeRequest = JsonSerializer.Serialize(fakeRequest); var fakeResponse = new FakeResponse { FakeBoolProperty = true, FakeDecimalProperty = 3.6M }; var serializedFakeResponse = JsonSerializer.Serialize(fakeResponse); var mockLogger = new Mock <ILogger <LoggingBehavior> >(); //var loggingBehavior = new LoggingBehavior(fakeLogger); var loggingBehavior = new LoggingBehavior(mockLogger.Object); var mockRequestHandlerDelegate = new Mock <RequestHandlerDelegate <FakeResponse> >(); mockRequestHandlerDelegate.Setup(x => x.Invoke()).ReturnsAsync(fakeResponse); var actualResponse = await loggingBehavior.HandleAsync(fakeRequest, mockRequestHandlerDelegate.Object); mockLogger.VerifyBeginScope(requestString); mockLogger.VerifyBeginScope(responseString); mockLogger.VerifyLog(LogLevel.Information, serializedFakeRequest, requestString); mockLogger.VerifyLog(LogLevel.Information, serializedFakeResponse, responseString); Assert.AreSame(fakeResponse, actualResponse); }
public ServiceHandler(string wSap, LoggingBehavior loggingEndpointBehavior) { client = new AmadeusWebServicesPTClient(); hSecurity = new SecurityHandler(client); hSession = new SessionHandler(client, hSecurity); hLink = new TransactionFlowLinkHandler(client); hAddressing = new AddressingHandler(client, wSap); _loggingEndpointBehavior = loggingEndpointBehavior; }
public async Task ShouldNotCallGetUserNameAsyncOnceIfUnauthenticated() { var requestLogger = new LoggingBehavior <CreateDeliveryCommand>(_logger.Object, _currentUserService.Object, _identityService.Object); await requestLogger.Process(new CreateDeliveryCommand { ZoneId = 1, Title = "title" }, new CancellationToken()); _identityService.Verify(i => i.GetUserNameAsync(null), Times.Never); }
public async Task ShouldCallGetUserNameAsyncOnceIfAuthenticated() { _currentUserService.Setup(x => x.UserId).Returns("Administrator"); var requestLogger = new LoggingBehavior <CreateDeliveryCommand>(_logger.Object, _currentUserService.Object, _identityService.Object); await requestLogger.Process(new CreateDeliveryCommand { ZoneId = 1, Title = "title" }, new CancellationToken()); _identityService.Verify(i => i.GetUserNameAsync(It.IsAny <string>()), Times.Once); }
public async Task Handle_Success_Should_LogInitial_Detail_SpanishText() { var logger = Mock.Of <ILogger <TestCommand> >(); var requestInformation = new RequestInformation <TestCommand>(); var describer = new QuickerSpanishLoggingDescriber(); IPipelineBehavior <TestCommand, Unit> loggingPipeline = new LoggingBehavior <TestCommand, Unit>( logger, requestInformation, describer); var testCommand = new TestCommand(); var testHandler = new TestCommandHandler(); var unit = await loggingPipeline.Handle(testCommand,
public async Task Handle_Loggerが取得できなかった場合は処理が実行されずに終了する() { var logger = new TestLogger <LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse> >(); var logging = new LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse>(new ServiceFactory(_ => null)); var executed = false; await logging.Handle(new TestBehaviorRequest(), new CancellationToken(), () => { executed = true; return(Task.FromResult(new TestBehaviorResponse())); }); executed.Should().BeTrue(); }
public static void SetupCommand <TRequest, TResponse>(this Mock <IMediator> mockMediator, Func <TRequest, CancellationToken, Task <TResponse> > next, IValidator <TRequest> validator) where TRequest : ICommand <TResponse> { ValidatorBehavior <TRequest, TResponse> validatorBehavior = GetValidatorBehavior <TRequest, TResponse>(validator); var behaviorLoggerMock = new Mock <ILogger <LoggingBehavior <TRequest, TResponse> > >(); var loggerBehavior = new LoggingBehavior <TRequest, TResponse>(behaviorLoggerMock.Object); mockMediator.Setup(m => m.Send(It.IsAny <TRequest>(), default)) .Returns <TRequest, CancellationToken>(async(request, cancellationToken) => { return(await validatorBehavior.Handle(request, cancellationToken, async() => await loggerBehavior.Handle(request, cancellationToken, async() => await next(request, cancellationToken)))); }); }
public async Task OnLoggingBehavior_WithUnauthenticadUser_CallsGetUserNameAsync() { //Arrange _currentUserService.Setup(x => x.RecoverUserId).Returns(new ServiceResponse <string>() { Data = "Administrator" }); _identityService.Setup(x => x.GetUserNameAsync(It.IsAny <string>())).ReturnsAsync(new ServiceResponse <string>() { Data = "Administrator" }); var requestLogger = new LoggingBehavior <CreateAssetCommand>(_logger.Object, _currentUserService.Object, _identityService.Object); //Act await requestLogger.Process(new CreateAssetCommand(), new CancellationToken()); //Assert _identityService.Verify(i => i.GetUserNameAsync(null), Times.Never); }
public async Task Handle_InOutValueCollectorが設定されている場合は値も出力される() { var logger = new TestLogger <LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse> >(); var logging = new LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse>( new ServiceFactory(type => { return(type.GenericTypeArguments[0].GetGenericTypeDefinition() == typeof(ILogger <>) ? new List <ILogger <LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse> > >() { (ILogger <LoggingBehavior <TestBehaviorRequest, TestBehaviorResponse> >)logger } : new List <ILoggingInOutValueCollector <TestBehaviorRequest, TestBehaviorResponse> >() { new TestLoggingInOutValueCollector1() }); })); await logging.Handle(new TestBehaviorRequest() { Value = "A" }, new CancellationToken(), () => { logger.Logs.Should().HaveCount(1); var logInfo = logger.Logs[0]; var input = logInfo.State.First(s => s.Key == "Input").Value.Should().Be("A"); return(Task.FromResult(new TestBehaviorResponse() { Value = "B" })); }); logger.Logs.Should().HaveCount(2); var logInfo = logger.Logs[1]; var output = logInfo.State.First(s => s.Key == "Output").Value.Should().Be("B"); }
public LoggingBehaviorTests() { _logger = new Mock <ILogger <LoggingBehavior <LogFakeCommand, int> > >(); _behavior = new LoggingBehavior <LogFakeCommand, int>(_logger.Object); }
public void Teardown() { this.moqDebugLogger = null; this.moqStringBehavior = null; this.target = null; }
public void Setup() { this.moqDebugLogger = new Mock <ILogger>(); this.moqStringBehavior = new Mock <IStringBehavior>(); this.target = new LoggingBehavior(this.moqStringBehavior.Object, this.moqDebugLogger.Object); }