public async Task Handle_WhenUserDoesNotHavePermission_ShouldThrowException()
        {
            // Arrange
            var userId  = Guid.NewGuid();
            var command = new CreateTodoCommand {
                UserId = userId, Name = "todo one", IsComplete = true
            };
            var rpcResponse = new IsUserAllowedResponse {
                IsAllowed = false
            };

            rpcPermissionsMock.ClientMock.Setup(x => x.IsUserAllowed(It.IsAny <IsUserAllowedRequest>(), It.IsAny <CallOptions>())).Returns(rpcResponse);

            var dbOptions = new DbContextOptionsBuilder <TodoDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;

            using (var context = new TodoDbContext(dbOptions))
            {
                // Act
                var sut = new CreateTodoCommandHandler(context, mapper, rpcNotificationsMock.ServiceClient, rpcPermissionsMock.ServiceClient);
                try
                {
                    var result = await sut.Handle(command, new CancellationToken(false));

                    Assert.True(false, "Should throw exception");
                }
                catch (InvalidOperationException ex)
                {
                    // Assert
                    Assert.NotNull(ex);
                }
            }
        }
        public async Task Handle_WhenUserHasPermission_ShouldReturnAllTodos()
        {
            // Arrange
            var userId  = Guid.NewGuid();
            var request = new TodoDetailsQuery {
                Id = 2, UserId = userId
            };
            var rpcResponse = new IsUserAllowedResponse {
                IsAllowed = true
            };

            rpcPermissionsMock.ClientMock.Setup(x => x.IsUserAllowed(It.IsAny <IsUserAllowedRequest>(), It.IsAny <CallOptions>())).Returns(rpcResponse);

            var dbOptions = new DbContextOptionsBuilder <TodoDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;

            using (var context = new TodoDbContext(dbOptions))
            {
                context.Todos.Add(new Todo {
                    Id = 1, Name = "todo 1"
                });
                context.Todos.Add(new Todo {
                    Id = 2, Name = "todo 2"
                });
                context.SaveChanges();

                var sut = new TodoDetailsQueryHandler(context, mapper, rpcPermissionsMock.ServiceClient);
                // Act
                var result = await sut.Handle(request, new CancellationToken(false));

                result.Id.ShouldBe(2);
                result.Name.ShouldBe("todo 2");
            }
        }
Exemplo n.º 3
0
        public async Task Handle_WhenUserHasPermission_ShouldNotThrowException()
        {
            // Arrange
            var userId  = Guid.NewGuid();
            var command = new DeleteTodoCommand {
                UserId = userId, Id = 1
            };
            var rpcResponse = new IsUserAllowedResponse {
                IsAllowed = true
            };

            rpcPermissionsMock.ClientMock.Setup(x => x.IsUserAllowed(It.IsAny <IsUserAllowedRequest>(), It.IsAny <CallOptions>())).Returns(rpcResponse);

            var dbOptions = new DbContextOptionsBuilder <TodoDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;

            using (var context = new TodoDbContext(dbOptions))
            {
                context.Todos.Add(new Todo {
                    Id = 1, Name = "todo 1"
                });
                context.SaveChanges();

                var sut = new DeleteTodoCommandHandler(context, rpcNotificationsMock.ServiceClient, rpcPermissionsMock.ServiceClient);
                // Act
                var result = await sut.Handle(command, new CancellationToken(false));
            }
        }
Exemplo n.º 4
0
        public DeleteTodoCommandHandlerTests()
        {
            this.rpcPermissionsMock   = new RpcClientMock <PermissionsService.PermissionsServiceClient>();
            this.rpcNotificationsMock = new RpcClientMock <NotificationService.NotificationServiceClient>();

            var rpcResponse = new IsUserAllowedResponse {
                IsAllowed = true
            };

            this.rpcPermissionsMock.ClientMock.Setup(x => x.IsUserAllowed(It.IsAny <IsUserAllowedRequest>(), It.IsAny <CallOptions>())).Returns(rpcResponse);
        }
        public CreateTodoCommandHandlerTests()
        {
            this.rpcPermissionsMock   = new RpcClientMock <PermissionsService.PermissionsServiceClient>();
            this.rpcNotificationsMock = new RpcClientMock <NotificationService.NotificationServiceClient>();
            var configuration = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <AutoMapperProfile>();
            });

            this.mapper = new Mapper(configuration);

            var rpcResponse = new IsUserAllowedResponse {
                IsAllowed = true
            };

            this.rpcPermissionsMock.ClientMock.Setup(x => x.IsUserAllowed(It.IsAny <IsUserAllowedRequest>(), It.IsAny <CallOptions>())).Returns(rpcResponse);
        }
Exemplo n.º 6
0
        public async Task Handle_WhenUserHasPermission_ShouldNotThrowException()
        {
            // Arrange
            var userId  = Guid.NewGuid();
            var request = new AllTodosQuery {
                UserId = userId
            };
            var rpcResponse = new IsUserAllowedResponse {
                IsAllowed = true
            };

            rpcPermissionsMock.ClientMock.Setup(x => x.IsUserAllowed(It.IsAny <IsUserAllowedRequest>(), It.IsAny <CallOptions>())).Returns(rpcResponse);

            var dbOptions = new DbContextOptionsBuilder <TodoDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;

            using (var context = new TodoDbContext(dbOptions))
            {
                var sut = new AllTodosQueryHandler(context, mapper, rpcPermissionsMock.ServiceClient);
                // Act
                var result = await sut.Handle(request, new CancellationToken(false));
            }
        }