1
1
import { t } from 'testcafe' ;
2
2
import { Chance } from 'chance' ;
3
- import * as request from 'supertest' ;
4
3
import { asyncFilter , doAsyncStuff } from '../async-helper' ;
5
4
import { AddNewDatabaseParameters , OSSClusterParameters , databaseParameters , SentinelParameters , ClusterNodes } from '../../pageObjects/components/myRedisDatabase/add-redis-database' ;
6
- import { Common } from '../common' ;
5
+ import { Methods } from '../constants' ;
6
+ import { sendRequest } from './api-common' ;
7
7
8
8
const chance = new Chance ( ) ;
9
- const endpoint = Common . getEndpoint ( ) ;
10
9
11
10
/**
12
11
* Add a new Standalone database through api using host and port
13
12
* @param databaseParameters The database parameters
14
13
*/
15
14
export async function addNewStandaloneDatabaseApi ( databaseParameters : AddNewDatabaseParameters ) : Promise < void > {
16
15
const uniqueId = chance . string ( { length : 10 } ) ;
17
- const requestBody = {
18
- 'name' : databaseParameters . databaseName ,
19
- 'host' : databaseParameters . host ,
20
- 'port' : Number ( databaseParameters . port ) ,
21
- 'username' : databaseParameters . databaseUsername ,
22
- 'password' : databaseParameters . databasePassword
23
- } ;
16
+ const requestBody : {
17
+ name ?: string ,
18
+ host : string ,
19
+ port : number ,
20
+ username ?: string ,
21
+ password ?: string ,
22
+ tls ?: boolean ,
23
+ verifyServerCert ?: boolean ,
24
+ caCert ?: {
25
+ name : string ,
26
+ certificate ?: string
27
+ } ,
28
+ clientCert ?: {
29
+ name : string ,
30
+ certificate ?: string ,
31
+ key ?: string
32
+ }
33
+ } = {
34
+ 'name' : databaseParameters . databaseName ,
35
+ 'host' : databaseParameters . host ,
36
+ 'port' : Number ( databaseParameters . port ) ,
37
+ 'username' : databaseParameters . databaseUsername ,
38
+ 'password' : databaseParameters . databasePassword
39
+ } ;
24
40
25
41
if ( databaseParameters . caCert ) {
26
- requestBody [ ' tls' ] = true ;
27
- requestBody [ ' verifyServerCert' ] = false ;
28
- requestBody [ ' caCert' ] = {
42
+ requestBody . tls = true ;
43
+ requestBody . verifyServerCert = false ;
44
+ requestBody . caCert = {
29
45
'name' : `ca}-${ uniqueId } ` ,
30
46
'certificate' : databaseParameters . caCert . certificate
31
47
} ;
32
- requestBody [ ' clientCert' ] = {
48
+ requestBody . clientCert = {
33
49
'name' : `client}-${ uniqueId } ` ,
34
50
'certificate' : databaseParameters . clientCert ! . certificate ,
35
51
'key' : databaseParameters . clientCert ! . key
36
52
} ;
37
53
}
38
-
39
- const response = await request ( endpoint ) . post ( '/databases' )
40
- . send ( requestBody )
41
- . set ( 'Accept' , 'application/json' ) ;
42
- await t
43
- . expect ( response . status ) . eql ( 201 , `The creation of ${ databaseParameters . databaseName } standalone database request failed: ${ await response . body . message } ` )
44
- . expect ( await response . body . name ) . eql ( databaseParameters . databaseName , `Database Name is not equal to ${ databaseParameters . databaseName } in response` ) ;
54
+ const response = await sendRequest ( Methods . post , '/databases' , 201 , requestBody ) ;
55
+ await t . expect ( await response . body . name ) . eql ( databaseParameters . databaseName , `Database Name is not equal to ${ databaseParameters . databaseName } in response` ) ;
45
56
}
46
57
47
58
/**
@@ -50,7 +61,7 @@ export async function addNewStandaloneDatabaseApi(databaseParameters: AddNewData
50
61
*/
51
62
export async function addNewStandaloneDatabasesApi ( databasesParameters : AddNewDatabaseParameters [ ] ) : Promise < void > {
52
63
if ( databasesParameters . length ) {
53
- await databasesParameters . forEach ( async parameter => {
64
+ databasesParameters . forEach ( async parameter => {
54
65
await addNewStandaloneDatabaseApi ( parameter ) ;
55
66
} ) ;
56
67
}
@@ -61,15 +72,13 @@ export async function addNewStandaloneDatabasesApi(databasesParameters: AddNewDa
61
72
* @param databaseParameters The database parameters
62
73
*/
63
74
export async function addNewOSSClusterDatabaseApi ( databaseParameters : OSSClusterParameters ) : Promise < void > {
64
- const response = await request ( endpoint ) . post ( '/databases' )
65
- . send ( {
66
- 'name' : databaseParameters . ossClusterDatabaseName ,
67
- 'host' : databaseParameters . ossClusterHost ,
68
- 'port' : Number ( databaseParameters . ossClusterPort ) } )
69
- . set ( 'Accept' , 'application/json' ) ;
70
-
71
- await t . expect ( await response . status ) . eql ( 201 , 'The creation of new oss cluster database request failed' )
72
- . expect ( await response . body . name ) . eql ( databaseParameters . ossClusterDatabaseName , `Database Name is not equal to ${ databaseParameters . ossClusterDatabaseName } in response` ) ;
75
+ const requestBody = {
76
+ 'name' : databaseParameters . ossClusterDatabaseName ,
77
+ 'host' : databaseParameters . ossClusterHost ,
78
+ 'port' : Number ( databaseParameters . ossClusterPort )
79
+ } ;
80
+ const response = await sendRequest ( Methods . post , '/databases' , 201 , requestBody ) ;
81
+ await t . expect ( await response . body . name ) . eql ( databaseParameters . ossClusterDatabaseName , `Database Name is not equal to ${ databaseParameters . ossClusterDatabaseName } in response` ) ;
73
82
}
74
83
75
84
/**
@@ -82,24 +91,21 @@ export async function discoverSentinelDatabaseApi(databaseParameters: SentinelPa
82
91
if ( primaryGroupsNumber ) {
83
92
masters = databaseParameters . masters ! . slice ( 0 , primaryGroupsNumber ) ;
84
93
}
85
- const response = await request ( endpoint ) . post ( '/redis-sentinel/databases' )
86
- . send ( {
87
- 'host' : databaseParameters . sentinelHost ,
88
- 'port' : Number ( databaseParameters . sentinelPort ) ,
89
- 'password' : databaseParameters . sentinelPassword ,
90
- 'masters' : masters
91
- } )
92
- . set ( 'Accept' , 'application/json' ) ;
94
+ const requestBody = {
95
+ 'host' : databaseParameters . sentinelHost ,
96
+ 'port' : Number ( databaseParameters . sentinelPort ) ,
97
+ 'password' : databaseParameters . sentinelPassword ,
98
+ 'masters' : masters
99
+ } ;
93
100
94
- await t . expect ( response . status ) . eql ( 201 , 'Autodiscovery of Sentinel database request failed' ) ;
101
+ await sendRequest ( Methods . post , '/redis-sentinel/databases' , 201 , requestBody ) ;
95
102
}
96
103
97
104
/**
98
105
* Get all databases through api
99
106
*/
100
107
export async function getAllDatabases ( ) : Promise < string [ ] > {
101
- const response = await request ( endpoint ) . get ( '/databases' )
102
- . set ( 'Accept' , 'application/json' ) . expect ( 200 ) ;
108
+ const response = await sendRequest ( Methods . get , '/databases' , 200 ) ;
103
109
return await response . body ;
104
110
}
105
111
@@ -111,7 +117,7 @@ export async function getDatabaseIdByName(databaseName?: string): Promise<string
111
117
if ( ! databaseName ) {
112
118
throw new Error ( 'Error: Missing databaseName' ) ;
113
119
}
114
- let databaseId : any ;
120
+ let databaseId ;
115
121
const allDataBases = await getAllDatabases ( ) ;
116
122
const response = await asyncFilter ( allDataBases , async ( item : databaseParameters ) => {
117
123
await doAsyncStuff ( ) ;
@@ -153,10 +159,8 @@ export async function deleteAllDatabasesApi(): Promise<void> {
153
159
databaseIds . push ( dbData . id ) ;
154
160
}
155
161
if ( databaseIds . length > 0 ) {
156
- await request ( endpoint ) . delete ( '/databases' )
157
- . send ( { 'ids' : databaseIds } )
158
- . set ( 'Accept' , 'application/json' )
159
- . expect ( 200 ) ;
162
+ const requestBody = { 'ids' : databaseIds } ;
163
+ await sendRequest ( Methods . delete , '/databases' , 200 , requestBody ) ;
160
164
}
161
165
}
162
166
}
@@ -168,11 +172,10 @@ export async function deleteAllDatabasesApi(): Promise<void> {
168
172
export async function deleteStandaloneDatabaseApi ( databaseParameters : AddNewDatabaseParameters ) : Promise < void > {
169
173
const databaseId = await getDatabaseIdByName ( databaseParameters . databaseName ) ;
170
174
if ( databaseId ) {
171
- await request ( endpoint ) . delete ( '/databases' )
172
- . send ( { 'ids' : [ `${ databaseId } ` ] } )
173
- . set ( 'Accept' , 'application/json' )
174
- . expect ( 200 ) ;
175
- } else {
175
+ const requestBody = { 'ids' : [ `${ databaseId } ` ] } ;
176
+ await sendRequest ( Methods . delete , '/databases' , 200 , requestBody ) ;
177
+ }
178
+ else {
176
179
throw new Error ( 'Error: Missing databaseId' ) ;
177
180
}
178
181
}
@@ -185,11 +188,10 @@ export async function deleteStandaloneDatabasesByNamesApi(databaseNames: string[
185
188
databaseNames . forEach ( async databaseName => {
186
189
const databaseId = await getDatabaseIdByName ( databaseName ) ;
187
190
if ( databaseId ) {
188
- await request ( endpoint ) . delete ( '/databases' )
189
- . send ( { 'ids' : [ `${ databaseId } ` ] } )
190
- . set ( 'Accept' , 'application/json' )
191
- . expect ( 200 ) ;
192
- } else {
191
+ const requestBody = { 'ids' : [ `${ databaseId } ` ] } ;
192
+ await sendRequest ( Methods . delete , '/databases' , 200 , requestBody ) ;
193
+ }
194
+ else {
193
195
throw new Error ( 'Error: Missing databaseId' ) ;
194
196
}
195
197
} ) ;
@@ -201,10 +203,8 @@ export async function deleteStandaloneDatabasesByNamesApi(databaseNames: string[
201
203
*/
202
204
export async function deleteOSSClusterDatabaseApi ( databaseParameters : OSSClusterParameters ) : Promise < void > {
203
205
const databaseId = await getDatabaseIdByName ( databaseParameters . ossClusterDatabaseName ) ;
204
- const response = await request ( endpoint ) . delete ( '/databases' )
205
- . send ( { 'ids' : [ `${ databaseId } ` ] } ) . set ( 'Accept' , 'application/json' ) ;
206
-
207
- await t . expect ( response . status ) . eql ( 200 , 'Delete OSS cluster database request failed' ) ;
206
+ const requestBody = { 'ids' : [ `${ databaseId } ` ] } ;
207
+ await sendRequest ( Methods . delete , '/databases' , 200 , requestBody ) ;
208
208
}
209
209
210
210
/**
@@ -214,9 +214,8 @@ export async function deleteOSSClusterDatabaseApi(databaseParameters: OSSCluster
214
214
export async function deleteAllSentinelDatabasesApi ( databaseParameters : SentinelParameters ) : Promise < void > {
215
215
for ( let i = 0 ; i < databaseParameters . name ! . length ; i ++ ) {
216
216
const databaseId = await getDatabaseIdByName ( databaseParameters . name ! [ i ] ) ;
217
- const response = await request ( endpoint ) . delete ( '/databases' )
218
- . send ( { 'ids' : [ `${ databaseId } ` ] } ) . set ( 'Accept' , 'application/json' ) ;
219
- await t . expect ( response . status ) . eql ( 200 , 'Delete Sentinel database request failed' ) ;
217
+ const requestBody = { 'ids' : [ `${ databaseId } ` ] } ;
218
+ await sendRequest ( Methods . delete , '/databases' , 200 , requestBody ) ;
220
219
}
221
220
}
222
221
@@ -225,9 +224,8 @@ export async function deleteAllSentinelDatabasesApi(databaseParameters: Sentinel
225
224
*/
226
225
export async function deleteAllDatabasesByConnectionTypeApi ( connectionType : string ) : Promise < void > {
227
226
const databaseIds = await getDatabaseByConnectionType ( connectionType ) ;
228
- const response = await request ( endpoint ) . delete ( '/databases' )
229
- . send ( { 'ids' : [ `${ databaseIds } ` ] } ) . set ( 'Accept' , 'application/json' ) ;
230
- await t . expect ( response . status ) . eql ( 200 , 'Delete Sentinel database request failed' ) ;
227
+ const requestBody = { 'ids' : [ `${ databaseIds } ` ] } ;
228
+ await sendRequest ( Methods . delete , '/databases' , 200 , requestBody ) ;
231
229
}
232
230
233
231
/**
@@ -248,10 +246,7 @@ export async function deleteStandaloneDatabasesApi(databasesParameters: AddNewDa
248
246
*/
249
247
export async function getClusterNodesApi ( databaseParameters : OSSClusterParameters ) : Promise < string [ ] > {
250
248
const databaseId = await getDatabaseIdByName ( databaseParameters . ossClusterDatabaseName ) ;
251
- const response = await request ( endpoint )
252
- . get ( `/databases/${ databaseId } /cluster-details` )
253
- . set ( 'Accept' , 'application/json' )
254
- . expect ( 200 ) ;
249
+ const response = await sendRequest ( Methods . get , `/databases/${ databaseId } /cluster-details` , 200 ) ;
255
250
const nodes = await response . body . nodes ;
256
251
const nodeNames = await nodes . map ( ( node : ClusterNodes ) => ( `${ node . host } :${ node . port } ` ) ) ;
257
252
return nodeNames ;
0 commit comments