mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2024-11-28 16:36:46 +00:00
Test explorer changes (#420)
* Changes to publish pane * fixed format errors * fixed failing test * added test explorer changes for mongo accounts * added log for test * fixed lit errors * added secrets to ci.yml file * fixed failing self serve test
This commit is contained in:
parent
2a7546e0de
commit
9926fd97a2
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -166,6 +166,8 @@ jobs:
|
|||||||
PORTAL_RUNNER_RESOURCE_GROUP: ${{ secrets.PORTAL_RUNNER_RESOURCE_GROUP }}
|
PORTAL_RUNNER_RESOURCE_GROUP: ${{ secrets.PORTAL_RUNNER_RESOURCE_GROUP }}
|
||||||
PORTAL_RUNNER_DATABASE_ACCOUNT: ${{ secrets.PORTAL_RUNNER_DATABASE_ACCOUNT }}
|
PORTAL_RUNNER_DATABASE_ACCOUNT: ${{ secrets.PORTAL_RUNNER_DATABASE_ACCOUNT }}
|
||||||
PORTAL_RUNNER_DATABASE_ACCOUNT_KEY: ${{ secrets.PORTAL_RUNNER_DATABASE_ACCOUNT_KEY }}
|
PORTAL_RUNNER_DATABASE_ACCOUNT_KEY: ${{ secrets.PORTAL_RUNNER_DATABASE_ACCOUNT_KEY }}
|
||||||
|
PORTAL_RUNNER_MONGO_DATABASE_ACCOUNT: ${{ secrets.PORTAL_RUNNER_MONGO_DATABASE_ACCOUNT }}
|
||||||
|
PORTAL_RUNNER_MONGO_DATABASE_ACCOUNT_KEY: ${{ secrets.PORTAL_RUNNER_MONGO_DATABASE_ACCOUNT_KEY }}
|
||||||
NOTEBOOKS_TEST_RUNNER_TENANT_ID: ${{ secrets.NOTEBOOKS_TEST_RUNNER_TENANT_ID }}
|
NOTEBOOKS_TEST_RUNNER_TENANT_ID: ${{ secrets.NOTEBOOKS_TEST_RUNNER_TENANT_ID }}
|
||||||
NOTEBOOKS_TEST_RUNNER_CLIENT_ID: ${{ secrets.NOTEBOOKS_TEST_RUNNER_CLIENT_ID }}
|
NOTEBOOKS_TEST_RUNNER_CLIENT_ID: ${{ secrets.NOTEBOOKS_TEST_RUNNER_CLIENT_ID }}
|
||||||
NOTEBOOKS_TEST_RUNNER_CLIENT_SECRET: ${{ secrets.NOTEBOOKS_TEST_RUNNER_CLIENT_SECRET }}
|
NOTEBOOKS_TEST_RUNNER_CLIENT_SECRET: ${{ secrets.NOTEBOOKS_TEST_RUNNER_CLIENT_SECRET }}
|
||||||
|
21
test/mongo/openMongoAccount.spec.ts
Normal file
21
test/mongo/openMongoAccount.spec.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import { Frame } from "puppeteer";
|
||||||
|
import { ApiKind } from "../../src/Contracts/DataModels";
|
||||||
|
import { getTestExplorerFrame } from "../testExplorer/TestExplorerUtils";
|
||||||
|
|
||||||
|
jest.setTimeout(300000);
|
||||||
|
|
||||||
|
let frame: Frame;
|
||||||
|
|
||||||
|
describe("Mongo", () => {
|
||||||
|
it("Account opens", async () => {
|
||||||
|
try {
|
||||||
|
frame = await getTestExplorerFrame(ApiKind.MongoDB);
|
||||||
|
await frame.waitForSelector(".accordion");
|
||||||
|
} catch (error) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
const testName = (expect as any).getState().currentTestName;
|
||||||
|
await page.screenshot({ path: `Test Failed ${testName}.jpg` });
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
@ -2,17 +2,22 @@ import { Frame } from "puppeteer";
|
|||||||
import { TestExplorerParams } from "../testExplorer/TestExplorerParams";
|
import { TestExplorerParams } from "../testExplorer/TestExplorerParams";
|
||||||
import { getTestExplorerFrame } from "../testExplorer/TestExplorerUtils";
|
import { getTestExplorerFrame } from "../testExplorer/TestExplorerUtils";
|
||||||
import { SelfServeType } from "../../src/SelfServe/SelfServeUtils";
|
import { SelfServeType } from "../../src/SelfServe/SelfServeUtils";
|
||||||
|
import { ApiKind } from "../../src/Contracts/DataModels";
|
||||||
|
|
||||||
jest.setTimeout(300000);
|
jest.setTimeout(300000);
|
||||||
|
|
||||||
let frame: Frame;
|
let frame: Frame;
|
||||||
describe("Self Serve", () => {
|
describe("Self Serve", () => {
|
||||||
it.skip("Launch Self Serve Example", async () => {
|
it("Launch Self Serve Example", async () => {
|
||||||
try {
|
try {
|
||||||
frame = await getTestExplorerFrame(
|
frame = await getTestExplorerFrame(
|
||||||
|
ApiKind.SQL,
|
||||||
new Map<string, string>([[TestExplorerParams.selfServeType, SelfServeType.example]])
|
new Map<string, string>([[TestExplorerParams.selfServeType, SelfServeType.example]])
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// wait for refresh RP call to end
|
||||||
|
await frame.waitFor(10000);
|
||||||
|
|
||||||
// id of the display element is in the format {PROPERTY_NAME}-{DISPLAY_NAME}-{DISPLAY_TYPE}
|
// id of the display element is in the format {PROPERTY_NAME}-{DISPLAY_NAME}-{DISPLAY_TYPE}
|
||||||
await frame.waitForSelector("#description-text-display");
|
await frame.waitForSelector("#description-text-display");
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import "../../less/hostedexplorer.less";
|
import "../../less/hostedexplorer.less";
|
||||||
import { TestExplorerParams } from "./TestExplorerParams";
|
import { TestExplorerParams } from "./TestExplorerParams";
|
||||||
import { DatabaseAccountsGetResponse } from "@azure/arm-cosmosdb/esm/models";
|
|
||||||
import { CosmosDBManagementClient } from "@azure/arm-cosmosdb";
|
import { CosmosDBManagementClient } from "@azure/arm-cosmosdb";
|
||||||
import * as msRest from "@azure/ms-rest-js";
|
import * as msRest from "@azure/ms-rest-js";
|
||||||
import * as ViewModels from "../../src/Contracts/ViewModels";
|
import * as ViewModels from "../../src/Contracts/ViewModels";
|
||||||
|
import { Capability, DatabaseAccount } from "../../src/Contracts/DataModels";
|
||||||
|
|
||||||
class CustomSigner implements msRest.ServiceClientCredentials {
|
class CustomSigner implements msRest.ServiceClientCredentials {
|
||||||
private token: string;
|
private token: string;
|
||||||
@ -22,9 +22,32 @@ const getDatabaseAccount = async (
|
|||||||
notebooksAccountSubscriptonId: string,
|
notebooksAccountSubscriptonId: string,
|
||||||
notebooksAccountResourceGroup: string,
|
notebooksAccountResourceGroup: string,
|
||||||
notebooksAccountName: string
|
notebooksAccountName: string
|
||||||
): Promise<DatabaseAccountsGetResponse> => {
|
): Promise<DatabaseAccount> => {
|
||||||
const client = new CosmosDBManagementClient(new CustomSigner(token), notebooksAccountSubscriptonId);
|
const client = new CosmosDBManagementClient(new CustomSigner(token), notebooksAccountSubscriptonId);
|
||||||
return client.databaseAccounts.get(notebooksAccountResourceGroup, notebooksAccountName);
|
const databaseAccountGetResponse = await client.databaseAccounts.get(
|
||||||
|
notebooksAccountResourceGroup,
|
||||||
|
notebooksAccountName
|
||||||
|
);
|
||||||
|
|
||||||
|
const databaseAccount: DatabaseAccount = {
|
||||||
|
id: databaseAccountGetResponse.id,
|
||||||
|
name: databaseAccountGetResponse.name,
|
||||||
|
location: databaseAccountGetResponse.location,
|
||||||
|
type: databaseAccountGetResponse.type,
|
||||||
|
kind: databaseAccountGetResponse.kind,
|
||||||
|
tags: databaseAccountGetResponse.tags,
|
||||||
|
properties: {
|
||||||
|
documentEndpoint: databaseAccountGetResponse.documentEndpoint,
|
||||||
|
tableEndpoint: undefined,
|
||||||
|
gremlinEndpoint: undefined,
|
||||||
|
cassandraEndpoint: undefined,
|
||||||
|
capabilities: databaseAccountGetResponse.capabilities.map((capability) => {
|
||||||
|
return { name: capability.name } as Capability;
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
return databaseAccount;
|
||||||
};
|
};
|
||||||
|
|
||||||
const initTestExplorer = async (): Promise<void> => {
|
const initTestExplorer = async (): Promise<void> => {
|
||||||
@ -55,7 +78,7 @@ const initTestExplorer = async (): Promise<void> => {
|
|||||||
subscriptionId: portalRunnerSubscripton,
|
subscriptionId: portalRunnerSubscripton,
|
||||||
resourceGroup: portalRunnerResourceGroup,
|
resourceGroup: portalRunnerResourceGroup,
|
||||||
authorizationToken: `Bearer ${token}`,
|
authorizationToken: `Bearer ${token}`,
|
||||||
features: {},
|
features: { sampleFeature: "sampleFeatureValue" },
|
||||||
hasWriteAccess: true,
|
hasWriteAccess: true,
|
||||||
csmEndpoint: "https://management.azure.com",
|
csmEndpoint: "https://management.azure.com",
|
||||||
dnsSuffix: "documents.azure.com",
|
dnsSuffix: "documents.azure.com",
|
||||||
|
@ -1,18 +1,30 @@
|
|||||||
import { Frame } from "puppeteer";
|
import { Frame } from "puppeteer";
|
||||||
import { TestExplorerParams } from "./TestExplorerParams";
|
import { TestExplorerParams } from "./TestExplorerParams";
|
||||||
import { ClientSecretCredential } from "@azure/identity";
|
import { ClientSecretCredential } from "@azure/identity";
|
||||||
|
import { ApiKind } from "../../src/Contracts/DataModels";
|
||||||
|
|
||||||
let testExplorerFrame: Frame;
|
let testExplorerFrame: Frame;
|
||||||
export const getTestExplorerFrame = async (params?: Map<string, string>): Promise<Frame> => {
|
export const getTestExplorerFrame = async (apiKind?: ApiKind, params?: Map<string, string>): Promise<Frame> => {
|
||||||
if (testExplorerFrame) {
|
if (testExplorerFrame) {
|
||||||
return testExplorerFrame;
|
return testExplorerFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let portalRunnerDatabaseAccount: string;
|
||||||
|
let portalRunnerDatabaseAccountKey: string;
|
||||||
|
|
||||||
|
switch (apiKind) {
|
||||||
|
case ApiKind.MongoDB:
|
||||||
|
portalRunnerDatabaseAccount = process.env.PORTAL_RUNNER_MONGO_DATABASE_ACCOUNT;
|
||||||
|
portalRunnerDatabaseAccountKey = process.env.PORTAL_RUNNER_MONGO_DATABASE_ACCOUNT_KEY;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
portalRunnerDatabaseAccount = process.env.PORTAL_RUNNER_DATABASE_ACCOUNT;
|
||||||
|
portalRunnerDatabaseAccountKey = process.env.PORTAL_RUNNER_DATABASE_ACCOUNT_KEY;
|
||||||
|
}
|
||||||
|
|
||||||
const notebooksTestRunnerTenantId = process.env.NOTEBOOKS_TEST_RUNNER_TENANT_ID;
|
const notebooksTestRunnerTenantId = process.env.NOTEBOOKS_TEST_RUNNER_TENANT_ID;
|
||||||
const notebooksTestRunnerClientId = process.env.NOTEBOOKS_TEST_RUNNER_CLIENT_ID;
|
const notebooksTestRunnerClientId = process.env.NOTEBOOKS_TEST_RUNNER_CLIENT_ID;
|
||||||
const notebooksTestRunnerClientSecret = process.env.NOTEBOOKS_TEST_RUNNER_CLIENT_SECRET;
|
const notebooksTestRunnerClientSecret = process.env.NOTEBOOKS_TEST_RUNNER_CLIENT_SECRET;
|
||||||
const portalRunnerDatabaseAccount = process.env.PORTAL_RUNNER_DATABASE_ACCOUNT;
|
|
||||||
const portalRunnerDatabaseAccountKey = process.env.PORTAL_RUNNER_DATABASE_ACCOUNT_KEY;
|
|
||||||
const portalRunnerSubscripton = process.env.PORTAL_RUNNER_SUBSCRIPTION;
|
const portalRunnerSubscripton = process.env.PORTAL_RUNNER_SUBSCRIPTION;
|
||||||
const portalRunnerResourceGroup = process.env.PORTAL_RUNNER_RESOURCE_GROUP;
|
const portalRunnerResourceGroup = process.env.PORTAL_RUNNER_RESOURCE_GROUP;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user