Skip to content

Commit 26ed257

Browse files
committed
db import test enchancements
1 parent d96a2dc commit 26ed257

File tree

1 file changed

+65
-55
lines changed

1 file changed

+65
-55
lines changed

tests/e2e/tests/critical-path/database/import-databases.e2e.ts

Lines changed: 65 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,78 @@
11
import * as path from 'path';
2-
import { ClientFunction } from 'testcafe';
32
import { rte } from '../../../helpers/constants';
43
import { AddRedisDatabasePage, BrowserPage, MyRedisDatabasePage } from '../../../pageObjects';
54
import { commonUrl } from '../../../helpers/conf';
65
import { acceptLicenseTerms, clickOnEditDatabaseByName } from '../../../helpers/database';
76
import { deleteStandaloneDatabasesByNamesApi } from '../../../helpers/api/api-database';
87
import { DatabasesActions } from '../../../common-actions/databases-actions';
8+
import { Common } from '../../../helpers/common';
99

1010
const browserPage = new BrowserPage();
1111
const myRedisDatabasePage = new MyRedisDatabasePage();
1212
const databasesActions = new DatabasesActions();
1313
const addRedisDatabasePage = new AddRedisDatabasePage();
14+
const common = new Common();
1415

15-
const racompassValidJson = 'racompass-valid.json';
16-
const racompassInvalidJson = 'racompass-invalid.json';
17-
const rdmFullJson = 'rdm-full.json';
18-
const rdmCertsJson = 'rdm-certificates.json';
19-
const ardmValidAno = 'ardm-valid.ano';
20-
const racompFullSSHJson = 'racompFullSSH.json';
21-
const racompassInvalidJsonPath = path.join('..', '..', '..', 'test-data', 'import-databases', racompassInvalidJson);
16+
const fileNames = {
17+
racompassValidJson: 'racompass-valid.json',
18+
racompassInvalidJson: 'racompass-invalid.json',
19+
rdmFullJson: 'rdm-full.json',
20+
rdmCertsJson: 'rdm-certificates.json',
21+
ardmValidAno: 'ardm-valid.ano',
22+
racompFullSSHJson: 'racompFullSSH.json'
23+
};
24+
const filePathes = {
25+
ardmValidPath: path.join('..', '..', '..', 'test-data', 'import-databases', fileNames.ardmValidAno),
26+
racompassInvalidJsonPath: path.join('..', '..', '..', 'test-data', 'import-databases', fileNames.racompassInvalidJson),
27+
rdmPath: path.join('..', '..', '..', 'test-data', 'import-databases', fileNames.rdmFullJson),
28+
rdmCertsPath: path.join('..', '..', '..', 'test-data', 'import-databases', fileNames.rdmCertsJson),
29+
racompassValidJson: path.join('..', '..', '..', 'test-data', 'import-databases', fileNames.racompassValidJson),
30+
racompassSshPath: path.join('..', '..', '..', 'test-data', 'import-databases', fileNames.racompFullSSHJson)
31+
}
32+
33+
const rdmListOfDB = databasesActions.parseDbJsonByPath(path.join('test-data', 'import-databases', fileNames.rdmFullJson));
34+
const rdmListOfCertsDB = databasesActions.parseDbJsonByPath(path.join('test-data', 'import-databases', fileNames.rdmCertsJson));
35+
const racompListOfSSHDB = databasesActions.parseDbJsonByPath(path.join('test-data', 'import-databases', fileNames.racompFullSSHJson));
36+
const rdmResults = {
37+
successNames: myRedisDatabasePage.getDatabaseNamesFromListByResult(rdmListOfDB, 'success'),
38+
partialNames: myRedisDatabasePage.getDatabaseNamesFromListByResult(rdmListOfDB, 'partial'),
39+
failedNames: myRedisDatabasePage.getDatabaseNamesFromListByResult(rdmListOfDB, 'failed')
40+
};
41+
const racompassSshResults = {
42+
successNames: myRedisDatabasePage.getDatabaseNamesFromListByResult(racompListOfSSHDB, 'success'),
43+
partialNames: myRedisDatabasePage.getDatabaseNamesFromListByResult(racompListOfSSHDB, 'partial'),
44+
failedNames: myRedisDatabasePage.getDatabaseNamesFromListByResult(racompListOfSSHDB, 'failed')
2245

23-
const rdmListOfDB = databasesActions.parseDbJsonByPath(path.join('test-data', 'import-databases', rdmFullJson));
24-
const rdmCertsListOfDB = databasesActions.parseDbJsonByPath(path.join('test-data', 'import-databases', rdmCertsJson));
25-
const rdmSuccessNames = myRedisDatabasePage.getDatabaseNamesFromListByResult(rdmListOfDB, 'success');
26-
const rdmPartialNames = myRedisDatabasePage.getDatabaseNamesFromListByResult(rdmListOfDB, 'partial');
27-
const rdmFailedNames = myRedisDatabasePage.getDatabaseNamesFromListByResult(rdmListOfDB, 'failed');
28-
const rdmCertsNames = myRedisDatabasePage.getDatabaseNamesFromListByResult(rdmCertsListOfDB, 'success');
46+
};
47+
const rdmCertsNames = myRedisDatabasePage.getDatabaseNamesFromListByResult(rdmListOfCertsDB, 'success');
2948

