private async Task <bool> DoesUserExist(Guid id)
        {
            var userExistsQuery = new UserExistsQuery(id);
            var exists          = await _mediator.Send(userExistsQuery);

            return(exists);
        }
        public UserExistsQueryTests()
        {
            _user = new User()
            {
                EmailAddress = "*****@*****.**"
            };

            _factory = new Mock <IUserFactory>();
            _factory.Setup(c => c.Create(It.IsAny <string>())).Returns(_user);

            _dbCommand = new Mock <IUserExistsDbQuery>();
            _dbCommand.Setup(c => c.Execute(It.IsAny <User>())).Returns(false);

            _subject = new UserExistsQuery(_factory.Object, _dbCommand.Object);
        }
Exemple #3
0
    public async Task UserExistsQueryHandler_ShouldReturnFalse_WhenUserDoesNotExist()
    {
        // Arrange
        UserExistsQuery request = new UserExistsQuery {
            UserId = 124311
        };

        _unitOfWorkMock
        .Setup(m => m.Users.Exists(request.UserId, It.IsAny <CancellationToken>()))
        .ReturnsAsync(false);

        UserExistsQuery.Handler handler = new UserExistsQuery.Handler(_unitOfWorkMock.Object);

        // Act
        bool exists = await handler.Handle(request);

        // Assert
        Assert.False(exists);
    }
Exemple #4
0
 public CreateUser_should()
 {
     query = new UserExistsQuery(Db);
     sut   = new CreateUserCommand(Db.Users, query);
 }
Exemple #5
0
        public async Task <ActionResult <FriendshipResource> > RequestFriendship([FromBody] RequestFriendshipBody body, CancellationToken cancellationToken = default)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // Get the current user id
            int requesterId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            // Check if requester + addressee id are the same
            if (requesterId == body.AddresseeId)
            {
                return(StatusCode(StatusCodes.Status403Forbidden, new ErrorResource
                {
                    StatusCode = StatusCodes.Status403Forbidden,
                    Message = "You cannot create a friendship with yourself"
                }));
            }

            // Check if the addressed user exists
            UserExistsQuery existsQuery = new UserExistsQuery {
                UserId = body.AddresseeId
            };

            bool userExists = await _mediator.Send(existsQuery, cancellationToken);

            if (!userExists)
            {
                return(NotFound(new ErrorResource
                {
                    StatusCode = StatusCodes.Status404NotFound,
                    Message = $"User with ID '{body.AddresseeId}' does not exist"
                }));
            }

            // Check if there is already a friendship with the given user combination
            FriendshipCombinationExistsQuery combinationExistsQuery = new FriendshipCombinationExistsQuery
            {
                RequesterId = requesterId,
                AddresseeId = body.AddresseeId
            };

            bool combinationExists = await _mediator.Send(combinationExistsQuery, cancellationToken);

            if (combinationExists)
            {
                return(StatusCode(StatusCodes.Status403Forbidden, new ErrorResource
                {
                    StatusCode = StatusCodes.Status403Forbidden,
                    Message = $"There is already a friendship with user {body.AddresseeId}"
                }));
            }

            // Create friendship
            RequestFriendshipCommand command = _mapper.Map <RequestFriendshipBody, RequestFriendshipCommand>(body);

            FriendshipResource friendship = await _mediator.Send(command, cancellationToken);

            return(CreatedAtAction(nameof(GetFriendshipById), new { friendshipId = friendship.FriendshipId }, friendship));
        }
Exemple #6
0
    public async Task <ActionResult <GroupMembershipResource> > CreateMembership([FromBody] CreateMembershipBody body, CancellationToken cancellationToken = default)
    {
        if (!ModelState.IsValid)
        {
            return(BadRequest(ModelState));
        }

        // Check if the provided group exists
        GroupExistsQuery groupExistsQuery = new GroupExistsQuery {
            GroupId = body.GroupId
        };

        bool groupExists = await _mediator.Send(groupExistsQuery, cancellationToken);

        if (!groupExists)
        {
            return(NotFound(new ErrorResource
            {
                StatusCode = StatusCodes.Status404NotFound,
                Message = $"Group with ID '{body.GroupId}' does not exist"
            }));
        }

        // Check if the provided user exists
        UserExistsQuery userExistsQuery = new UserExistsQuery {
            UserId = body.UserId
        };

        bool userExists = await _mediator.Send(userExistsQuery, cancellationToken);

        if (!userExists)
        {
            return(NotFound(new ErrorResource
            {
                StatusCode = StatusCodes.Status404NotFound,
                Message = $"User with ID '{body.UserId}' does not exist"
            }));
        }

        // Check if the current user is permitted to create memberships in this group
        CanCreateMembershipQuery canCreateQuery = new CanCreateMembershipQuery {
            GroupId = body.GroupId
        };

        bool canCreate = await _mediator.Send(canCreateQuery, cancellationToken);

        if (!canCreate)
        {
            return(StatusCode(StatusCodes.Status403Forbidden, new ErrorResource
            {
                StatusCode = StatusCodes.Status403Forbidden,
                Message = "You are not permitted to add users to this group. This privilege is only granted to administrators of the group"
            }));
        }

        // Check if such a membership does not already exist
        MembershipCombinationExistsQuery membershipExistsQuery = _mapper.Map <CreateMembershipBody, MembershipCombinationExistsQuery>(body);

        bool membershipExists = await _mediator.Send(membershipExistsQuery, cancellationToken);

        if (membershipExists)
        {
            return(StatusCode(StatusCodes.Status403Forbidden, new ErrorResource
            {
                StatusCode = StatusCodes.Status403Forbidden,
                Message = "This user is already a member of this group"
            }));
        }

        CreateMembershipCommand createCommand = _mapper.Map <CreateMembershipBody, CreateMembershipCommand>(body);

        GroupMembershipResource membership = await _mediator.Send(createCommand, cancellationToken);

        return(CreatedAtAction(nameof(GetMembershipById), new { membershipId = membership.GroupMembershipId }, membership));
    }