public void UserIsVerifiedAndResourceReturned()
            {
                MethodToTest(() => service.GetUserProfile(A <Auth0UserProfile> .Ignored, A <IPrincipal> .Ignored));

                var user = new Auth0User {
                    Id = "someId"
                };
                var auth0Profile = new Auth0UserProfile {
                    sub = user.Id
                };
                var auth0UserSet = new FakeDbSet <Auth0User> {
                    user
                };

                A.CallTo(() => dependencies.StorageService.SetOf <Auth0User>()).Returns(auth0UserSet);
                A.CallTo(() => service.BuildAuth0User(auth0Profile)).Returns(user);
                var claimsIdentity = new ClaimsIdentity();
                var resource       = new UserProfileResource();

                A.CallTo(() => service.BuildUserProfileResource(user)).Returns(resource);
                var principal = A.Fake <IPrincipal>();

                A.CallTo(() => principal.Identity).Returns(claimsIdentity);



                var result = service.GetUserProfile(auth0Profile, principal);

                Assert.AreSame(resource, result);
                A.CallTo(() => service.VerifyProfile(auth0Profile, claimsIdentity)).MustHaveHappened();
            }
            public void NewUserProfileIsAddedAndResourceReturned()
            {
                MethodToTest(() => service.GetUserProfile(A <Auth0UserProfile> .Ignored, A <IPrincipal> .Ignored));

                var auth0Profile = new Auth0UserProfile();
                var auth0UserSet = new FakeDbSet <Auth0User>();

                A.CallTo(() => dependencies.StorageService.SetOf <Auth0User>()).Returns(auth0UserSet);
                var user = new Auth0User();

                A.CallTo(() => service.BuildAuth0User(auth0Profile)).Returns(user);
                var claimsIdentity = new ClaimsIdentity();
                var resource       = new UserProfileResource();

                A.CallTo(() => service.BuildUserProfileResource(user)).Returns(resource);
                var principal = A.Fake <IPrincipal>();

                A.CallTo(() => principal.Identity).Returns(claimsIdentity);

                var result = service.GetUserProfile(auth0Profile, principal);

                Assert.AreSame(resource, result);
                A.CallTo(() => service.VerifyProfile(auth0Profile, claimsIdentity)).MustHaveHappened();
                Assert.AreEqual(1, auth0UserSet.Count());
                Assert.AreSame(user, auth0UserSet.First());
                A.CallTo(() => dependencies.StorageService.SaveChanges()).MustHaveHappened();
            }
Example #3
0
        public async Task GetUserProfile_ShouldReturnOkResult_WhenUserExists()
        {
            // Arrange
            const int userId = 1;

            UserProfileResource expectedUserProfile = new UserProfileResource {
                UserId = 1
            };

            _mediatorMock
            .Setup(m => m.Send(It.IsAny <GetUserProfileQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(expectedUserProfile);

            UserController controller = new UserController(_mediatorMock.Object, null);

            // Act
            ActionResult <UserProfileResource> response = await controller.GetUserProfile(userId);

            // Assert
            OkObjectResult result = Assert.IsType <OkObjectResult>(response.Result);

            UserProfileResource profile = (UserProfileResource)result.Value;

            Assert.Equal(1, profile.UserId);
        }
    public async Task GetUserProfileQueryHandler_ShouldReturnUserProfile_WhenIdIsValid()
    {
        // Arrange
        GetUserProfileQuery request = new() { UserId = 1 };

        User expectedUser = new()
        {
            UserId       = 1,
            Availability = new Availability {
                Status = AvailabilityStatus.Online
            }
        };

        _unitOfWorkMock
        .Setup(m => m.Users.GetByIdAsync(It.IsAny <int>()))
        .ReturnsAsync(expectedUser);

        GetUserProfileQuery.Handler handler = new(_mapperMock, _unitOfWorkMock.Object);

        // Act
        UserProfileResource userProfile = await handler.Handle(request);

        // Assert
        Assert.NotNull(userProfile);
        Assert.Equal(request.UserId, userProfile.UserId);
    }

    [Fact]
    public async Task GetUserProfileQueryHandler_ShouldReturnNull_WhenIdIsInvalid()
    {
        // Arrange
        GetUserProfileQuery request = new() { UserId = 2181 };

        _unitOfWorkMock
        .Setup(m => m.Users.GetByIdAsync(request.UserId))
        .ReturnsAsync(null as User);

        GetUserProfileQuery.Handler handler = new(_mapperMock, _unitOfWorkMock.Object);

        // Act
        UserProfileResource userProfile = await handler.Handle(request);

        // Assert
        Assert.Null(userProfile);
    }
}
Example #6
0
        public async Task <ActionResult <UserProfileResource> > GetUserProfile([FromRoute] int userId, CancellationToken cancellationToken = default)
        {
            GetUserProfileQuery query = new GetUserProfileQuery
            {
                UserId = userId
            };

            UserProfileResource userProfile = await _mediator.Send(query, cancellationToken);

            if (userProfile == null)
            {
                return(NotFound(new ErrorResource
                {
                    StatusCode = StatusCodes.Status404NotFound,
                    Message = $"A user with the ID '{userId}' does not exist"
                }));
            }

            return(Ok(userProfile));
        }
Example #7
0
        public async Task GetUserProfileQueryHandler_ShouldReturnNull_WhenIdIsInvalid()
        {
            // Arrange
            GetUserProfileQuery request = new GetUserProfileQuery {
                UserId = 2181
            };

            Mock <IQueryable <User> > userQueryableMock = Enumerable
                                                          .Empty <User>()
                                                          .AsQueryable()
                                                          .BuildMock();

            _unitOfWorkMock
            .Setup(m => m.Users.GetById(request.UserId))
            .Returns(userQueryableMock.Object);

            GetUserProfileQuery.Handler handler = new GetUserProfileQuery.Handler(_mapperMock, _unitOfWorkMock.Object);

            // Act
            UserProfileResource userProfile = await handler.Handle(request);

            // Assert
            Assert.Null(userProfile);
        }