public void AddPermission_ThrowException_If_Command_IsNotValid(string name, string domain, string resource)
        {
            var command = new AddPermissionCommand(name, domain, resource);

            Assert.ThrowsAsync <BusinessException>(async() =>
                                                   await authorizationAppService.AddPermission(command, CancellationToken.None));
        }
        public async Task <Guid> AddPermission(AddPermissionCommand command, CancellationToken cancellationToken)
        {
            if (command == null)
            {
                throw new ArgumentNullException(nameof(command));
            }

            command.EnsureIsValid();

            var persistedPermission = await authorizationRepository.GetPermissionsBy(command.Domain, command.Resource, cancellationToken : cancellationToken).ConfigureAwait(false);

            if (persistedPermission?.Count > 0)
            {
                throw new BusinessException(Messages.PermissionAlreadyExist);
            }

            var permission = new Permission()
            {
                Domain   = command.Domain,
                Name     = command.Name,
                Resource = command.Resource
            };

            await authorizationRepository.AddPermission(permission, cancellationToken).ConfigureAwait(false);

            return(permission.Id);
        }
        public async Task <ActionResult <Permission> > Create(AddPermissionCommand addPermissionCommand)
        {
            try
            {
                Permission permission = await this.mediator.Send(addPermissionCommand);

                return(Ok(permission));
            }
            catch (Exception ex)
            {
                return(this.BadRequest(ex));
            }
        }
        public async Task AddPermission()
        {
            var command = new AddPermissionCommand("Admin", "Allow Admin users", "/users");

            authorizationRepositoryMock.GetPermissionsBy(command.Domain, command.Resource, null, Arg.Any <CancellationToken>())
            .Returns(default(List <Permission>));

            var permissionId = await authorizationAppService.AddPermission(command, CancellationToken.None);

            Assert.IsNotNull(permissionId);
            Assert.IsFalse(permissionId == Guid.Empty);

            await authorizationRepositoryMock.Received(1).GetPermissionsBy(command.Domain, command.Resource, null,
                                                                           Arg.Any <CancellationToken>());

            await authorizationRepositoryMock.Received(1).AddPermission(Arg.Any <Permission>(), Arg.Any <CancellationToken>());
        }
        public async Task AddPermission_Throw_Exception_If_Permission_Already_Exist()
        {
            var expectedPermission = new Permission()
            {
                Name = "AllowGet", Domain = "user", Resource = "/user"
            };

            var command = new AddPermissionCommand(expectedPermission.Name, expectedPermission.Domain, expectedPermission.Resource);

            authorizationRepositoryMock.GetPermissionsBy(command.Domain, command.Resource, null, Arg.Any <CancellationToken>())
            .Returns(new List <Permission>()
            {
                expectedPermission
            });

            Assert.ThrowsAsync <BusinessException>(async() =>
                                                   await authorizationAppService.AddPermission(command, CancellationToken.None), "Permission already exist.");

            await authorizationRepositoryMock.Received(1).GetPermissionsBy(command.Domain, command.Resource, null,
                                                                           Arg.Any <CancellationToken>());
        }
Exemple #6
0
        public async Task <IActionResult> Add([FromBody] AddPermissionCommand command)
        {
            var result = await Mediator.Send(command);

            return(Ok(result));
        }
Exemple #7
0
        public async Task <IActionResult> Add(AddPermissionCommand command, CancellationToken cancellationToken = default)
        {
            var permissionId = await authorizationAppService.AddPermission(command, cancellationToken);

            return(Ok(permissionId));
        }