Inheritance: IEndpointBehavior, IContractBehavior
Example #1
0
    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();
    }
Example #2
0
    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();
    }
Example #3
0
        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;
 }
Example #5
0
        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);
        }
Example #6
0
        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,
Example #8
0
    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);
        }
Example #11
0
    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);
 }