mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-01-23 19:54:08 +00:00
Merge branch 'master' of https://github.com/Azure/cosmos-explorer into users/aisayas/playwright-3
This commit is contained in:
@@ -88,6 +88,69 @@ type createTestSqlContainerConfig = {
|
||||
databaseName?: string;
|
||||
};
|
||||
|
||||
type createMultipleTestSqlContainerConfig = {
|
||||
containerCount?: number;
|
||||
partitionKey?: string;
|
||||
databaseName?: string;
|
||||
accountType: TestAccount.SQLContainerCopyOnly | TestAccount.SQL;
|
||||
};
|
||||
|
||||
export async function createMultipleTestContainers({
|
||||
partitionKey = "/partitionKey",
|
||||
databaseName = "",
|
||||
containerCount = 1,
|
||||
accountType = TestAccount.SQL,
|
||||
}: createMultipleTestSqlContainerConfig): Promise<TestContainerContext[]> {
|
||||
const creationPromises: Promise<TestContainerContext>[] = [];
|
||||
|
||||
const databaseId = databaseName ? databaseName : generateUniqueName("db");
|
||||
const credentials = getAzureCLICredentials();
|
||||
const adaptedCredentials = new AzureIdentityCredentialAdapter(credentials);
|
||||
const armClient = new CosmosDBManagementClient(adaptedCredentials, subscriptionId);
|
||||
const accountName = getAccountName(accountType);
|
||||
const account = await armClient.databaseAccounts.get(resourceGroupName, accountName);
|
||||
|
||||
const clientOptions: CosmosClientOptions = {
|
||||
endpoint: account.documentEndpoint!,
|
||||
};
|
||||
|
||||
const rbacToken =
|
||||
accountType === TestAccount.SQL
|
||||
? process.env.NOSQL_TESTACCOUNT_TOKEN
|
||||
: accountType === TestAccount.SQLContainerCopyOnly
|
||||
? process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN
|
||||
: "";
|
||||
if (rbacToken) {
|
||||
clientOptions.tokenProvider = async (): Promise<string> => {
|
||||
const AUTH_PREFIX = `type=aad&ver=1.0&sig=`;
|
||||
const authorizationToken = `${AUTH_PREFIX}${rbacToken}`;
|
||||
return authorizationToken;
|
||||
};
|
||||
} else {
|
||||
const keys = await armClient.databaseAccounts.listKeys(resourceGroupName, accountName);
|
||||
clientOptions.key = keys.primaryMasterKey;
|
||||
}
|
||||
|
||||
const client = new CosmosClient(clientOptions);
|
||||
const { database } = await client.databases.createIfNotExists({ id: databaseId });
|
||||
|
||||
try {
|
||||
for (let i = 0; i < containerCount; i++) {
|
||||
const containerId = `testcontainer_${Date.now()}_${Math.random().toString(36).substring(6)}_${i}`;
|
||||
creationPromises.push(
|
||||
database.containers.createIfNotExists({ id: containerId, partitionKey }).then(({ container }) => {
|
||||
return new TestContainerContext(armClient, client, database, container, new Map<string, TestItem>());
|
||||
}),
|
||||
);
|
||||
}
|
||||
const contexts = await Promise.all(creationPromises);
|
||||
return contexts;
|
||||
} catch (e) {
|
||||
await database.delete();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
export async function createTestSQLContainer({
|
||||
includeTestData = false,
|
||||
partitionKey = "/partitionKey",
|
||||
|
||||
Reference in New Issue
Block a user