private static User CreateUserWithUpsertUserRequest(UpsertUserRequest request)
 {
     return(new User
     {
         Email = request.Email,
         Events = request.Events,
         Name = request.Name,
         Type = "user"
     });
 }
Пример #2
0
        public async Task <IActionResult> UpsertUser(UpsertUserRequest request)
        {
            var response = await _userService.UpsertUser(request);

            if (response.HasError)
            {
                return(new BadRequestObjectResult(response));
            }

            return(new OkResult());
        }
        public async Task PUT_Should_Return_Bad_Request_When_Request_Is_Null()
        {
            // Arrange...
            var mockMediator = Substitute.For <IMediator>();
            var mockMapper   = Substitute.For <IMapper>();
            var sut          = new UsersController(mockMediator, mockMapper);
            var userId       = Guid.NewGuid();
            const UpsertUserRequest request = null;

            // Act...
            var result = await sut.Upsert(userId, request);

            // Assert...
            result.Should().NotBeNull();
            result.Should().BeAssignableTo <BadRequestResult>();
        }
Пример #4
0
        private async Task UpsertUserAsync(IUser user)
        {
            if (client == null)
            {
                return;
            }

            var settings = new NotificationSettingsDto();

            settings.Channels[Providers.WebPush] = new NotificationSettingDto
            {
                Send           = true,
                DelayInSeconds = null
            };

            settings.Channels[Providers.Email] = new NotificationSettingDto
            {
                Send           = true,
                DelayInSeconds = 5 * 60
            };

            var userRequest = new UpsertUserRequest
            {
                AppId                    = options.AppId,
                FullName                 = user.DisplayName(),
                PreferredLanguage        = "en",
                PreferredTimezone        = null,
                RequiresWhitelistedTopic = true,
                Settings                 = settings,
                UserId                   = user.Id
            };

            if (user.Email.IsEmail())
            {
                userRequest.EmailAddress = user.Email;
            }

            var response = await client.UpsertUserAsync(userRequest);

            await userResolver.SetClaimAsync(user.Id, SquidexClaimTypes.NotifoKey, response.User.ApiKey);
        }
        public async Task <BaseResponse <User> > UpsertUser(UpsertUserRequest request)
        {
            var response = new BaseResponse <User>();

            if (request == null)
            {
                response.Message = "Invalid Request";
                return(response);
            }

            var userExists = await _userRepository.UserExistsById(request.Email);

            if (!userExists)
            {
                var newUser = CreateUserWithUpsertUserRequest(request);
                await _userRepository.UpsertUserAsync(newUser);
            }
            else
            {
                await _userRepository.AppendEventByUserId(request.Email, request.Events);
            }

            return(response);
        }
        public async Task PUT_Should_Return_OK_When_Called_With_Partial_Request_To_Update_User()
        {
            // Arrange...
            var mockMediator = Substitute.For <IMediator>();
            var mockMapper   = Substitute.For <IMapper>();
            var sut          = new UsersController(mockMediator, mockMapper);

            var userId    = Guid.NewGuid();
            var firstName = _fixture.Create <string>();
            var lastName  = _fixture.Create <string>();

            var upsertUserRequest = new UpsertUserRequest
            {
                Title     = null,
                FirstName = firstName,
                LastName  = lastName,
                Sex       = null
            };

            var updateUserCommand = new UpdateUserCommand
            {
                Id        = userId,
                Title     = null,
                FirstName = firstName,
                LastName  = lastName,
                Sex       = null
            };

            mockMapper.Map <UpdateUserCommand>(upsertUserRequest).Returns(updateUserCommand);

            mockMediator.Send(Arg.Any <UserExistsQuery>()).Returns(true);

            var updatedUser = new Domain.Models.User(firstName, lastName)
            {
                Id      = userId,
                Title   = null,
                Sex     = null,
                Created = DateTime.UtcNow.AddMinutes(-1),
                Updated = DateTime.UtcNow,
            };

            mockMediator.Send(updateUserCommand).Returns(updatedUser);

            var updatedUserResponse = new UserResponse
            {
                Id        = userId,
                Title     = null,
                FirstName = firstName,
                LastName  = lastName,
                Sex       = null
            };

            mockMapper.Map <UserResponse>(updatedUser).Returns(updatedUserResponse);

            // Act...
            var objectResult = await sut.Upsert(userId, upsertUserRequest);

            // Assert...
            objectResult.Should().NotBeNull();
            objectResult.Should().BeAssignableTo <OkObjectResult>();
            var okObjectResult = objectResult as OkObjectResult;

            okObjectResult.Value.Should().NotBeNull();
            okObjectResult.Value.Should().BeAssignableTo <UserResponse>();
            var value = okObjectResult.Value as UserResponse;

            value.Id.Should().Be(userId);
            value.Title.Should().BeNullOrEmpty();
            value.FirstName.Should().Be(firstName);
            value.LastName.Should().Be(lastName);
            value.Sex.Should().BeNullOrEmpty();
        }