Remove `AbstractDynamoDbStore` as a base class from `Accounts`
This commit is contained in:
parent
9e312cbdfa
commit
c70dd119d3
|
@ -397,6 +397,7 @@ public class WhisperServerService extends Application<WhisperServerConfiguration
|
||||||
.workQueue(messageDeletionQueue).build();
|
.workQueue(messageDeletionQueue).build();
|
||||||
|
|
||||||
Accounts accounts = new Accounts(
|
Accounts accounts = new Accounts(
|
||||||
|
clock,
|
||||||
dynamoDbClient,
|
dynamoDbClient,
|
||||||
dynamoDbAsyncClient,
|
dynamoDbAsyncClient,
|
||||||
config.getDynamoDbTables().getAccounts().getTableName(),
|
config.getDynamoDbTables().getAccounts().getTableName(),
|
||||||
|
|
|
@ -80,7 +80,7 @@ import software.amazon.awssdk.utils.CompletableFutureUtils;
|
||||||
* make sure the field is stored in a DDB attribute and then put back into the account object in {@link Accounts#fromItem(Map)}.
|
* make sure the field is stored in a DDB attribute and then put back into the account object in {@link Accounts#fromItem(Map)}.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
|
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
|
||||||
public class Accounts extends AbstractDynamoDbStore {
|
public class Accounts {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(Accounts.class);
|
private static final Logger log = LoggerFactory.getLogger(Accounts.class);
|
||||||
|
|
||||||
|
@ -163,7 +163,8 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
|
|
||||||
private final Clock clock;
|
private final Clock clock;
|
||||||
|
|
||||||
private final DynamoDbAsyncClient asyncClient;
|
private final DynamoDbClient dynamoDbClient;
|
||||||
|
private final DynamoDbAsyncClient dynamoDbAsyncClient;
|
||||||
|
|
||||||
private final String phoneNumberConstraintTableName;
|
private final String phoneNumberConstraintTableName;
|
||||||
private final String phoneNumberIdentifierConstraintTableName;
|
private final String phoneNumberIdentifierConstraintTableName;
|
||||||
|
@ -172,11 +173,10 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
private final String usedLinkDeviceTokenTableName;
|
private final String usedLinkDeviceTokenTableName;
|
||||||
private final String accountsTableName;
|
private final String accountsTableName;
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
public Accounts(
|
public Accounts(
|
||||||
final Clock clock,
|
final Clock clock,
|
||||||
final DynamoDbClient client,
|
final DynamoDbClient dynamoDbClient,
|
||||||
final DynamoDbAsyncClient asyncClient,
|
final DynamoDbAsyncClient dynamoDbAsyncClient,
|
||||||
final String accountsTableName,
|
final String accountsTableName,
|
||||||
final String phoneNumberConstraintTableName,
|
final String phoneNumberConstraintTableName,
|
||||||
final String phoneNumberIdentifierConstraintTableName,
|
final String phoneNumberIdentifierConstraintTableName,
|
||||||
|
@ -184,9 +184,9 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
final String deletedAccountsTableName,
|
final String deletedAccountsTableName,
|
||||||
final String usedLinkDeviceTokenTableName) {
|
final String usedLinkDeviceTokenTableName) {
|
||||||
|
|
||||||
super(client);
|
|
||||||
this.clock = clock;
|
this.clock = clock;
|
||||||
this.asyncClient = asyncClient;
|
this.dynamoDbClient = dynamoDbClient;
|
||||||
|
this.dynamoDbAsyncClient = dynamoDbAsyncClient;
|
||||||
this.phoneNumberConstraintTableName = phoneNumberConstraintTableName;
|
this.phoneNumberConstraintTableName = phoneNumberConstraintTableName;
|
||||||
this.phoneNumberIdentifierConstraintTableName = phoneNumberIdentifierConstraintTableName;
|
this.phoneNumberIdentifierConstraintTableName = phoneNumberIdentifierConstraintTableName;
|
||||||
this.accountsTableName = accountsTableName;
|
this.accountsTableName = accountsTableName;
|
||||||
|
@ -195,21 +195,6 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
this.usedLinkDeviceTokenTableName = usedLinkDeviceTokenTableName;
|
this.usedLinkDeviceTokenTableName = usedLinkDeviceTokenTableName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Accounts(
|
|
||||||
final DynamoDbClient client,
|
|
||||||
final DynamoDbAsyncClient asyncClient,
|
|
||||||
final String accountsTableName,
|
|
||||||
final String phoneNumberConstraintTableName,
|
|
||||||
final String phoneNumberIdentifierConstraintTableName,
|
|
||||||
final String usernamesConstraintTableName,
|
|
||||||
final String deletedAccountsTableName,
|
|
||||||
final String usedLinkDeviceTokenTableName) {
|
|
||||||
|
|
||||||
this(Clock.systemUTC(), client, asyncClient, accountsTableName,
|
|
||||||
phoneNumberConstraintTableName, phoneNumberIdentifierConstraintTableName, usernamesConstraintTableName,
|
|
||||||
deletedAccountsTableName, usedLinkDeviceTokenTableName);
|
|
||||||
}
|
|
||||||
|
|
||||||
static class UsernameTable {
|
static class UsernameTable {
|
||||||
// usernameHash; bytes.
|
// usernameHash; bytes.
|
||||||
static final String KEY_USERNAME_HASH = Accounts.ATTR_USERNAME_HASH;
|
static final String KEY_USERNAME_HASH = Accounts.ATTR_USERNAME_HASH;
|
||||||
|
@ -255,7 +240,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
db().transactWriteItems(request);
|
dynamoDbClient.transactWriteItems(request);
|
||||||
} catch (final TransactionCanceledException e) {
|
} catch (final TransactionCanceledException e) {
|
||||||
|
|
||||||
final CancellationReason accountCancellationReason = e.cancellationReasons().get(2);
|
final CancellationReason accountCancellationReason = e.cancellationReasons().get(2);
|
||||||
|
@ -384,7 +369,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
writeItems.add(UpdateAccountSpec.forAccount(accountsTableName, accountToCreate).transactItem());
|
writeItems.add(UpdateAccountSpec.forAccount(accountsTableName, accountToCreate).transactItem());
|
||||||
writeItems.addAll(additionalWriteItems);
|
writeItems.addAll(additionalWriteItems);
|
||||||
|
|
||||||
return asyncClient.transactWriteItems(TransactWriteItemsRequest.builder().transactItems(writeItems).build())
|
return dynamoDbAsyncClient.transactWriteItems(TransactWriteItemsRequest.builder().transactItems(writeItems).build())
|
||||||
.thenApply(response -> {
|
.thenApply(response -> {
|
||||||
accountToCreate.setVersion(accountToCreate.getVersion() + 1);
|
accountToCreate.setVersion(accountToCreate.getVersion() + 1);
|
||||||
return (Void) null;
|
return (Void) null;
|
||||||
|
@ -478,7 +463,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
.transactItems(writeItems)
|
.transactItems(writeItems)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
db().transactWriteItems(request);
|
dynamoDbClient.transactWriteItems(request);
|
||||||
|
|
||||||
account.setVersion(account.getVersion() + 1);
|
account.setVersion(account.getVersion() + 1);
|
||||||
succeeded = true;
|
succeeded = true;
|
||||||
|
@ -603,7 +588,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
|
|
||||||
writeItems.add(UpdateAccountSpec.forAccount(accountsTableName, updatedAccount).transactItem());
|
writeItems.add(UpdateAccountSpec.forAccount(accountsTableName, updatedAccount).transactItem());
|
||||||
|
|
||||||
return asyncClient
|
return dynamoDbAsyncClient
|
||||||
.transactWriteItems(TransactWriteItemsRequest.builder().transactItems(writeItems).build())
|
.transactWriteItems(TransactWriteItemsRequest.builder().transactItems(writeItems).build())
|
||||||
.thenRun(Util.NOOP)
|
.thenRun(Util.NOOP)
|
||||||
.exceptionally(ExceptionUtils.exceptionallyHandler(TransactionCanceledException.class, e -> {
|
.exceptionally(ExceptionUtils.exceptionallyHandler(TransactionCanceledException.class, e -> {
|
||||||
|
@ -788,7 +773,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
holdToRemove.ifPresent(oldHold ->
|
holdToRemove.ifPresent(oldHold ->
|
||||||
writeItems.add(releaseHoldIfAllowedTransactItem(updatedAccount.getUuid(), oldHold, now)));
|
writeItems.add(releaseHoldIfAllowedTransactItem(updatedAccount.getUuid(), oldHold, now)));
|
||||||
|
|
||||||
return asyncClient.transactWriteItems(TransactWriteItemsRequest.builder().transactItems(writeItems).build())
|
return dynamoDbAsyncClient.transactWriteItems(TransactWriteItemsRequest.builder().transactItems(writeItems).build())
|
||||||
.thenApply(ignored -> updatedAccount);
|
.thenApply(ignored -> updatedAccount);
|
||||||
})
|
})
|
||||||
.thenApply(updatedAccount -> {
|
.thenApply(updatedAccount -> {
|
||||||
|
@ -829,7 +814,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
|
|
||||||
// Otherwise, there's an existing link handle. If this is the result of an account being re-registered, we should
|
// Otherwise, there's an existing link handle. If this is the result of an account being re-registered, we should
|
||||||
// preserve the link handle.
|
// preserve the link handle.
|
||||||
return asyncClient.getItem(GetItemRequest.builder()
|
return dynamoDbAsyncClient.getItem(GetItemRequest.builder()
|
||||||
.tableName(usernamesConstraintTableName)
|
.tableName(usernamesConstraintTableName)
|
||||||
.key(Map.of(UsernameTable.KEY_USERNAME_HASH, AttributeValues.b(usernameHash)))
|
.key(Map.of(UsernameTable.KEY_USERNAME_HASH, AttributeValues.b(usernameHash)))
|
||||||
.projectionExpression(UsernameTable.ATTR_RECLAIMABLE).build())
|
.projectionExpression(UsernameTable.ATTR_RECLAIMABLE).build())
|
||||||
|
@ -878,7 +863,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
// 2?: Adding that hold may have caused our account to exceed our maximum holds. Release an old hold
|
// 2?: Adding that hold may have caused our account to exceed our maximum holds. Release an old hold
|
||||||
holdToRemove.ifPresent(oldHold -> items.add(releaseHoldIfAllowedTransactItem(updatedAccount.getUuid(), oldHold, now)));
|
holdToRemove.ifPresent(oldHold -> items.add(releaseHoldIfAllowedTransactItem(updatedAccount.getUuid(), oldHold, now)));
|
||||||
|
|
||||||
return asyncClient.transactWriteItems(TransactWriteItemsRequest.builder().transactItems(items).build())
|
return dynamoDbAsyncClient.transactWriteItems(TransactWriteItemsRequest.builder().transactItems(items).build())
|
||||||
.thenAccept(ignored -> {
|
.thenAccept(ignored -> {
|
||||||
account.setUsernameHash(null);
|
account.setUsernameHash(null);
|
||||||
account.setUsernameLinkDetails(null, null);
|
account.setUsernameLinkDetails(null, null);
|
||||||
|
@ -1009,7 +994,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
.forAccount(accountsTableName, account)
|
.forAccount(accountsTableName, account)
|
||||||
.updateItemRequest();
|
.updateItemRequest();
|
||||||
|
|
||||||
return asyncClient.updateItem(updateItemRequest)
|
return dynamoDbAsyncClient.updateItem(updateItemRequest)
|
||||||
.thenApply(response -> {
|
.thenApply(response -> {
|
||||||
account.setVersion(AttributeValues.getInt(response.attributes(), "V", account.getVersion() + 1));
|
account.setVersion(AttributeValues.getInt(response.attributes(), "V", account.getVersion() + 1));
|
||||||
return (Void) null;
|
return (Void) null;
|
||||||
|
@ -1059,7 +1044,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
writeItems.add(UpdateAccountSpec.forAccount(accountsTableName, account).transactItem());
|
writeItems.add(UpdateAccountSpec.forAccount(accountsTableName, account).transactItem());
|
||||||
writeItems.addAll(additionalWriteItems);
|
writeItems.addAll(additionalWriteItems);
|
||||||
|
|
||||||
return asyncClient.transactWriteItems(TransactWriteItemsRequest.builder()
|
return dynamoDbAsyncClient.transactWriteItems(TransactWriteItemsRequest.builder()
|
||||||
.transactItems(writeItems)
|
.transactItems(writeItems)
|
||||||
.build())
|
.build())
|
||||||
.thenApply(response -> {
|
.thenApply(response -> {
|
||||||
|
@ -1187,7 +1172,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<UUID> findRecentlyDeletedAccountIdentifier(final UUID phoneNumberIdentifier) {
|
public Optional<UUID> findRecentlyDeletedAccountIdentifier(final UUID phoneNumberIdentifier) {
|
||||||
final GetItemResponse response = db().getItem(GetItemRequest.builder()
|
final GetItemResponse response = dynamoDbClient.getItem(GetItemRequest.builder()
|
||||||
.tableName(deletedAccountsTableName)
|
.tableName(deletedAccountsTableName)
|
||||||
.consistentRead(true)
|
.consistentRead(true)
|
||||||
.key(Map.of(DELETED_ACCOUNTS_KEY_ACCOUNT_PNI, AttributeValues.fromString(phoneNumberIdentifier.toString())))
|
.key(Map.of(DELETED_ACCOUNTS_KEY_ACCOUNT_PNI, AttributeValues.fromString(phoneNumberIdentifier.toString())))
|
||||||
|
@ -1197,7 +1182,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<UUID> findRecentlyDeletedPhoneNumberIdentifier(final UUID uuid) {
|
public Optional<UUID> findRecentlyDeletedPhoneNumberIdentifier(final UUID uuid) {
|
||||||
final QueryResponse response = db().query(QueryRequest.builder()
|
final QueryResponse response = dynamoDbClient.query(QueryRequest.builder()
|
||||||
.tableName(deletedAccountsTableName)
|
.tableName(deletedAccountsTableName)
|
||||||
.indexName(DELETED_ACCOUNTS_UUID_TO_PNI_INDEX_NAME)
|
.indexName(DELETED_ACCOUNTS_UUID_TO_PNI_INDEX_NAME)
|
||||||
.keyConditionExpression("#uuid = :uuid")
|
.keyConditionExpression("#uuid = :uuid")
|
||||||
|
@ -1234,7 +1219,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
|
|
||||||
transactWriteItems.addAll(additionalWriteItems);
|
transactWriteItems.addAll(additionalWriteItems);
|
||||||
|
|
||||||
return asyncClient.transactWriteItems(TransactWriteItemsRequest.builder()
|
return dynamoDbAsyncClient.transactWriteItems(TransactWriteItemsRequest.builder()
|
||||||
.transactItems(transactWriteItems)
|
.transactItems(transactWriteItems)
|
||||||
.build())
|
.build())
|
||||||
.thenRun(Util.NOOP);
|
.thenRun(Util.NOOP);
|
||||||
|
@ -1251,7 +1236,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
return Flux.range(0, segments)
|
return Flux.range(0, segments)
|
||||||
.parallel()
|
.parallel()
|
||||||
.runOn(scheduler)
|
.runOn(scheduler)
|
||||||
.flatMap(segment -> asyncClient.scanPaginator(ScanRequest.builder()
|
.flatMap(segment -> dynamoDbAsyncClient.scanPaginator(ScanRequest.builder()
|
||||||
.tableName(accountsTableName)
|
.tableName(accountsTableName)
|
||||||
.consistentRead(true)
|
.consistentRead(true)
|
||||||
.segment(segment)
|
.segment(segment)
|
||||||
|
@ -1278,7 +1263,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
return Flux.range(0, segments)
|
return Flux.range(0, segments)
|
||||||
.parallel()
|
.parallel()
|
||||||
.runOn(scheduler)
|
.runOn(scheduler)
|
||||||
.flatMap(segment -> asyncClient.scanPaginator(ScanRequest.builder()
|
.flatMap(segment -> dynamoDbAsyncClient.scanPaginator(ScanRequest.builder()
|
||||||
.tableName(deletedAccountsTableName)
|
.tableName(deletedAccountsTableName)
|
||||||
.consistentRead(true)
|
.consistentRead(true)
|
||||||
.segment(segment)
|
.segment(segment)
|
||||||
|
@ -1346,7 +1331,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
private Optional<Map<String, AttributeValue>> itemByKey(final String table, final String keyName, final AttributeValue keyValue) {
|
private Optional<Map<String, AttributeValue>> itemByKey(final String table, final String keyName, final AttributeValue keyValue) {
|
||||||
final GetItemResponse response = db().getItem(GetItemRequest.builder()
|
final GetItemResponse response = dynamoDbClient.getItem(GetItemRequest.builder()
|
||||||
.tableName(table)
|
.tableName(table)
|
||||||
.key(Map.of(keyName, keyValue))
|
.key(Map.of(keyName, keyValue))
|
||||||
.consistentRead(true)
|
.consistentRead(true)
|
||||||
|
@ -1356,7 +1341,7 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
private CompletableFuture<Optional<Map<String, AttributeValue>>> itemByKeyAsync(final String table, final String keyName, final AttributeValue keyValue) {
|
private CompletableFuture<Optional<Map<String, AttributeValue>>> itemByKeyAsync(final String table, final String keyName, final AttributeValue keyValue) {
|
||||||
return asyncClient.getItem(GetItemRequest.builder()
|
return dynamoDbAsyncClient.getItem(GetItemRequest.builder()
|
||||||
.tableName(table)
|
.tableName(table)
|
||||||
.key(Map.of(keyName, keyValue))
|
.key(Map.of(keyName, keyValue))
|
||||||
.consistentRead(true)
|
.consistentRead(true)
|
||||||
|
@ -1364,36 +1349,9 @@ public class Accounts extends AbstractDynamoDbStore {
|
||||||
.thenApply(response -> Optional.ofNullable(response.item()).filter(item -> !item.isEmpty()));
|
.thenApply(response -> Optional.ofNullable(response.item()).filter(item -> !item.isEmpty()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
private Optional<Map<String, AttributeValue>> itemByGsiKey(final String table, final String indexName, final String keyName, final AttributeValue keyValue) {
|
|
||||||
final QueryResponse response = db().query(QueryRequest.builder()
|
|
||||||
.tableName(table)
|
|
||||||
.indexName(indexName)
|
|
||||||
.keyConditionExpression("#gsiKey = :gsiValue")
|
|
||||||
.projectionExpression("#uuid")
|
|
||||||
.expressionAttributeNames(Map.of(
|
|
||||||
"#gsiKey", keyName,
|
|
||||||
"#uuid", KEY_ACCOUNT_UUID))
|
|
||||||
.expressionAttributeValues(Map.of(
|
|
||||||
":gsiValue", keyValue))
|
|
||||||
.build());
|
|
||||||
|
|
||||||
if (response.count() == 0) {
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (response.count() > 1) {
|
|
||||||
throw new IllegalStateException("More than one row located for GSI [%s], key-value pair [%s, %s]"
|
|
||||||
.formatted(indexName, keyName, keyValue));
|
|
||||||
}
|
|
||||||
|
|
||||||
final AttributeValue primaryKeyValue = response.items().get(0).get(KEY_ACCOUNT_UUID);
|
|
||||||
return itemByKey(table, KEY_ACCOUNT_UUID, primaryKeyValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
private CompletableFuture<Optional<Map<String, AttributeValue>>> itemByGsiKeyAsync(final String table, final String indexName, final String keyName, final AttributeValue keyValue) {
|
private CompletableFuture<Optional<Map<String, AttributeValue>>> itemByGsiKeyAsync(final String table, final String indexName, final String keyName, final AttributeValue keyValue) {
|
||||||
return asyncClient.query(QueryRequest.builder()
|
return dynamoDbAsyncClient.query(QueryRequest.builder()
|
||||||
.tableName(table)
|
.tableName(table)
|
||||||
.indexName(indexName)
|
.indexName(indexName)
|
||||||
.keyConditionExpression("#gsiKey = :gsiValue")
|
.keyConditionExpression("#gsiKey = :gsiValue")
|
||||||
|
|
|
@ -175,6 +175,7 @@ record CommandDependencies(
|
||||||
new ClientPublicKeys(dynamoDbAsyncClient, configuration.getDynamoDbTables().getClientPublicKeys().getTableName());
|
new ClientPublicKeys(dynamoDbAsyncClient, configuration.getDynamoDbTables().getClientPublicKeys().getTableName());
|
||||||
|
|
||||||
Accounts accounts = new Accounts(
|
Accounts accounts = new Accounts(
|
||||||
|
clock,
|
||||||
dynamoDbClient,
|
dynamoDbClient,
|
||||||
dynamoDbAsyncClient,
|
dynamoDbAsyncClient,
|
||||||
configuration.getDynamoDbTables().getAccounts().getTableName(),
|
configuration.getDynamoDbTables().getAccounts().getTableName(),
|
||||||
|
|
|
@ -102,6 +102,7 @@ public class AccountCreationDeletionIntegrationTest {
|
||||||
DynamoDbExtensionSchema.Tables.CLIENT_PUBLIC_KEYS.tableName());
|
DynamoDbExtensionSchema.Tables.CLIENT_PUBLIC_KEYS.tableName());
|
||||||
|
|
||||||
final Accounts accounts = new Accounts(
|
final Accounts accounts = new Accounts(
|
||||||
|
CLOCK,
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbClient(),
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
||||||
DynamoDbExtensionSchema.Tables.ACCOUNTS.tableName(),
|
DynamoDbExtensionSchema.Tables.ACCOUNTS.tableName(),
|
||||||
|
|
|
@ -93,6 +93,7 @@ class AccountsManagerChangeNumberIntegrationTest {
|
||||||
DynamoDbExtensionSchema.Tables.CLIENT_PUBLIC_KEYS.tableName());
|
DynamoDbExtensionSchema.Tables.CLIENT_PUBLIC_KEYS.tableName());
|
||||||
|
|
||||||
final Accounts accounts = new Accounts(
|
final Accounts accounts = new Accounts(
|
||||||
|
Clock.systemUTC(),
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbClient(),
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
||||||
Tables.ACCOUNTS.tableName(),
|
Tables.ACCOUNTS.tableName(),
|
||||||
|
|
|
@ -91,6 +91,7 @@ class AccountsManagerConcurrentModificationIntegrationTest {
|
||||||
when(dynamicConfigurationManager.getConfiguration()).thenReturn(new DynamicConfiguration());
|
when(dynamicConfigurationManager.getConfiguration()).thenReturn(new DynamicConfiguration());
|
||||||
|
|
||||||
accounts = new Accounts(
|
accounts = new Accounts(
|
||||||
|
Clock.systemUTC(),
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbClient(),
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
||||||
Tables.ACCOUNTS.tableName(),
|
Tables.ACCOUNTS.tableName(),
|
||||||
|
|
|
@ -102,6 +102,7 @@ class AccountsManagerUsernameIntegrationTest {
|
||||||
);
|
);
|
||||||
|
|
||||||
accounts = Mockito.spy(new Accounts(
|
accounts = Mockito.spy(new Accounts(
|
||||||
|
Clock.systemUTC(),
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbClient(),
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
||||||
Tables.ACCOUNTS.tableName(),
|
Tables.ACCOUNTS.tableName(),
|
||||||
|
|
|
@ -600,7 +600,9 @@ class AccountsTest {
|
||||||
void testUpdateWithMockTransactionConflictException(boolean wrapException) {
|
void testUpdateWithMockTransactionConflictException(boolean wrapException) {
|
||||||
|
|
||||||
final DynamoDbAsyncClient dynamoDbAsyncClient = mock(DynamoDbAsyncClient.class);
|
final DynamoDbAsyncClient dynamoDbAsyncClient = mock(DynamoDbAsyncClient.class);
|
||||||
accounts = new Accounts(mock(DynamoDbClient.class),
|
accounts = new Accounts(
|
||||||
|
clock,
|
||||||
|
mock(DynamoDbClient.class),
|
||||||
dynamoDbAsyncClient,
|
dynamoDbAsyncClient,
|
||||||
Tables.ACCOUNTS.tableName(),
|
Tables.ACCOUNTS.tableName(),
|
||||||
Tables.NUMBERS.tableName(),
|
Tables.NUMBERS.tableName(),
|
||||||
|
@ -689,7 +691,9 @@ class AccountsTest {
|
||||||
void testUpdateTransactionallyWithMockTransactionConflictException() {
|
void testUpdateTransactionallyWithMockTransactionConflictException() {
|
||||||
final DynamoDbAsyncClient dynamoDbAsyncClient = mock(DynamoDbAsyncClient.class);
|
final DynamoDbAsyncClient dynamoDbAsyncClient = mock(DynamoDbAsyncClient.class);
|
||||||
|
|
||||||
accounts = new Accounts(mock(DynamoDbClient.class),
|
accounts = new Accounts(
|
||||||
|
clock,
|
||||||
|
mock(DynamoDbClient.class),
|
||||||
dynamoDbAsyncClient,
|
dynamoDbAsyncClient,
|
||||||
Tables.ACCOUNTS.tableName(),
|
Tables.ACCOUNTS.tableName(),
|
||||||
Tables.NUMBERS.tableName(),
|
Tables.NUMBERS.tableName(),
|
||||||
|
@ -1081,7 +1085,9 @@ class AccountsTest {
|
||||||
final Class<Exception> expectedException) {
|
final Class<Exception> expectedException) {
|
||||||
final DynamoDbAsyncClient dbAsyncClient = mock(DynamoDbAsyncClient.class);
|
final DynamoDbAsyncClient dbAsyncClient = mock(DynamoDbAsyncClient.class);
|
||||||
|
|
||||||
accounts = new Accounts(mock(DynamoDbClient.class),
|
accounts = new Accounts(
|
||||||
|
clock,
|
||||||
|
mock(DynamoDbClient.class),
|
||||||
dbAsyncClient,
|
dbAsyncClient,
|
||||||
Tables.ACCOUNTS.tableName(),
|
Tables.ACCOUNTS.tableName(),
|
||||||
Tables.NUMBERS.tableName(),
|
Tables.NUMBERS.tableName(),
|
||||||
|
@ -1124,7 +1130,9 @@ class AccountsTest {
|
||||||
final Class<Exception> expectedException) {
|
final Class<Exception> expectedException) {
|
||||||
final DynamoDbAsyncClient dbAsyncClient = mock(DynamoDbAsyncClient.class);
|
final DynamoDbAsyncClient dbAsyncClient = mock(DynamoDbAsyncClient.class);
|
||||||
|
|
||||||
accounts = new Accounts(mock(DynamoDbClient.class),
|
accounts = new Accounts(
|
||||||
|
clock,
|
||||||
|
mock(DynamoDbClient.class),
|
||||||
dbAsyncClient,
|
dbAsyncClient,
|
||||||
Tables.ACCOUNTS.tableName(),
|
Tables.ACCOUNTS.tableName(),
|
||||||
Tables.NUMBERS.tableName(),
|
Tables.NUMBERS.tableName(),
|
||||||
|
@ -1225,7 +1233,9 @@ class AccountsTest {
|
||||||
final Optional<String> accountsCancellationString) {
|
final Optional<String> accountsCancellationString) {
|
||||||
final DynamoDbAsyncClient dbAsyncClient = mock(DynamoDbAsyncClient.class);
|
final DynamoDbAsyncClient dbAsyncClient = mock(DynamoDbAsyncClient.class);
|
||||||
|
|
||||||
accounts = new Accounts(mock(DynamoDbClient.class),
|
accounts = new Accounts(
|
||||||
|
clock,
|
||||||
|
mock(DynamoDbClient.class),
|
||||||
dbAsyncClient,
|
dbAsyncClient,
|
||||||
Tables.ACCOUNTS.tableName(),
|
Tables.ACCOUNTS.tableName(),
|
||||||
Tables.NUMBERS.tableName(),
|
Tables.NUMBERS.tableName(),
|
||||||
|
|
|
@ -101,6 +101,7 @@ public class AddRemoveDeviceIntegrationTest {
|
||||||
DynamoDbExtensionSchema.Tables.CLIENT_PUBLIC_KEYS.tableName());
|
DynamoDbExtensionSchema.Tables.CLIENT_PUBLIC_KEYS.tableName());
|
||||||
|
|
||||||
final Accounts accounts = new Accounts(
|
final Accounts accounts = new Accounts(
|
||||||
|
clock,
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbClient(),
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
||||||
DynamoDbExtensionSchema.Tables.ACCOUNTS.tableName(),
|
DynamoDbExtensionSchema.Tables.ACCOUNTS.tableName(),
|
||||||
|
|
Loading…
Reference in New Issue