test: adapt apps tests to new logic

This commit is contained in:
Jakub P.
2024-12-16 09:15:44 +01:00
committed by Ali BARIN
parent c78646ed8e
commit a8ed13da33
5 changed files with 319 additions and 116 deletions

View File

@@ -9,12 +9,18 @@ export class AdminApplicationAuthClientsPage extends AuthenticatedPage {
constructor(page) {
super(page);
this.authClientsTab = this.page.getByText('AUTH CLIENTS');
this.authClientsTab = this.page.getByTestId('auth-clients-tab');
this.saveButton = this.page.getByTestId('submitButton');
this.successSnackbar = this.page.getByTestId('snackbar-save-admin-apps-settings-success');
this.successSnackbar = this.page.getByTestId(
'snackbar-save-admin-apps-settings-success'
);
this.createFirstAuthClientButton = this.page.getByTestId('no-results');
this.createAuthClientButton = this.page.getByTestId('create-auth-client-button');
this.submitAuthClientFormButton = this.page.getByTestId('submit-auth-client-form');
this.createAuthClientButton = this.page.getByTestId(
'create-auth-client-button'
);
this.submitAuthClientFormButton = this.page.getByTestId(
'submit-auth-client-form'
);
this.authClientEntry = this.page.getByTestId('auth-client');
}
@@ -35,6 +41,8 @@ export class AdminApplicationAuthClientsPage extends AuthenticatedPage {
}
async authClientShouldBeVisible(authClientName) {
await expect(this.authClientEntry.filter({ hasText: authClientName })).toBeVisible();
await expect(
this.authClientEntry.filter({ hasText: authClientName })
).toBeVisible();
}
}

View File

