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 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>()); }