Skip to content

Commit 017af2c

Browse files
committed
add test file with certificates to import
1 parent d0d6f47 commit 017af2c

File tree

5 files changed

+274
-13
lines changed

5 files changed

+274
-13
lines changed

tests/e2e/common-actions/databases-actions.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@ export class DatabasesActions {
2424
.click(myRedisDatabasePage.importDatabasesBtn)
2525
.setFilesToUpload(myRedisDatabasePage.importDatabaseInput, [fileParameters.path])
2626
.click(myRedisDatabasePage.submitImportBtn)
27-
.expect(myRedisDatabasePage.successImportMessage.exists).ok(`Successfully added ${fileParameters.type} databases message not displayed`);
27+
.expect(myRedisDatabasePage.importDialogTitle.textContent).eql('Import Results', `Databases from ${fileParameters.type} not imported`);
2828
}
29-
3029
}
3130

3231
/**

tests/e2e/pageObjects/my-redis-databases-page.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ export class MyRedisDatabasePage {
77
//*Target any element/component via data-id, if possible!
88
//*The following categories are ordered alphabetically (Alerts, Buttons, Checkboxes, etc.).
99
//-------------------------------------------------------------------------------------------
10+
// CSS Selectors
11+
cssNumberOfDbs = '[data-testid=number-of-dbs]';
1012
//BUTTONS
1113
settingsButton = Selector('[data-testid=settings-page-btn]');
1214
workbenchButton = Selector('[data-testid=workbench-page-btn]');
@@ -63,8 +65,12 @@ export class MyRedisDatabasePage {
6365
noResultsFoundText = Selector('div').withExactText('No databases matched your search. Try reducing the criteria.');
6466
failedImportMessage = Selector('[data-testid=result-failed]');
6567
successImportMessage = Selector('[data-testid=result-success]');
68+
importDialogTitle = Selector('[data-testid=import-dbs-dialog-title]');
6669
// DIALOG
6770
importDbDialog = Selector('[data-testid=import-dbs-dialog]');
71+
successResultsAccordion = Selector('[data-testid^=success-results-]');
72+
partialResultsAccordion = Selector('[data-testid^=partial-results-]');
73+
failedResultsAccordion = Selector('[data-testid^=failed-results-]');
6874

6975
/**
7076
* Click on the database by name

tests/e2e/test-data/racompass-invalid.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,5 +167,4 @@
167167
"id": "f99a5d6d-daf4-489c-885b-6f8e411adbc9",
168168
"cluster": true,
169169
"name": "vd long host"
170-
}
171170
]

tests/e2e/test-data/rdm-full.json

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
[
2+
{
3+
"host": "localhost",
4+
"port": 8100,
5+
"name": "rdmHost+Port+Name",
6+
"result": "success"
7+
},
8+
{
9+
"host": "localhost",
10+
"port": 8101,
11+
"name": "rdmHost+Port+Name+Username+Password",
12+
"username": "rdmUsername",
13+
"auth": "rdmAuth",
14+
"result": "success"
15+
},
16+
{
17+
"host": "172.30.100.151",
18+
"port": 6379,
19+
"name": "rdmHost+Port+Name+ClusterTrue",
20+
"cluster": true,
21+
"result": "success"
22+
},
23+
{
24+
"host": "172.30.100.151",
25+
"port": 6379,
26+
"name": "rdmHost+Port+Name+ClusterFalse",
27+
"cluster": false,
28+
"result": "success"
29+
},
30+
{
31+
"host": "localhost",
32+
"port": 8102,
33+
"name": "rdmHost+Port+Name+Index",
34+
"db": 2,
35+
"result": "success"
36+
},
37+
{
38+
"host": "localhost",
39+
"port": 8102,
40+
"name": "rdmHost+Port+Name+otherFields",
41+
"ssh_port": 22,
42+
"timeout_connect": 60000,
43+
"timeout_execute": 60000,
44+
"other_field": "inv",
45+
"result": "success"
46+
},
47+
{
48+
"host": "localhost",
49+
"port": 8102,
50+
"name": "rdmHost+Port+Name+CaCert",
51+
"ssl_ca_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/ca.crt",
52+
"result": "success"
53+
},
54+
{
55+
"host": "localhost",
56+
"port": 8102,
57+
"name": "rdmHost+Port+Name+clientCert+privateKey",
58+
"ssl": true,
59+
"ssl_local_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.crt",
60+
"ssl_private_key_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.key",
61+
"result": "success"
62+
},
63+
{
64+
"host": "localhost",
65+
"port": 8102,
66+
"name": "rdmHost+Port+Name+CaCert+clientCert+privateKey",
67+
"ssl_ca_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/ca.crt",
68+
"ssl_local_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.crt",
69+
"ssl_private_key_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.key",
70+
"result": "success"
71+
},
72+
{
73+
"host": "localhost",
74+
"port": 8102,
75+
"name": "rdmHost+Port+Name+CaCert+clientCert+privateKey(notbypath)",
76+
"ssl_ca_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/ca.crt",
77+
"ssl_local_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.crt",
78+
"ssl_private_key_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.key",
79+
"result": "success"
80+
},
81+
{
82+
"host": "172.30.100.103",
83+
"port": 6379,
84+
"name": "rdmHost+Port+Name+username+pass+CaCert+clientCert+privateKey",
85+
"ssl": true,
86+
"ssl_ca_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/ca.crt",
87+
"ssl_local_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.crt",
88+
"ssl_private_key_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.key",
89+
"username": "admin",
90+
"auth": "pass",
91+
"result": "success"
92+
},
93+
{
94+
"host": "redis-13237.c263.us-east-1-2.ec2.cloud.redislabs.com",
95+
"port": 13237,
96+
"name": "rdmHost+Port+Name CloudDb",
97+
"auth": "fRVdFcJftYnVoJmTCuiAPW6yu9qimXA1",
98+
"result": "success"
99+
},
100+
{
101+
"host": "3.85.88.37",
102+
"port": 14547,
103+
"name": "rdmHost+Port+Name Cluster+CloudDb",
104+
"auth": "Admin123!",
105+
"result": "success"
106+
},
107+
{
108+
"host": "172.30.100.201",
109+
"port": 6379,
110+
"name": "rdmHost+Port+Name Sentinel",
111+
"auth": "defaultpass",
112+
"result": "success"
113+
},
114+
{
115+
"port": 8100,
116+
"name": "rdmnoHost",
117+
"result": "failed"
118+
},
119+
{
120+
"host": "localhost",
121+
"name": "rdmnoPort",
122+
"result": "failed"
123+
},
124+
{
125+
"name": "rdmnoHost+noPort",
126+
"result": "failed"
127+
},
128+
129+
{
130+
"host": "rdmLargeName",
131+
"port": "8101",
132+
"name": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed consectetur metus in libero pretium congue. Curabitur eget eleifend nibh, cursus tincidunt lorem. Vivamus magna erat, vestibulum at sem et, bibendum volutpat velit. Cras dapibus lorem quam, at efficitur mi sollicitudin id. Vivamus dapibus nec elit ut tincidunt. Sed porta tempus lorem id iaculis. Vestibulum ut arcu vitae massa dapibus egestas. Suspendisse ante tortor, tristique vel malesuada id, finibus et libero. Nulla suscipit libero.1",
133+
"result": "failed"
134+
},
135+
{
136+
"host": "localhost",
137+
"port": 65536,
138+
"name": "rdmLargePort",
139+
"result": "failed"
140+
},
141+
{
142+
"host": "localhost",
143+
"port": 8103,
144+
"name": "rdmIndexNotNumber",
145+
"db": "dsad",
146+
"result": "failed"
147+
},
148+
{
149+
"host": "localhost",
150+
"port": 8102,
151+
"name": "rdmCaCertInvalidBody",
152+
"ssl_ca_cert_path": "invalid body",
153+
"result": "partial"
154+
},
155+
{
156+
"host": "localhost",
157+
"port": 8103,
158+
"name": "rdmOnlyClientCert",
159+
"ssl_local_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.crt",
160+
"result": "partial"
161+
},
162+
{
163+
"host": "localhost",
164+
"port": 8103,
165+
"name": "rdmOnlyPrivateKey",
166+
"ssl_private_key_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.key",
167+
"result": "partial"
168+
},
169+
{
170+
"host": "localhost",
171+
"port": 8103,
172+
"name": "rdmInvalidClientCert",
173+
"ssl_local_cert_path": "invalid client cert",
174+
"ssl_private_key_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.key",
175+
"result": "partial"
176+
},
177+
{
178+
"host": "localhost",
179+
"port": 8103,
180+
"name": "rdmInvalidPrivateKey",
181+
"ssl_local_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/client.crt",
182+
"ssl_private_key_path": "invalid private key",
183+
"result": "partial"
184+
},
185+
{
186+
"auth": "",
187+
"db_scan_limit": 21,
188+
"host": "127.0.0.1",
189+
"keys_pattern": "*1",
190+
"lua_keys_loading": true,
191+
"name": "rdmInvalidAllCertificates",
192+
"namespace_separator": ":3",
193+
"port": 8100,
194+
"ssh_port": 22,
195+
"ssl": false,
196+
"ssl_ca_cert_path": "fdsafsadfsad",
197+
"ssl_local_cert_path": "fsdfds",
198+
"ssl_private_key_path": "fdsafasdf",
199+
"timeout_connect": 61000,
200+
"timeout_execute": 61000,
201+
"result": "partial"
202+
},
203+
{
204+
"host": "localhost",
205+
"port": 8103,
206+
"name": "rdmCaCertInvalidPath",
207+
"ssl_ca_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/caInvalid.crt",
208+
"result": "partial"
209+
},
210+
{
211+
"host": "localhost",
212+
"port": 8103,
213+
"name": "rdmClientCert+PrivateKeyInvalidPathes",
214+
"ssl_local_cert_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/clientInvalid.crt",
215+
"ssl_private_key_path": "C:/Projects/redisinsight-redis/RedisInsight/tests/e2e/.redisinsight-v2/clientInvalid.key",
216+
"result": "partial"
217+
}
218+
]

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

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,49 @@
1+
import * as fs from 'fs';
2+
import * as path from 'path';
13
import { rte } from '../../../helpers/constants';
24
import { AddRedisDatabasePage, BrowserPage, MyRedisDatabasePage } from '../../../pageObjects';
35
import { commonUrl } from '../../../helpers/conf';
46
import { acceptLicenseTerms, clickOnEditDatabaseByName } from '../../../helpers/database';
57
import { deleteStandaloneDatabasesByNamesApi } from '../../../helpers/api/api-database';
68
import { DatabasesActions } from '../../../common-actions/databases-actions';
9+
// import rdmJson from '../../../test-data/rdm-full.json' assert {type: 'json'};
10+
// import * as fil from '../../../test-data/rdm-full.json';
11+
const file = path.join('test-data', 'rdm-full.json');
712

813
const browserPage = new BrowserPage();
914
const myRedisDatabasePage = new MyRedisDatabasePage();
1015
const databasesActions = new DatabasesActions();
1116
const addRedisDatabasePage = new AddRedisDatabasePage();
1217

13-
const invalidJsonPath = '../../../test-data/racompass-invalid.json';
18+
const racompassValidJson = 'racompass-valid.json';
19+
const racompassInvalidJson = 'racompass-invalid.json';
20+
const rdmValidJson = 'rdm-valid.json';
21+
const rdmFullJson = 'rdm-full.json';
22+
const ardmValidAno = 'ardm-valid.ano';
23+
const listOfDB = JSON.parse(fs.readFileSync(file, 'utf-8'));
24+
const dbSuccessNames = listOfDB.filter(element => element.result === 'success').map(item => item.name);
25+
1426
const rdmData = {
1527
type: 'rdm',
16-
path: '../../../test-data/rdm-valid.json',
28+
path: path.join('..', '..', '..', 'test-data', rdmFullJson),
1729
dbNames: ['rdmWithUsernameAndPass1:1561', 'rdmOnlyHostPortDB2:6379'],
1830
userName: 'rdmUsername',
1931
password: 'rdmAuth',
2032
connectionType: 'Cluster',
21-
fileName: 'rdm-valid.json'
33+
fileName: rdmFullJson,
34+
successNumber: dbSuccessNames.length,
35+
partialNumber: 8,
36+
failedNumber: 6
2237
};
2338
const dbData = [
2439
{
2540
type: 'racompass',
26-
path: '../../../test-data/racompass-valid.json',
41+
path: path.join('..', '..', '..', 'test-data', racompassValidJson),
2742
dbNames: ['racompassCluster', 'racompassDbWithIndex:8100 [1]']
2843
},
2944
{
3045
type: 'ardm',
31-
path: '../../../test-data/ardm-valid.ano',
46+
path: path.join('..', '..', '..', 'test-data', ardmValidAno),
3247
dbNames: ['ardmNoName:12001', 'ardmWithPassAndUsername']
3348
}
3449
];
@@ -54,8 +69,9 @@ test
5469
deleteStandaloneDatabasesByNamesApi(databases);
5570
})('Connection import from JSON', async t => {
5671
const tooltipText = 'Import Database Connections';
57-
const partialImportedMsg = 'Successfully added 2 of 6 database connections';
5872
const defaultText = 'Select or drag and drop a file';
73+
const parseFailedMsg = 'Failed to add database connections';
74+
const parseFailedMsg2 = `Unable to parse ${racompassInvalidJson}`;
5975

6076
// Verify that user can see the “Import Database Connections” tooltip
6177
await t.expect(myRedisDatabasePage.importDatabasesBtn.visible).ok('The import databases button not displayed');
@@ -70,9 +86,11 @@ test
7086

7187
// Verify that user see the message when parse error appears
7288
await t
73-
.setFilesToUpload(myRedisDatabasePage.importDatabaseInput, [invalidJsonPath])
89+
.setFilesToUpload(myRedisDatabasePage.importDatabaseInput, [path.join('..', '..', '..', 'test-data', racompassInvalidJson)])
7490
.click(myRedisDatabasePage.submitImportBtn)
75-
.expect(myRedisDatabasePage.failedImportMessage.exists).ok('Failed to add database message not displayed');
91+
.expect(myRedisDatabasePage.failedImportMessage.exists).ok('Failed to add database message not displayed')
92+
.expect(myRedisDatabasePage.failedImportMessage.textContent).contains(parseFailedMsg)
93+
.expect(myRedisDatabasePage.failedImportMessage.textContent).contains(parseFailedMsg2);
7694

7795
// Verify that user can remove file from import input
7896
await t.click(myRedisDatabasePage.closeDialogBtn);
@@ -87,8 +105,16 @@ test
87105
await t.click(myRedisDatabasePage.closeDialogBtn);
88106
await databasesActions.importDatabase(rdmData);
89107
// Verify that success message is displayed
90-
await t.expect(myRedisDatabasePage.successImportMessage.textContent).contains(partialImportedMsg, 'Databases not imported successfully');
91-
108+
await t.expect(myRedisDatabasePage.successResultsAccordion.find(myRedisDatabasePage.cssNumberOfDbs).textContent)
109+
.contains(`${rdmData.successNumber}`, 'Not correct successfully imported number');
110+
await t.expect(myRedisDatabasePage.partialResultsAccordion.find(myRedisDatabasePage.cssNumberOfDbs).textContent)
111+
.contains(`${rdmData.partialNumber}`, 'Not correct partially imported number');
112+
await t.expect(myRedisDatabasePage.failedResultsAccordion.find(myRedisDatabasePage.cssNumberOfDbs).textContent)
113+
.contains(`${rdmData.failedNumber}`, 'Not correct failed to import number');
114+
115+
116+
117+
92118
// Verify that list of databases is reloaded when database added
93119
await t.click(myRedisDatabasePage.okDialogBtn);
94120
await databasesActions.verifyDatabasesDisplayed(rdmData.dbNames);
@@ -110,3 +136,16 @@ test
110136
await databasesActions.verifyDatabasesDisplayed(db.dbNames);
111137
}
112138
});
139+
test.only
140+
.before(async() => {
141+
await acceptLicenseTerms()
142+
})('Connection import from JSON', async t => {
143+
console.log(dbSuccessNames);
144+
console.log(rdmData.successNumber);
145+
146+
await databasesActions.importDatabase(rdmData);
147+
// Verify that success message is displayed
148+
await t.expect(myRedisDatabasePage.successResultsAccordion.find(myRedisDatabasePage.cssNumberOfDbs).textContent)
149+
.contains(`${rdmData.successNumber}`, 'Not correct successfully imported number');
150+
await databasesActions.verifyDatabasesDisplayed(dbSuccessNames);
151+
});

0 commit comments

Comments
 (0)