Skip to content

Commit f96648d

Browse files
mariasergeenkoGnaneshKunal
authored andcommitted
add test for remove certificates
1 parent c4469d6 commit f96648d

File tree

3 files changed

+86
-1
lines changed

3 files changed

+86
-1
lines changed

tests/e2e/helpers/constants.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,8 @@ export enum RdiPopoverOptions {
121121
Pipeline = 'empty',
122122
}
123123

124+
export enum TlsCertificates {
125+
CA = 'ca',
126+
Client = 'client',
127+
}
128+

tests/e2e/pageObjects/components/myRedisDatabase/add-redis-database.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { t, Selector } from 'testcafe';
1+
import { Selector, t } from 'testcafe';
2+
import { TlsCertificates } from '../../../helpers/constants';
23

34
export class AddRedisDatabase {
45
//-------------------------------------------------------------------------------------------
@@ -29,6 +30,7 @@ export class AddRedisDatabase {
2930
cancelButton = Selector('[data-testid=btn-cancel]');
3031
showPasswordBtn = Selector('[aria-label^="Show password"]');
3132
testConnectionBtn = Selector('[data-testid=btn-test-connection]');
33+
3234
// TEXT INPUTS (also referred to as 'Text fields')
3335
disabledDatabaseInfo = Selector('[class=euiListGroupItem__label]');
3436
hostInput = Selector('[data-testid=host]');
@@ -57,9 +59,12 @@ export class AddRedisDatabase {
5759
selectCompressor = Selector('[data-testid=select-compressor]', { timeout: 1000 });
5860
useCloudAccount = Selector('[data-testid=use-cloud-account-accordion]');
5961
useCloudKeys = Selector('[data-testid=use-cloud-keys-accordion]');
62+
certificateDropdownList = Selector('div.euiSuperSelect__listbox div');
63+
6064
// CHECKBOXES
6165
useSSHCheckbox = Selector('[data-testid=use-ssh]~div', { timeout: 500 });
6266
dataCompressorCheckbox = Selector('[data-testid=showCompressor] ~ label');
67+
requiresTlsClientCheckbox = Selector('[data-testid=tls-required-checkbox]');
6368
// RADIO BUTTONS
6469
sshPasswordRadioBtn = Selector('#password~div', { timeout: 500 });
6570
sshPrivateKeyRadioBtn = Selector('#privateKey~div', { timeout: 500 });
@@ -253,6 +258,29 @@ export class AddRedisDatabase {
253258
await t.click(this.selectCompressor);
254259
await t.click(Selector(`[id="${compressor}"]`));
255260
}
261+
262+
/**
263+
* Remove certificate
264+
* @param certificate - certificate
265+
* @param name - name of the certificate
266+
*/
267+
async removeCertificateButton(certificate: TlsCertificates, name: string): Promise<void> {
268+
269+
const row = Selector('button')
270+
.find('div')
271+
.withText(name);
272+
const removeButton = `[data-testid^=delete-${certificate}-cert]`;
273+
const removeButtonFooter = Selector('[class^=_popoverFooter]');
274+
275+
if(certificate === TlsCertificates.CA){
276+
await t.click(this.caCertField);
277+
}
278+
else {
279+
await t.click(this.clientCertField);
280+
}
281+
await t.click(row.find(removeButton));
282+
await t.click(removeButtonFooter.find(removeButton));
283+
}
256284
}
257285

258286
/**
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { rte, TlsCertificates } from '../../../../helpers/constants';
2+
import { BrowserPage, MyRedisDatabasePage } from '../../../../pageObjects';
3+
import { commonUrl, ossStandaloneConfig, ossStandaloneTlsConfig } from '../../../../helpers/conf';
4+
import { DatabaseHelper } from '../../../../helpers';
5+
import { DatabaseAPIRequests } from '../../../../helpers/api/api-database';
6+
7+
const browserPage = new BrowserPage();
8+
const myRedisDatabasePage = new MyRedisDatabasePage();
9+
const databaseHelper = new DatabaseHelper();
10+
const databaseAPIRequests = new DatabaseAPIRequests();
11+
12+
fixture `tls certificates`
13+
.meta({ type: 'regression', rte: rte.none })
14+
.page(commonUrl)
15+
.beforeEach(async() => {
16+
await databaseAPIRequests.addNewStandaloneDatabaseApi(ossStandaloneConfig);
17+
await myRedisDatabasePage.reloadPage();
18+
await databaseHelper.acceptLicenseTermsAndAddDatabaseApi(ossStandaloneTlsConfig);
19+
20+
})
21+
.afterEach(async() => {
22+
// Delete database
23+
await databaseHelper.deleteDatabase(ossStandaloneTlsConfig.databaseName);
24+
await databaseHelper.deleteDatabase(ossStandaloneConfig.databaseName);
25+
});
26+
test('Verify that user can remove added certificates', async t => {
27+
await t.click(browserPage.NavigationPanel.myRedisDBButton);
28+
await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName);
29+
await myRedisDatabasePage.AddRedisDatabase.removeCertificateButton(TlsCertificates.CA, 'ca');
30+
await myRedisDatabasePage.reloadPage();
31+
// wait for dbs are displayed
32+
await t.expect(myRedisDatabasePage.dbNameList.count).gt(0);
33+
await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName);
34+
//verify that ca certificate is deleted
35+
await t.expect(myRedisDatabasePage.AddRedisDatabase.caCertField.textContent).contains('No CA Certificate', 'CA certificate was not deleted');
36+
await t.click(myRedisDatabasePage.AddRedisDatabase.caCertField);
37+
await t.expect(myRedisDatabasePage.AddRedisDatabase.certificateDropdownList.textContent).contains('ca', 'CA certificate was not deleted');
38+
39+
//verify that client certificate is deleted
40+
await myRedisDatabasePage.AddRedisDatabase.removeCertificateButton(TlsCertificates.Client, 'client');
41+
await myRedisDatabasePage.reloadPage();
42+
// wait for dbs are displayed
43+
await t.expect(myRedisDatabasePage.dbNameList.count).gt(0);
44+
await myRedisDatabasePage.clickOnEditDBByName(ossStandaloneTlsConfig.databaseName);
45+
await t.expect(myRedisDatabasePage.AddRedisDatabase.requiresTlsClientCheckbox.checked).notOk('the certificate was not removed');
46+
47+
await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName!);
48+
49+
await t.click(browserPage.NavigationPanel.myRedisDBButton);
50+
await myRedisDatabasePage.clickOnDBByName(ossStandaloneTlsConfig.databaseName);
51+
await t.expect(browserPage.Toast.toastError.textContent).contains('CA or Client certificate', 'user can connect to db without certificates');
52+
});

0 commit comments

Comments
 (0)