private static User CreateUserWithUpsertUserRequest(UpsertUserRequest request) { return(new User { Email = request.Email, Events = request.Events, Name = request.Name, Type = "user" }); }
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>(); }
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(); }