@@ -8,56 +8,45 @@ export class AdminApplicationSettingsPage extends AuthenticatedPage {
constructor(page) {
super(page);
this.allowCustomConnectionsSwitch = this.page.locator(
'[name="customConnectionAllowed"]'
this.useOnlyPredefinedAuthClients = page.locator(
'[name="useOnlyPredefinedAuthClients"]'
);
this.allowSharedConnectionsSwitch = this.page.locator('[name="shared"]');
this.disableConnectionsSwitch = this.page.locator('[name="disabled"]');
this.saveButton = this.page.getByTestId('submit-button');
this.successSnackbar = this.page.getByTestId(
this.disableConnectionsSwitch = page.locator('[name="disabled"]');
this.saveButton = page.getByTestId('submit-button');
this.successSnackbar = page.getByTestId(
'snackbar-save-admin-apps-settings-success'
);
}
async allowCustomConnections() {
await expect(this.disableConnectionsSwitch).not.toBeChecked();
await this.allowCustomConnectionsSwitch.check();
await this.saveButton.click();
async allowUseOnlyPredefinedAuthClients() {
await expect(this.useOnlyPredefinedAuthClients).not.toBeChecked();
await this.useOnlyPredefinedAuthClients.check();
}
async allowSharedConnections() {
await expect(this.disableConnectionsSwitch).not.toBeChecked();
await this.allowSharedConnectionsSwitch.check();
await this.saveButton.click();
async disallowUseOnlyPredefinedAuthClients() {
await expect(this.useOnlyPredefinedAuthClients).toBeChecked();
await this.useOnlyPredefinedAuthClients.uncheck();
await expect(this.useOnlyPredefinedAuthClients).not.toBeChecked();
}
async disallowConnections() {
await expect(this.disableConnectionsSwitch).not.toBeChecked();
await this.disableConnectionsSwitch.check();
await this.saveButton.click();
}
async disallowCustomConnections() {
await expect(this.disableConnectionsSwitch).toBeChecked();
await this.allowCustomConnectionsSwitch.uncheck();
await this.saveButton.click();
}
async disallowSharedConnections() {
await expect(this.disableConnectionsSwitch).toBeChecked();
await this.allowSharedConnectionsSwitch.uncheck();
await this.saveButton.click();
}
async allowConnections() {
await expect(this.disableConnectionsSwitch).toBeChecked();
await this.disableConnectionsSwitch.uncheck();
}
async saveSettings() {
await this.saveButton.click();
}
async expectSuccessSnackbarToBeVisible() {
await expect(this.successSnackbar).toHaveCount(1);
await this.successSnackbar.click();
await expect(this.successSnackbar).toHaveCount(0);
const snackbars = await this.successSnackbar.all();
for (const snackbar of snackbars) {
await expect(snackbar).toBeVisible();
}
}
}

View File

@@ -0,0 +1,32 @@
const { expect } = require('../fixtures/index');
const { pgPool } = require('../fixtures/postgres-config');
export const insertAppConnection = async (appName) => {
const queryUser = {
text: 'SELECT * FROM users WHERE email = $1',
values: [process.env.LOGIN_EMAIL],
};
try {
const queryUserResult = await pgPool.query(queryUser);
expect(queryUserResult.rowCount).toEqual(1);
const createConnection = {
text: 'INSERT INTO connections (key, data, user_id, verified, draft) VALUES ($1, $2, $3, $4, $5)',
values: [
appName,
'U2FsdGVkX1+cAtdHwLiuRL4DaK/T1aljeeKyPMmtWK0AmAIsKhYwQiuyQCYJO3mdZ31z73hqF2Y+yj2Kn2/IIpLRqCxB2sC0rCDCZyolzOZ290YcBXSzYRzRUxhoOcZEtwYDKsy8AHygKK/tkj9uv9k6wOe1LjipNik4VmRhKjEYizzjLrJpbeU1oY+qW0GBpPYomFTeNf+MejSSmsUYyYJ8+E/4GeEfaonvsTSwMT7AId98Lck6Vy4wrfgpm7sZZ8xU15/HqXZNc8UCo2iTdw45xj/Oov9+brX4WUASFPG8aYrK8dl/EdaOvr89P8uIofbSNZ25GjJvVF5ymarrPkTZ7djjJXchzpwBY+7GTJfs3funR/vIk0Hq95jgOFFP1liZyqTXSa49ojG3hzojRQ==',
queryUserResult.rows[0].id,
'true',
'false',
],
};
const createConnectionResult = await pgPool.query(createConnection);
expect(createConnectionResult.rowCount).toBe(1);
expect(createConnectionResult.command).toBe('INSERT');
} catch (err) {
console.error(err.message);
throw err;
}
};

View File

@@ -1,20 +1,37 @@
const { test, expect } = require('../../fixtures/index');
const { pgPool } = require('../../fixtures/postgres-config');
const { insertAppConnection } = require('../../helpers/db-helpers');
test.describe('Admin Applications', () => {
test.beforeAll(async () => {
const deleteAppAuthClients = {
text: 'DELETE FROM app_auth_clients WHERE app_key in ($1, $2, $3, $4, $5)',
values: ['carbone', 'spotify', 'deepl', 'mailchimp', 'reddit']
text: 'DELETE FROM app_auth_clients WHERE app_key in ($1, $2, $3, $4, $5, $6)',
values: [
'carbone',
'spotify',
'clickup',
'mailchimp',
'reddit',
'google-drive',
],
};
const deleteAppConfigs = {
text: 'DELETE FROM app_configs WHERE key in ($1, $2, $3, $4, $5)',
values: ['carbone', 'spotify', 'deepl', 'mailchimp', 'reddit']
text: 'DELETE FROM app_configs WHERE key in ($1, $2, $3, $4, $5, $6)',
values: [
'carbone',
'spotify',
'clickup',
'mailchimp',
'reddit',
'google-drive',
],
};
try {
const deleteAppAuthClientsResult = await pgPool.query(deleteAppAuthClients);
const deleteAppAuthClientsResult = await pgPool.query(
deleteAppAuthClients
);
expect(deleteAppAuthClientsResult.command).toBe('DELETE');
const deleteAppConfigsResult = await pgPool.query(deleteAppConfigs);
expect(deleteAppConfigsResult.command).toBe('DELETE');
@@ -31,39 +48,59 @@ test.describe('Admin Applications', () => {
test('Admin should be able to toggle Application settings', async ({
adminApplicationsPage,
adminApplicationSettingsPage,
page
page,
}) => {
await adminApplicationsPage.openApplication('Carbone');
await expect(page.url()).toContain('/admin-settings/apps/carbone/settings');
await adminApplicationSettingsPage.allowCustomConnections();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
await adminApplicationSettingsPage.allowSharedConnections();
await adminApplicationSettingsPage.allowUseOnlyPredefinedAuthClients();
await adminApplicationSettingsPage.saveSettings();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
await adminApplicationSettingsPage.disallowConnections();
await adminApplicationSettingsPage.saveSettings();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
await page.reload();
await adminApplicationSettingsPage.disallowCustomConnections();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
await adminApplicationSettingsPage.disallowSharedConnections();
await adminApplicationSettingsPage.disallowUseOnlyPredefinedAuthClients();
await adminApplicationSettingsPage.saveSettings();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
await adminApplicationSettingsPage.allowConnections();
await adminApplicationSettingsPage.saveSettings();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
});
test('should allow only custom connections', async ({
adminApplicationsPage,
adminApplicationSettingsPage,
adminApplicationAuthClientsPage,
flowEditorPage,
page
page,
}) => {
await adminApplicationsPage.openApplication('Spotify');
await expect(page.url()).toContain('/admin-settings/apps/spotify/settings');
await insertAppConnection('google-drive');
await adminApplicationSettingsPage.allowCustomConnections();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
// TODO use openApplication method after fix
// await adminApplicationsPage.openApplication('Google-Drive');
await adminApplicationsPage.searchInput.fill('Google-Drive');
await adminApplicationsPage.appRow
.locator(page.getByText('Google Drive'))
.click();
await expect(page.url()).toContain(
'/admin-settings/apps/google-drive/settings'
);
await expect(
adminApplicationSettingsPage.useOnlyPredefinedAuthClients
).not.toBeChecked();
await expect(
adminApplicationSettingsPage.disableConnectionsSwitch
).not.toBeChecked();
await adminApplicationAuthClientsPage.openAuthClientsTab();
await expect(
adminApplicationAuthClientsPage.createFirstAuthClientButton
).toHaveCount(1);
await page.goto('/');
await page.getByTestId('create-flow-button').click();
@@ -72,42 +109,69 @@ test.describe('Admin Applications', () => {
);
await expect(flowEditorPage.flowStep).toHaveCount(2);
const triggerStep = flowEditorPage.flowStep.last();
await triggerStep.click();
await flowEditorPage.chooseAppAndEvent("Spotify", "Create Playlist");
await flowEditorPage.chooseAppAndEvent(
'Google Drive',
'New files in folder'
);
await flowEditorPage.connectionAutocomplete.click();
const newConnectionOption = page.getByRole('option').filter({ hasText: 'Add new connection' });
const newSharedConnectionOption = page.getByRole('option').filter({ hasText: 'Add new shared connection' });
const newConnectionOption = page
.getByRole('option')
.filter({ hasText: 'Add new connection' });
const newSharedConnectionOption = page
.getByRole('option')
.filter({ hasText: 'Add new connection with auth client' });
const existingConnection = page
.getByRole('option')
.filter({ hasText: 'Unnamed' });
await expect(await existingConnection.count()).toBeGreaterThan(0);
await expect(newConnectionOption).toBeEnabled();
await expect(newConnectionOption).toHaveCount(1);
await expect(newSharedConnectionOption).toHaveCount(0);
});
test('should allow only shared connections', async ({
test('should allow only predefined connections and existing custom', async ({
adminApplicationsPage,
adminApplicationSettingsPage,
adminApplicationAuthClientsPage,
flowEditorPage,
page
page,
}) => {
await adminApplicationsPage.openApplication('Reddit');
await expect(page.url()).toContain('/admin-settings/apps/reddit/settings');
await insertAppConnection('spotify');
await adminApplicationSettingsPage.allowSharedConnections();
await adminApplicationsPage.openApplication('Spotify');
await expect(page.url()).toContain('/admin-settings/apps/spotify/settings');
await expect(
adminApplicationSettingsPage.useOnlyPredefinedAuthClients
).not.toBeChecked();
await expect(
adminApplicationSettingsPage.disableConnectionsSwitch
).not.toBeChecked();
await adminApplicationSettingsPage.allowUseOnlyPredefinedAuthClients();
await adminApplicationSettingsPage.saveSettings();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
await adminApplicationAuthClientsPage.openAuthClientsTab();
await adminApplicationAuthClientsPage.openFirstAuthClientCreateForm();
const authClientForm = page.getByTestId("auth-client-form");
const authClientForm = page.getByTestId('auth-client-form');
await authClientForm.locator(page.getByTestId('switch')).check();
await authClientForm.locator(page.locator('[name="name"]')).fill('redditAuthClient');
await authClientForm.locator(page.locator('[name="clientId"]')).fill('redditClientId');
await authClientForm.locator(page.locator('[name="clientSecret"]')).fill('redditClientSecret');
await authClientForm
.locator(page.locator('[name="name"]'))
.fill('spotifyAuthClient');
await authClientForm
.locator(page.locator('[name="clientId"]'))
.fill('spotifyClientId');
await authClientForm
.locator(page.locator('[name="clientSecret"]'))
.fill('spotifyClientSecret');
await adminApplicationAuthClientsPage.submitAuthClientForm();
await adminApplicationAuthClientsPage.authClientShouldBeVisible('redditAuthClient');
await adminApplicationAuthClientsPage.authClientShouldBeVisible(
'spotifyAuthClient'
);
await page.goto('/');
await page.getByTestId('create-flow-button').click();
@@ -119,28 +183,61 @@ test.describe('Admin Applications', () => {
const triggerStep = flowEditorPage.flowStep.last();
await triggerStep.click();
await flowEditorPage.chooseAppAndEvent("Reddit", "Create link post");
await flowEditorPage.chooseAppAndEvent('Spotify', 'Create playlist');
await flowEditorPage.connectionAutocomplete.click();
const newConnectionOption = page.getByRole('option').filter({ hasText: 'Add new connection' });
const newSharedConnectionOption = page.getByRole('option').filter({ hasText: 'Add new shared connection' });
const newConnectionOption = page
.getByRole('option')
.filter({ hasText: 'Add new connection' });
const newSharedConnectionOption = page
.getByRole('option')
.filter({ hasText: 'Add connection with auth client' });
const existingConnection = page
.getByRole('option')
.filter({ hasText: 'Unnamed' });
await expect(await existingConnection.count()).toBeGreaterThan(0);
await expect(newConnectionOption).toHaveCount(0);
await expect(newSharedConnectionOption).toBeEnabled();
await expect(newSharedConnectionOption).toHaveCount(1);
});
test('should not allow any connections', async ({
test('should allow all connections', async ({
adminApplicationsPage,
adminApplicationSettingsPage,
adminApplicationAuthClientsPage,
flowEditorPage,
page
page,
}) => {
await adminApplicationsPage.openApplication('DeepL');
await expect(page.url()).toContain('/admin-settings/apps/deepl/settings');
await insertAppConnection('reddit');
await adminApplicationSettingsPage.disallowConnections();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
await adminApplicationsPage.openApplication('Reddit');
await expect(page.url()).toContain('/admin-settings/apps/reddit/settings');
await expect(
adminApplicationSettingsPage.useOnlyPredefinedAuthClients
).not.toBeChecked();
await expect(
adminApplicationSettingsPage.disableConnectionsSwitch
).not.toBeChecked();
await adminApplicationAuthClientsPage.openAuthClientsTab();
await adminApplicationAuthClientsPage.openFirstAuthClientCreateForm();
const authClientForm = page.getByTestId('auth-client-form');
await authClientForm.locator(page.getByTestId('switch')).check();
await authClientForm
.locator(page.locator('[name="name"]'))
.fill('redditAuthClient');
await authClientForm
.locator(page.locator('[name="clientId"]'))
.fill('redditClientId');
await authClientForm
.locator(page.locator('[name="clientSecret"]'))
.fill('redditClientSecret');
await adminApplicationAuthClientsPage.submitAuthClientForm();
await adminApplicationAuthClientsPage.authClientShouldBeVisible(
'redditAuthClient'
);
await page.goto('/');
await page.getByTestId('create-flow-button').click();
@@ -152,58 +249,126 @@ test.describe('Admin Applications', () => {
const triggerStep = flowEditorPage.flowStep.last();
await triggerStep.click();
await flowEditorPage.chooseAppAndEvent("DeepL", "Translate text");
await flowEditorPage.chooseAppAndEvent('Reddit', 'Create link post');
await flowEditorPage.connectionAutocomplete.click();
const newConnectionOption = page.getByRole('option').filter({ hasText: 'Add new connection' });
const newSharedConnectionOption = page.getByRole('option').filter({ hasText: 'Add new shared connection' });
const noConnectionsOption = page.locator('.MuiAutocomplete-noOptions').filter({ hasText: 'No options' });
const newConnectionOption = page
.getByRole('option')
.filter({ hasText: 'Add new connection' });
const newSharedConnectionOption = page
.getByRole('option')
.filter({ hasText: 'Add connection with auth client' });
const existingConnection = page
.getByRole('option')
.filter({ hasText: 'Unnamed' });
await expect(noConnectionsOption).toHaveCount(1);
await expect(await existingConnection.count()).toBeGreaterThan(0);
await expect(newConnectionOption).toHaveCount(1);
await expect(newSharedConnectionOption).toBeEnabled();
await expect(newSharedConnectionOption).toHaveCount(1);
});
test('should not allow new connections but existing custom', async ({
adminApplicationsPage,
adminApplicationSettingsPage,
adminApplicationAuthClientsPage,
flowEditorPage,
page,
}) => {
await insertAppConnection('clickup');
await adminApplicationsPage.openApplication('ClickUp');
await expect(page.url()).toContain('/admin-settings/apps/clickup/settings');
await adminApplicationSettingsPage.disallowConnections();
await adminApplicationSettingsPage.saveSettings();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
await adminApplicationAuthClientsPage.openAuthClientsTab();
await adminApplicationAuthClientsPage.openFirstAuthClientCreateForm();
const authClientForm = page.getByTestId('auth-client-form');
await authClientForm.locator(page.getByTestId('switch')).check();
await authClientForm
.locator(page.locator('[name="name"]'))
.fill('clickupAuthClient');
await authClientForm
.locator(page.locator('[name="clientId"]'))
.fill('clickupClientId');
await authClientForm
.locator(page.locator('[name="clientSecret"]'))
.fill('clickupClientSecret');
await adminApplicationAuthClientsPage.submitAuthClientForm();
await adminApplicationAuthClientsPage.authClientShouldBeVisible(
'clickupAuthClient'
);
await page.goto('/');
await page.getByTestId('create-flow-button').click();
await page.waitForURL(
/\/editor\/[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}/
);
await expect(flowEditorPage.flowStep).toHaveCount(2);
const triggerStep = flowEditorPage.flowStep.last();
await triggerStep.click();
await flowEditorPage.chooseAppAndEvent('ClickUp', 'Create folder');
await flowEditorPage.connectionAutocomplete.click();
const newConnectionOption = page
.getByRole('option')
.filter({ hasText: 'Add new connection' });
const newSharedConnectionOption = page
.getByRole('option')
.filter({ hasText: 'Add connection with auth client' });
const existingConnection = page
.getByRole('option')
.filter({ hasText: 'Unnamed' });
await expect(await existingConnection.count()).toBeGreaterThan(0);
await expect(newConnectionOption).toHaveCount(0);
await expect(newSharedConnectionOption).toHaveCount(0);
});
test('should not allow new connections but only already created', async ({
test('should not allow new connections but existing custom even if predefined auth clients are enabled', async ({
adminApplicationsPage,
adminApplicationSettingsPage,
adminApplicationAuthClientsPage,
flowEditorPage,
page
page,
}) => {
const queryUser = {
text: 'SELECT * FROM users WHERE email = $1',
values: [process.env.LOGIN_EMAIL]
};
try {
const queryUserResult = await pgPool.query(queryUser);
expect(queryUserResult.rowCount).toEqual(1);
const createMailchimpConnection = {
text: 'INSERT INTO connections (key, data, user_id, verified, draft) VALUES ($1, $2, $3, $4, $5)',
values: [
'mailchimp',
"U2FsdGVkX1+cAtdHwLiuRL4DaK/T1aljeeKyPMmtWK0AmAIsKhYwQiuyQCYJO3mdZ31z73hqF2Y+yj2Kn2/IIpLRqCxB2sC0rCDCZyolzOZ290YcBXSzYRzRUxhoOcZEtwYDKsy8AHygKK/tkj9uv9k6wOe1LjipNik4VmRhKjEYizzjLrJpbeU1oY+qW0GBpPYomFTeNf+MejSSmsUYyYJ8+E/4GeEfaonvsTSwMT7AId98Lck6Vy4wrfgpm7sZZ8xU15/HqXZNc8UCo2iTdw45xj/Oov9+brX4WUASFPG8aYrK8dl/EdaOvr89P8uIofbSNZ25GjJvVF5ymarrPkTZ7djjJXchzpwBY+7GTJfs3funR/vIk0Hq95jgOFFP1liZyqTXSa49ojG3hzojRQ==",
queryUserResult.rows[0].id,
'true',
'false'
],
};
const createMailchimpConnectionResult = await pgPool.query(createMailchimpConnection);
expect(createMailchimpConnectionResult.rowCount).toBe(1);
expect(createMailchimpConnectionResult.command).toBe('INSERT');
} catch (err) {
console.error(err.message);
throw err;
}
await insertAppConnection('mailchimp');
await adminApplicationsPage.openApplication('Mailchimp');
await expect(page.url()).toContain('/admin-settings/apps/mailchimp/settings');
await expect(page.url()).toContain(
'/admin-settings/apps/mailchimp/settings'
);
await adminApplicationSettingsPage.allowUseOnlyPredefinedAuthClients();
await adminApplicationSettingsPage.disallowConnections();
await adminApplicationSettingsPage.saveSettings();
await adminApplicationSettingsPage.expectSuccessSnackbarToBeVisible();
await adminApplicationAuthClientsPage.openAuthClientsTab();
await adminApplicationAuthClientsPage.openFirstAuthClientCreateForm();
const authClientForm = page.getByTestId('auth-client-form');
await authClientForm.locator(page.getByTestId('switch')).check();
await authClientForm
.locator(page.locator('[name="name"]'))
.fill('mailchimpAuthClient');
await authClientForm
.locator(page.locator('[name="clientId"]'))
.fill('mailchimpClientId');
await authClientForm
.locator(page.locator('[name="clientSecret"]'))
.fill('mailchimpClientSecret');
await adminApplicationAuthClientsPage.submitAuthClientForm();
await adminApplicationAuthClientsPage.authClientShouldBeVisible(
'mailchimpAuthClient'
);
await page.goto('/');
await page.getByTestId('create-flow-button').click();
await page.waitForURL(
@@ -214,14 +379,22 @@ test.describe('Admin Applications', () => {
const triggerStep = flowEditorPage.flowStep.last();
await triggerStep.click();
await flowEditorPage.chooseAppAndEvent("Mailchimp", "Create campaign");
await flowEditorPage.chooseAppAndEvent('Mailchimp', 'Create campaign');
await flowEditorPage.connectionAutocomplete.click();
await expect(page.getByRole('option').first()).toHaveText('Unnamed');
const existingConnection = page.getByRole('option').filter({ hasText: 'Unnamed' });
const newConnectionOption = page.getByRole('option').filter({ hasText: 'Add new connection' });
const newSharedConnectionOption = page.getByRole('option').filter({ hasText: 'Add new shared connection' });
const noConnectionsOption = page.locator('.MuiAutocomplete-noOptions').filter({ hasText: 'No options' });
const existingConnection = page
.getByRole('option')
.filter({ hasText: 'Unnamed' });
const newConnectionOption = page
.getByRole('option')
.filter({ hasText: 'Add new connection' });
const newSharedConnectionOption = page
.getByRole('option')
.filter({ hasText: 'Add new shared connection' });
const noConnectionsOption = page
.locator('.MuiAutocomplete-noOptions')
.filter({ hasText: 'No options' });
await expect(await existingConnection.count()).toBeGreaterThan(0);
await expect(noConnectionsOption).toHaveCount(0);

View File

@@ -87,6 +87,7 @@ export default function AdminApplication() {
component={Link}
/>
<Tab
data-test="auth-clients-tab"
label={formatMessage('adminApps.authClients')}
to={URLS.ADMIN_APP_AUTH_CLIENTS(appKey)}
value={URLS.ADMIN_APP_AUTH_CLIENTS_PATTERN}