Skip to content

Commit 571082d

Browse files
committed
chore: add test
1 parent 4d71e00 commit 571082d

File tree

3 files changed

+68
-4
lines changed

3 files changed

+68
-4
lines changed

cli/src/commands/auth/commands/login.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import pc from 'picocolors';
44
import jwtDecode from 'jwt-decode';
55
import inquirer from 'inquirer';
66
import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
7+
import ora from 'ora';
78
import { BaseCommandOptions } from '../../../core/types/types.js';
89
import { DecodedAccessToken, performDeviceAuth, startPollingForAccessToken } from '../utils.js';
910
import { updateConfigFile } from '../../../utils.js';
@@ -50,6 +51,8 @@ export default (opts: BaseCommandOptions) => {
5051
const organizationSlugs = new Set(decoded.groups.map((group) => group.split('/')[1]));
5152

5253
const organizationSlugByDisplayKey = new Map<string, string>();
54+
const organizationKeys: Array<string> = [];
55+
const spinner = ora('Fetching organizations...').start();
5356
for (const organizationSlug of organizationSlugs) {
5457
const headers = getBaseHeaders();
5558
const response = await opts.client.platform.getOrganizationBySlug(
@@ -65,16 +68,22 @@ export default (opts: BaseCommandOptions) => {
6568
},
6669
);
6770
if (!response.response || response.response.code !== EnumStatusCode.OK || !response.organization) {
71+
organizationKeys.push(organizationSlug);
6872
organizationSlugByDisplayKey.set(organizationSlug, organizationSlug);
6973
continue;
7074
}
71-
organizationSlugByDisplayKey.set(`${response.organization.name} (${organizationSlug})`, organizationSlug);
75+
const organizationKey = `${response.organization.name} (${organizationSlug})`;
76+
organizationKeys.push(organizationKey);
77+
organizationSlugByDisplayKey.set(organizationKey, organizationSlug);
7278
}
79+
80+
spinner.stop();
81+
7382
const selectedOrganization = await inquirer.prompt({
7483
name: 'organizationKey',
7584
type: 'list',
7685
message: 'Select Organization:',
77-
choices: [...organizationSlugByDisplayKey.keys()],
86+
choices: organizationKeys,
7887
});
7988

8089
const organizationSlug = organizationSlugByDisplayKey.get(selectedOrganization.organizationKey);
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { randomUUID } from 'node:crypto';
2+
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, test, vi } from 'vitest';
3+
import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
4+
import { SetupTest } from '../test-util.js';
5+
import { afterAllSetup, beforeAllSetup } from '../../src/core/test-util.js';
6+
import { ClickHouseClient } from '../../src/core/clickhouse/index.js';
7+
8+
describe('router compatibility-version list tests', () => {
9+
let chClient: ClickHouseClient;
10+
let dbname = '';
11+
12+
vi.mock('../src/core/clickhouse/index.js', () => {
13+
const ClickHouseClient = vi.fn();
14+
ClickHouseClient.prototype.queryPromise = vi.fn();
15+
16+
return { ClickHouseClient };
17+
});
18+
19+
20+
beforeAll(async () => {
21+
dbname = await beforeAllSetup();
22+
});
23+
24+
beforeEach(() => {
25+
chClient = new ClickHouseClient();
26+
});
27+
28+
afterEach(() => {
29+
vi.clearAllMocks();
30+
});
31+
32+
afterAll(async () => {
33+
await afterAllSetup(dbname);
34+
});
35+
36+
test('that a list of supported router compatibility versions is returned', async () => {
37+
const organizationId = randomUUID();
38+
const organizationSlug = `slug-${organizationId}`;
39+
const organizationName = 'company-a';
40+
const { client, server, } = await SetupTest({ dbname, chClient, organizationId, });
41+
const response = await client.getOrganizationBySlug({
42+
slug: organizationSlug,
43+
});
44+
expect(response.response).toBeDefined();
45+
expect(response.response!.code).toBe(EnumStatusCode.OK);
46+
const organization = response.organization;
47+
expect(organization).toBeDefined();
48+
expect(organization!.slug).toBe(organizationSlug);
49+
expect(organization!.name).toBe(organizationName);
50+
51+
await server.close();
52+
});
53+
});

controlplane/test/test-util.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { randomUUID } from 'node:crypto';
1+
import { randomUUID, UUID } from 'node:crypto';
22
import { join, resolve } from 'node:path';
33
import fs from 'node:fs';
44
import { createPromiseClient, PromiseClient } from '@connectrpc/connect';
@@ -57,6 +57,7 @@ export const SetupTest = async function ({
5757
enableMultiUsers,
5858
createScimKey,
5959
setupBilling,
60+
organizationId,
6061
}: {
6162
dbname: string;
6263
chClient?: ClickHouseClient;
@@ -66,6 +67,7 @@ export const SetupTest = async function ({
6667
setupBilling?: {
6768
plan: 'developer@1' | 'launch@1' | 'scale@1' | 'enterprise';
6869
};
70+
organizationId?: UUID;
6971
}) {
7072
const log = pino();
7173
const databaseConnectionUrl = `postgresql://postgres:changeme@localhost:5432/${dbname}`;
@@ -79,7 +81,7 @@ export const SetupTest = async function ({
7981
runMigration: true,
8082
});
8183

82-
const companyAOrganizationId = randomUUID();
84+
const companyAOrganizationId = organizationId || randomUUID();
8385
const aliceContext = createTestContext('company-a', companyAOrganizationId);
8486

8587
const users: TestAuthenticatorOptions = {

0 commit comments

Comments
 (0)