Beispiel #1
0
        public async Task GrantPermission_Success()
        {
            //arrange
            var command = new GrantPermission
            {
                UserId      = ManagerOfProductAssemblyShop.Id,
                ResourceId  = ProduceInventoryItemHandler.Id,
                InitiatorId = GlobalAdmin.Id
            };
            var handler = new GrantPermissionHandler(EntityRepository, PermissionRepo, EventTransmitter);

            //act
            await handler.HandleAsync(command);

            //assert
            var entities = GetRecordedEntities <Permission>(PermissionRepo, nameof(PermissionRepo.AddAsync));

            Assert.That(entities.Count, Is.EqualTo(1));
            Assert.That(entities[0].Resource, Is.EqualTo(ProduceInventoryItemHandler));
            Assert.That(entities[0].User, Is.EqualTo(ManagerOfProductAssemblyShop));

            var events = GetRecordedEvents <DomainEvent <Permission> >();

            Assert.That(events.Count, Is.EqualTo(1));
            Assert.That(events[0].Trigger, Is.EqualTo(Trigger.Added));
            Assert.That(events[0].Entity, Is.EqualTo(entities[0]));
            Assert.That(events[0].RaisedBy, Is.EqualTo(command.InitiatorId));
        }
Beispiel #2
0
        public void GrantPermission_FailFor_PermissionAlreadyGranted()
        {
            //arrange
            var command = new GrantPermission
            {
                UserId      = UserWithPermissions.Id,
                ResourceId  = ProduceInventoryItemHandler.Id,
                InitiatorId = GlobalAdmin.Id
            };
            var handler = new GrantPermissionHandler(EntityRepository, PermissionRepo, EventTransmitter);

            //assert () => act
            var ex = Assert.ThrowsAsync <DomainException>(async() => await handler.HandleAsync(command));

            Assert.That(ex.Message, Is.EqualTo(DuplicatingGrant(UserWithPermissionsOnProduceInventoryItemHandler)));
            Assert.That(GetRecordedEvents <DomainEvent <Permission> >(), Is.Empty);
        }