30-
const racompListOfSSHDB = databasesActions.parseDbJsonByPath(path.join('test-data', 'import-databases', racompFullSSHJson));
31-
const racompSSHSuccessNames = myRedisDatabasePage.getDatabaseNamesFromListByResult(racompListOfSSHDB, 'success');
32-
const racompSSHPartialNames = myRedisDatabasePage.getDatabaseNamesFromListByResult(racompListOfSSHDB, 'partial');
33-
const racompSSHFailedNames = myRedisDatabasePage.getDatabaseNamesFromListByResult(racompListOfSSHDB, 'failed');
34-
const importedSSHdbNames = [ ...racompSSHSuccessNames, ...racompSSHPartialNames ];
3549
const rdmData = {
3650
type: 'rdm',
37-
path: path.join('..', '..', '..', 'test-data', 'import-databases', rdmFullJson),
51+
path: filePathes.rdmPath,
52+
sshPath: filePathes.rdmCertsPath,
3853
connectionType: 'Cluster',
39-
successNumber: rdmSuccessNames.length,
40-
partialNumber: rdmPartialNames.length,
41-
failedNumber: rdmFailedNames.length,
42-
dbImportedNames: [...rdmSuccessNames, ...rdmPartialNames]
43-
};
44-
const rdmCertsData = {
45-
type: 'rdm',
46-
path: path.join('..', '..', '..', 'test-data', 'import-databases', rdmCertsJson)
54+
successNumber: rdmResults.successNames.length,
55+
partialNumber: rdmResults.partialNames.length,
56+
failedNumber: rdmResults.failedNames.length,
57+
dbImportedNames: [...rdmResults.successNames, ...rdmResults.partialNames]
4758
};
4859
const racompSSHData = {
4960
type: 'racompass',
50-
path: path.join('..', '..', '..', 'test-data', 'import-databases', racompFullSSHJson),
51-
successNumber: racompSSHSuccessNames.length,
52-
partialNumber: racompSSHPartialNames.length,
53-
failedNumber: racompSSHFailedNames.length
61+
path: filePathes.racompassSshPath,
62+
successNumber: racompassSshResults.successNames.length,
63+
partialNumber: racompassSshResults.partialNames .length,
64+
failedNumber: racompassSshResults.failedNames.length,
65+
importedSSHdbNames: [ ...racompassSshResults.successNames, ...racompassSshResults.partialNames ]
5466
};
5567
const dbData = [
5668
{
5769
type: 'racompass',
58-
path: path.join('..', '..', '..', 'test-data', 'import-databases', racompassValidJson),
70+
path: filePathes.racompassValidJson,
5971
dbNames: ['racompassCluster', 'racompassDbWithIndex:8100 [1]']
6072
},
6173
{
6274
type: 'ardm',
63-
path: path.join('..', '..', '..', 'test-data', 'import-databases', ardmValidAno),
75+
path: filePathes.ardmValidPath,
6476
dbNames: ['ardmNoName:12001', 'ardmWithPassAndUsername', 'ardmSentinel']
6577
}
6678
];
@@ -70,10 +82,8 @@ const databasesToDelete = [
7082
...dbData[1].dbNames
7183
];
7284
const findImportedRdmDbNameInList = async(dbName: string): Promise<string> => rdmData.dbImportedNames.find(item => item === dbName)!;
73-
// Returns the URL of the current web page
74-
const getPageUrl = ClientFunction(() => window.location.href);
7585

