예제 #1
0
        public async Task <RegisterResponse> RegisterAsync(RegisterModel registerModel)
        {
            try
            {
                var userExists = await _userManager.FindByNameAsync(registerModel.Username);

                if (userExists != null)
                {
                    return(new RegisterResponse(BaseApiResponse <UserDto> .CreateErrorResponse($"User already exists!")));
                }

                var user   = new User(registerModel);
                var result = await _userManager.CreateAsync(user, registerModel.Password);

                if (!result.Succeeded)
                {
                    return(new RegisterResponse(BaseApiResponse <UserDto> .CreateErrorResponse($"User creation failed: {result.Errors.GetErrorsAsString()}")));
                }

                var userDto = _mapper.Map <UserDto>(user);
                return(new RegisterResponse(
                           BaseApiResponse <UserDto> .CreateSuccessResponse("User created successfully!", userDto)));
            }
            catch (Exception ex)
            {
                return(new RegisterResponse(BaseApiResponse <UserDto> .CreateErrorResponse(
                                                $"An error occured during user registration: {ex.Message}")));
            }
        }
예제 #2
0
        private GuestListResponse CreateGuestListSuccessResponse(IEnumerable <Guest> guests)
        {
            var guestDtos = Mapper.Map <IEnumerable <GuestDto> >(guests);
            var guestList = new GuestListDto
            {
                Guests = guestDtos
            };

            return(new GuestListResponse(
                       BaseApiResponse <GuestListDto> .CreateSuccessResponse("Guests list successfully retrieved.", guestList))
            {
                Count = guestDtos.ToList().Count
            });
        }
예제 #3
0
        public void CreateSuccessResponse_ReturnsResponse_WithTrueResultAndSuccessStatus()
        {
            // Arrange
            var testMessage = "Test message";
            var mockDto     = new Mock <IDto>();

            // Act
            var result = BaseApiResponse <IDto> .CreateSuccessResponse(testMessage, mockDto.Object);

            // Assert
            result.Should().NotBeNull();
            result.Item.Should().NotBeNull();
            result.Result.Should().BeTrue();
            result.Status.Should().Be(ResponseStatus.Success);
            result.Message.Should().Be(testMessage);
        }
예제 #4
0
        public async Task Index_ReturnsOkObjectResult_WithListOfGuests_ForGivenAgeParam()
        {
            // Arrange
            int ageParam    = 3;
            var mockLogger  = new Mock <ILogger <GuestsController> >();
            var mockService = new Mock <IGuestService>();
            var mockGuests  = new List <GuestDto>(new GuestDto[]
            {
                new GuestDto(),
                new GuestDto(),
                new GuestDto()
            });
            var mockItem = new GuestListDto
            {
                Guests = mockGuests
            };
            var mockResponse = new GuestListResponse(
                BaseApiResponse <GuestListDto> .CreateSuccessResponse("test message", mockItem))
            {
                Count = mockGuests.Count
            };

            mockService.Setup(svc => svc.GetGuestsByAgeAsync(ageParam)).ReturnsAsync(mockResponse);
            var controller = new GuestsController(mockLogger.Object, mockService.Object);

            // Act
            var result = await controller.Index(ageParam);

            // Assert
            result.Should().BeOfType <OkObjectResult>();

            var okObjectResult = (OkObjectResult)result;

            okObjectResult.Value.Should().NotBeNull();
            okObjectResult.Value.Should().BeOfType <GuestListResponse>();

            var response = (GuestListResponse)okObjectResult.Value;

            response.Status.Should().Be(ResponseStatus.Success);
            response.Result.Should().BeTrue();
            response.Item.Guests.Should().NotBeNull();
            response.Item.Guests.Should().NotBeEmpty();
            response.Item.Guests.Should().HaveCount(3);
            response.Count.Should().Be(3);
        }
예제 #5
0
        public async Task Create_ReturnsOkResult_WithGuest_ForGivenGuestDto()
        {
            // Arrange
            var mockLogger  = new Mock <ILogger <GuestsController> >();
            var mockService = new Mock <IGuestService>();
            var mockGuest   = new GuestDto
            {
                Id        = 1,
                FirstName = "John",
                LastName  = "Doe"
            };
            var mockItem = new GuestDto
            {
                Id        = 1,
                FirstName = "John",
                LastName  = "Doe"
            };
            var mockResponse = new GuestResponse(
                BaseApiResponse <GuestDto> .CreateSuccessResponse("test message", mockItem));

            mockService.Setup(svc => svc.CreateAsync(mockGuest)).ReturnsAsync(mockResponse);
            var controller = new GuestsController(mockLogger.Object, mockService.Object);

            // Act
            var result = await controller.Create(mockGuest);

            // Assert
            result.Should().BeOfType <OkObjectResult>();

            var okObjectResult = (OkObjectResult)result;

            okObjectResult.Value.Should().NotBeNull();
            okObjectResult.Value.Should().BeOfType <GuestResponse>();

            var response = (GuestResponse)okObjectResult.Value;

            response.Result.Should().BeTrue();
            response.Status.Should().Be(ResponseStatus.Success);
            response.Item.Id.Should().Be(mockGuest.Id);
            response.Item.FirstName.Should().Be(mockGuest.FirstName);
            response.Item.LastName.Should().Be(mockGuest.LastName);
        }
예제 #6
0
        public async Task <LoginResponse> AuthenticateAsync(LoginModel loginModel)
        {
            if (loginModel == null)
            {
                return(new LoginResponse(
                           BaseApiResponse <UserDto> .CreateErrorResponse("LoginModel cannot be null.")));
            }

            try
            {
                var user = await _userManager.FindByNameAsync(loginModel.Username);

                if (user != null && await _userManager.CheckPasswordAsync(user, loginModel.Password))
                {
                    // TODO: roles
                    // var userRoles = await _userManager.GetRolesAsync(user);

                    var token    = _jwtService.GenerateJwtToken(user);
                    var userDto  = _mapper.Map <UserDto>(user);
                    var response = new LoginResponse(
                        BaseApiResponse <UserDto> .CreateSuccessResponse("User authenticated successfully!", userDto))
                    {
                        Token      = new JwtSecurityTokenHandler().WriteToken(token),
                        Expiration = token.ValidTo
                    };

                    return(response);
                }

                return(new LoginResponse(BaseApiResponse <UserDto> .CreateErrorResponse("User not authenticated.")));
            }
            catch (Exception ex)
            {
                return(new LoginResponse(BaseApiResponse <UserDto> .CreateErrorResponse(
                                             $"An error occured during user authentication: {ex.Message}")));
            }
        }
예제 #7
0
 protected override WeddingHallSummaryResponse CreateSuccessResponse(string message, WeddingHallDto item)
 => new WeddingHallSummaryResponse(BaseApiResponse <WeddingHallDto> .CreateSuccessResponse(message, item));
예제 #8
0
 protected override GuestResponse CreateSuccessResponse(string message, GuestDto item)
 => new GuestResponse(BaseApiResponse <GuestDto> .CreateSuccessResponse(message, item));
예제 #9
0
 protected override OutfitResponse <OutfitDto> CreateSuccessResponse(string message, OutfitDto item)
 {
     return(new OutfitResponse <OutfitDto>(
                BaseApiResponse <OutfitDto> .CreateSuccessResponse(message, item)));
 }