public void Send_when_command_with_authorization_required_attribute_and_signed_in_sets_user_prop()
        {
            var expectedResponse = new RequestStatus(Status.COMPLETED);
            var mockMediatr      = new Mock <IMediator>();

            mockMediatr.Setup(f => f.Send(It.Is <IRequest <RequestStatus> >(
                                              request => VerifyTestCommand(request)
                                              ),
                                          It.IsAny <CancellationToken>()));


            var stubUserIdentityService = new Mock <IUserIdentityService>();

            stubUserIdentityService.Setup(f => f.GetSignedInUserIdentity())
            .Returns(new UserIdentity(Guid.NewGuid(), "test"));
            var stubImplProvider = new Mock <IImplProvider>();

            stubImplProvider.Setup(f => f.Get <IUserIdentityService>())
            .Returns(stubUserIdentityService.Object);

            var mediatrHandlerMediator = new MediatRCommandHandlerMediator(mockMediatr.Object);
            var mediator = new CommandMediator(mediatrHandlerMediator, stubImplProvider.Object);


            Assert.DoesNotThrowAsync(async() => await mediator.Send(new TestCommandBaseAuthWithSignedUser(12)));
        }
        public async Task Send_when_valid_command_passed_returns_response()
        {
            var expectedResponse = new RequestStatus(Status.COMPLETED);
            var mockMediatr      = new Mock <IMediator>();

            mockMediatr
            .Setup(f => f.Send(It.IsAny <TestCommandBase>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(expectedResponse);
            var mediatrHandlerMediator = new MediatRCommandHandlerMediator(mockMediatr.Object);

            var mediator = new CommandMediator(mediatrHandlerMediator, Mock.Of <IImplProvider>());

            var response = await mediator.Send(new TestCommandBase());

            response.Status.Should()
            .Be(Status.COMPLETED);
            response.CorrelationId.Should().BeEquivalentTo(expectedResponse.CorrelationId);
        }
        public void Send_when_command_with_authorization_required_attribute_and_not_signed_in_throws()
        {
            var expectedResponse = new RequestStatus(Status.COMPLETED);
            var mockMediatr      = new Mock <IMediator>();

            var stubUserIdentityService = new Mock <IUserIdentityService>();

            stubUserIdentityService.Setup(f => f.GetSignedInUserIdentity()).Returns(UserIdentity.Empty);
            var stubImplProvider = new Mock <IImplProvider>();

            stubImplProvider.Setup(f => f.Get <IUserIdentityService>())
            .Returns(stubUserIdentityService.Object);

            var mediatrHandlerMediator = new MediatRCommandHandlerMediator(mockMediatr.Object);
            var mediator = new CommandMediator(mediatrHandlerMediator, stubImplProvider.Object);


            Assert.ThrowsAsync <NotSignedInException>(async() => await mediator.Send(new TestCommandBaseAuth()));
        }