public void GetUserPath_UserIdGiven_ReturnsProperCustomerPath() { //Arrange var userId = Guid.NewGuid(); //Act var path = AmazonPathHelper.GetUserPath(userId); //Assert Assert.AreEqual($"/customers/{userId}/", path); }
public void GetUserPath_NullUserId_ReturnsSlash() { //Arrange var userId = (Guid?)null; //Act var path = AmazonPathHelper.GetUserPath(userId); //Assert Assert.AreEqual("/", path); }
public async Task <AmazonUser> Handle(EnsureAmazonUserWithNameCommand request, CancellationToken cancellationToken) { var amazonUser = await mediator.Send( new GetAmazonUserByNameQuery(request.Name), cancellationToken); if (amazonUser != null) { return(amazonUser); } var newUser = new AmazonUser() { Name = request.Name, UserId = request.UserId, EncryptedSecretAccessKey = Array.Empty <byte>(), EncryptedAccessKeyId = Array.Empty <byte>() }; await this.dataContext.AmazonUsers.AddAsync(newUser, cancellationToken); await this.dataContext.SaveChangesAsync(cancellationToken); await amazonIdentityManagementService.CreateUserAsync(new CreateUserRequest(request.Name) { Path = AmazonPathHelper.GetUserPath(request.UserId), Tags = new List <Tag>() { new Tag() { Key = "UserId", Value = request.UserId?.ToString() ?? string.Empty } } }, cancellationToken); try { var keyResponse = await this.amazonIdentityManagementService.CreateAccessKeyAsync(new CreateAccessKeyRequest() { UserName = request.Name }, cancellationToken); try { newUser.EncryptedAccessKeyId = await this.aesEncryptionHelper.EncryptAsync(keyResponse.AccessKey.AccessKeyId); newUser.EncryptedSecretAccessKey = await this.aesEncryptionHelper.EncryptAsync(keyResponse.AccessKey.SecretAccessKey); await this.dataContext.SaveChangesAsync(cancellationToken); await EnsureGroupMembershipAsync(newUser, cancellationToken); } catch { await this.amazonIdentityManagementService.DeleteAccessKeyAsync(new DeleteAccessKeyRequest(request.Name), cancellationToken); throw; } } catch { await this.amazonIdentityManagementService.DeleteUserAsync(new DeleteUserRequest(request.Name), cancellationToken); throw; } return(newUser); }