76-
fixture `Import databases`
86+
fixture.only `Import databases`
7787
.meta({ type: 'critical_path', rte: rte.none })
7888
.page(commonUrl)
7989
.beforeEach(async() => {
@@ -83,7 +93,7 @@ test('Connection import modal window', async t => {
8393
const tooltipText = 'Import Database Connections';
8494
const defaultText = 'Select or drag and drop a file';
8595
const parseFailedMsg = 'Failed to add database connections';
86-
const parseFailedMsg2 = `Unable to parse ${racompassInvalidJson}`;
96+
const parseFailedMsg2 = `Unable to parse ${fileNames.racompassInvalidJson}`;
8797

8898
// Verify that user can see the “Import Database Connections” tooltip
8999
await t.expect(myRedisDatabasePage.importDatabasesBtn.visible).ok('The import databases button not displayed');
@@ -98,7 +108,7 @@ test('Connection import modal window', async t => {
98108

99109
// Verify that user see the message when parse error appears
100110
await t
101-
.setFilesToUpload(myRedisDatabasePage.importDatabaseInput, [racompassInvalidJsonPath])
111+
.setFilesToUpload(myRedisDatabasePage.importDatabaseInput, [filePathes.racompassInvalidJsonPath])
102112
.click(myRedisDatabasePage.submitImportBtn)
103113
.expect(myRedisDatabasePage.failedImportMessage.exists).ok('Failed to add database message not displayed')
104114
.expect(myRedisDatabasePage.failedImportMessage.textContent).contains(parseFailedMsg)
@@ -108,7 +118,7 @@ test('Connection import modal window', async t => {
108118
await t.click(myRedisDatabasePage.closeDialogBtn);
109119
await t.click(myRedisDatabasePage.importDatabasesBtn);
110120
await t.setFilesToUpload(myRedisDatabasePage.importDatabaseInput, [rdmData.path]);
111-
await t.expect(myRedisDatabasePage.importDbDialog.textContent).contains(rdmFullJson, 'Filename not displayed in import input');
121+
await t.expect(myRedisDatabasePage.importDbDialog.textContent).contains(fileNames.rdmFullJson, 'Filename not displayed in import input');
112122
// Click on remove button
113123
await t.click(myRedisDatabasePage.removeImportedFileBtn);
114124
await t.expect(myRedisDatabasePage.importDbDialog.textContent).contains(defaultText, 'File not removed from import input');
@@ -184,48 +194,48 @@ test
184194
await clickOnEditDatabaseByName(dbData[1].dbNames[2]);
185195
await t.expect(addRedisDatabasePage.sentinelForm.textContent).contains('Sentinel', 'Sentinel connection type import incorrect');
186196
await myRedisDatabasePage.clickOnDBByName(dbData[1].dbNames[2]);
187-
await t.expect(getPageUrl()).contains('browser', 'Sentinel connection not opened');
197+
await common.checkURLContainsText('browser');
188198
});
189199
test
190200
.after(async() => {
191201
// Delete databases
192202
await deleteStandaloneDatabasesByNamesApi(rdmCertsNames);
193203
})('Certificates import with/without path', async t => {
194-
await databasesActions.importDatabase(rdmCertsData);
204+
await databasesActions.importDatabase({path: rdmData.sshPath});
195205
await t.click(myRedisDatabasePage.okDialogBtn);
196206

197207
// Verify that when user imports a certificate and the same certificate body already exists, the existing certificate (with its name) is applied
198-
await clickOnEditDatabaseByName(rdmCertsListOfDB[0].name);
199-
await t.expect(addRedisDatabasePage.caCertField.textContent).eql(rdmCertsListOfDB[0].caCert.name, 'CA certificate import incorrect');
200-
await t.expect(addRedisDatabasePage.clientCertField.textContent).eql(rdmCertsListOfDB[0].clientCert.name, 'Client certificate import incorrect');
208+
await clickOnEditDatabaseByName(rdmListOfCertsDB[0].name);
209+
await t.expect(addRedisDatabasePage.caCertField.textContent).eql(rdmListOfCertsDB[0].caCert.name, 'CA certificate import incorrect');
210+
await t.expect(addRedisDatabasePage.clientCertField.textContent).eql(rdmListOfCertsDB[0].clientCert.name, 'Client certificate import incorrect');
201211

202-
await clickOnEditDatabaseByName(rdmCertsListOfDB[1].name);
203-
await t.expect(addRedisDatabasePage.caCertField.textContent).eql(rdmCertsListOfDB[0].caCert.name, 'CA certificate name with the same body is incorrect');
204-
await t.expect(addRedisDatabasePage.clientCertField.textContent).eql(rdmCertsListOfDB[0].clientCert.name, 'Client certificate name with the same body is incorrect');
212+
await clickOnEditDatabaseByName(rdmListOfCertsDB[1].name);
213+
await t.expect(addRedisDatabasePage.caCertField.textContent).eql(rdmListOfCertsDB[0].caCert.name, 'CA certificate name with the same body is incorrect');
214+
await t.expect(addRedisDatabasePage.clientCertField.textContent).eql(rdmListOfCertsDB[0].clientCert.name, 'Client certificate name with the same body is incorrect');
205215

206216
// Verify that when user imports a certificate and the same certificate name exists but with a different body, the certificate imported with "({incremental_number})_certificate_name" name
207-
await clickOnEditDatabaseByName(rdmCertsListOfDB[2].name);
208-
await t.expect(addRedisDatabasePage.caCertField.textContent).eql(`1_${rdmCertsListOfDB[0].caCert.name}`, 'CA certificate name with the same body is incorrect');
209-
await t.expect(addRedisDatabasePage.clientCertField.textContent).eql(`1_${rdmCertsListOfDB[0].clientCert.name}`, 'Client certificate name with the same body is incorrect');
217+
await clickOnEditDatabaseByName(rdmListOfCertsDB[2].name);
218+
await t.expect(addRedisDatabasePage.caCertField.textContent).eql(`1_${rdmListOfCertsDB[0].caCert.name}`, 'CA certificate name with the same body is incorrect');
219+
await t.expect(addRedisDatabasePage.clientCertField.textContent).eql(`1_${rdmListOfCertsDB[0].clientCert.name}`, 'Client certificate name with the same body is incorrect');
210220

211221
// Verify that when user imports a certificate by path and the same certificate body already exists, the existing certificate (with its name) is applied
212-
await clickOnEditDatabaseByName(rdmCertsListOfDB[3].name);
222+
await clickOnEditDatabaseByName(rdmListOfCertsDB[3].name);
213223
await t.expect(addRedisDatabasePage.caCertField.textContent).eql('caPath', 'CA certificate import incorrect');
214224
await t.expect(addRedisDatabasePage.clientCertField.textContent).eql('clientPath', 'Client certificate import incorrect');
215225

216-
await clickOnEditDatabaseByName(rdmCertsListOfDB[4].name);
226+
await clickOnEditDatabaseByName(rdmListOfCertsDB[4].name);
217227
await t.expect(addRedisDatabasePage.caCertField.textContent).eql('caPath', 'CA certificate import incorrect');
218228
await t.expect(addRedisDatabasePage.clientCertField.textContent).eql('clientPath', 'Client certificate import incorrect');
219229

220230
// Verify that when user imports a certificate by path and the same certificate name exists but with a different body, the certificate imported with "({incremental_number})certificate_name" name
221-
await clickOnEditDatabaseByName(rdmCertsListOfDB[5].name);
231+
await clickOnEditDatabaseByName(rdmListOfCertsDB[5].name);
222232
await t.expect(addRedisDatabasePage.caCertField.textContent).eql('1_caPath', 'CA certificate import incorrect');
223233
await t.expect(addRedisDatabasePage.clientCertField.textContent).eql('1_clientPath', 'Client certificate import incorrect');
224234
});
225235
test
226236
.after(async() => {
227237
// Delete databases
228-
await deleteStandaloneDatabasesByNamesApi(importedSSHdbNames);
238+
await deleteStandaloneDatabasesByNamesApi(racompSSHData.importedSSHdbNames);
229239
})('Import SSH parameters', async t => {
230240
const sshAgentsResult = 'SSH Agents are not supported';
231241
const sshPrivateKey = '-----BEGIN OPENSSH PRIVATE KEY-----';

0 commit comments

Comments
 (0)