public async Task Send_when_query_with_authorization_required_attribute_and_signed_in_sets_user_prop()
        {
            int expectedResponse = 5;
            var mockMediatr      = new Mock <IMediator>();

            mockMediatr.Setup(f => f.Send(It.Is <IRequest <int> >(
                                              request => VerifyTestQuery(request)
                                              ),
                                          It.IsAny <CancellationToken>()))
            .ReturnsAsync(expectedResponse);

            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 queryMediator = new QueryMediator(mockMediatr.Object, stubImplProvider.Object, Mock.Of <ILogger <QueryMediator> >());

            var response = await queryMediator.Send(new TestQueryAuth(100));

            response.Should().Be(expectedResponse);
        }
        public async Task Send_when_valid_query_passed_returns_response()
        {
            int expectedResponse = 5;
            var mockMediatr      = new Mock <IMediator>();

            mockMediatr
            .Setup(f => f.Send(It.IsAny <TestQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(expectedResponse);
            var queryMediator = new QueryMediator(mockMediatr.Object, Mock.Of <IImplProvider>(), Mock.Of <ILogger <QueryMediator> >());

            var response = await queryMediator.Send(new TestQuery());

            response.Should().Be(5);
        }
        public void Send_when_query_with_authorization_required_attribute_and_not_signed_in_throws()
        {
            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 queryMediator = new QueryMediator(mockMediatr.Object, stubImplProvider.Object, Mock.Of <ILogger <QueryMediator> >());

            Assert.ThrowsAsync <NotSignedInException>(async() => await queryMediator.Send(new TestQueryAuth(5)));
        }
 public LoanApplicationProcessManager(CommandMediator commandMediator, QueryMediator queryMediator)
 {
     _commandMediator = commandMediator;
     _queryMediator   = queryMediator;
 }
 public void SetUp()
 {
     QueryMediator.LoadQueryAttributeStrategies("Test.UnitTests");
 }
        // ++++++++++++++++++++++++++++++++++++
        // helpers
        // ++++++++++++++++++++++++++++++++++++

        private IQueryMediator GetTestSubject()
        {
            var subject = new QueryMediator(new IQueryHandler[] { new TestQueryHandler() });

            return(subject);
        }
 public AuctionQueryController(QueryMediator mediator, IMapper mapper)
 {
     _mediator = mediator;
     _mapper   = mapper;
 }
Example #8
0
 public UserQueryController(QueryMediator mediator, IMapper mapper)
 {
     _mediator = mediator;
     _mapper   = mapper;
 }
Example #9
0
        static void Main()
        {
            Console.WriteLine("Hello World!");

            //------------------------  MONOLITHIC SERVICE  ------------------------
            var monilithicProductService = new MonolithicImplementation.Common.AuditedProductService(
                new MonolithicImplementation.ProductServices(
                    new ProductRepository()));

            //------------------------  SOLID (SRP and ISP applied) SERVICE  ------------------------
            var solidRepo           = new ProductRepository();
            var solidProductService = new SOLID.Facades.ProductServices(
                new SOLID.Common.AuditedProductCreate(new SOLID.Product.ProductCreate(solidRepo)),
                new SOLID.Common.AuditedProductEdit(new SOLID.Product.ProductEdit(solidRepo)),
                new SOLID.Common.AuditedProductDelete(new SOLID.Product.ProductDelete(solidRepo)),
                new SOLID.Product.ProductGet(solidRepo),
                new SOLID.Product.ProductList(solidRepo));


            //------------------------  CQS Basic (OCP applied) SERVICE  ------------------------
            var commandQueryRepo  = new ProductRepository();
            var cqsProductService = new FinalWithCasting.Facades.ProductServices(
                new FinalWithCasting.Common.CommandAspects.AuditedCommandHandler(new FinalWithCasting.Commands.Product.Create.CreateProductCommandHandler(commandQueryRepo)),
                new FinalWithCasting.Common.CommandAspects.AuditedCommandHandler(new FinalWithCasting.Commands.Product.Edit.EditProductCommandHandler(commandQueryRepo)),
                new FinalWithCasting.Common.CommandAspects.AuditedCommandHandler(new FinalWithCasting.Commands.Product.Delete.DeleteProductCommandHandler(commandQueryRepo)),
                new FinalWithCasting.Queries.Product.Get.GetProductQueryHandler(commandQueryRepo),
                new FinalWithCasting.Queries.Product.List.ListProductQueryHandler(commandQueryRepo)
                );


            //------------------------  CQS Generic (OCP applied) SERVICE  ------------------------
            var commandQueryGenericRepo  = new ProductRepository();
            var cqsGenericProductService = new FinalGeneric.Facades.ProductServices(
                new AuditedCommandHandler <CreateProductCommand>(new CreateProductCommandHandler(commandQueryGenericRepo)),
                new AuditedCommandHandler <EditProductCommand>(new EditProductCommandHandler(commandQueryGenericRepo)),
                new AuditedCommandHandler <DeleteProductCommand>(new DeleteProductCommandHandler(commandQueryGenericRepo)),
                new GetProductQueryHandler(commandQueryGenericRepo),
                new ListProductQueryHandler(commandQueryGenericRepo));



            //------------------------  CQS Generic SERVICE With IoC  ------------------------
            Container container = new Container();

            container.Register <IProductRepository, ProductRepository>(Lifestyle.Singleton);
            container.Register(
                typeof(IQueryHandler <,>),
                typeof(IQueryHandler <,>).Assembly);
            container.Register(
                typeof(ICommandHandler <>),
                typeof(ICommandHandler <>).Assembly);
            container.RegisterDecorator(
                typeof(ICommandHandler <>),
                typeof(AuditedCommandHandler <>));

            var queryMediator   = new QueryMediator(container);
            var commandMediator = new CommandMediator(container);

            commandMediator.Process(new CreateProductCommand {
                Name = "Gel Runner", BrandName = "Asics", Price = 100, Count = 20
            });

            var products = queryMediator.Process <ListProductQuery, IEnumerable <ListProductResult> > (new ListProductQuery());

            foreach (var product in products)
            {
                Console.WriteLine($"{product.Name} - {product.BrandName} / {product.Price:c}");
            }
        }
Example #10
0
 public AuthenticationQueryController(QueryMediator mediator)
 {
     _mediator = mediator;
 }