@@ -256,6 +256,221 @@ func TestAADatabase_Update(t *testing.T) {
256256 require .NoError (t , err )
257257}
258258
259+ func TestAADatabase_Get (t * testing.T ) {
260+ body := `{
261+ "databaseId": 1466,
262+ "name": "active-active-db",
263+ "redisVersion": "7.2",
264+ "protocol": "redis",
265+ "status": "active",
266+ "memoryStorage": "ram",
267+ "activeActiveRedis": true,
268+ "activatedOn": "2024-05-08T08:10:02Z",
269+ "lastModified": "2024-05-08T08:22:34Z",
270+ "supportOSSClusterApi": false,
271+ "useExternalEndpointForOSSClusterApi": false,
272+ "replication": true,
273+ "dataEvictionPolicy": "noeviction",
274+ "autoMinorVersionUpgrade": true,
275+ "modules": [],
276+ "globalDataPersistence": "aof-every-1-second",
277+ "globalSourceIp": ["192.168.1.0/24"],
278+ "globalPassword": "********",
279+ "globalAlerts": [
280+ {
281+ "name": "throughput-higher-than",
282+ "value": 90
283+ }
284+ ],
285+ "globalEnableDefaultUser": false,
286+ "crdbDatabases": [
287+ {
288+ "provider": "AWS",
289+ "region": "us-east-1",
290+ "redisVersionCompliance": "7.2.0",
291+ "publicEndpoint": "redis-14383.mc940-1.us-east-1-mz.ec2.qa-cloud.rlrcp.com:14383",
292+ "privateEndpoint": "redis-14383.internal.mc940-1.us-east-1-mz.ec2.qa-cloud.rlrcp.com:14383",
293+ "memoryLimitInGb": 2,
294+ "datasetSizeInGb": 2,
295+ "memoryUsedInMb": 45.5,
296+ "readOperationsPerSecond": 2000,
297+ "writeOperationsPerSecond": 2000,
298+ "dataPersistence": "aof-every-1-second",
299+ "queryPerformanceFactor": "6x",
300+ "alerts": [
301+ {
302+ "id": "51054122-2",
303+ "name": "dataset-size",
304+ "value": 85,
305+ "defaultValue": 80
306+ }
307+ ],
308+ "security": {
309+ "enableDefaultUser": false,
310+ "sslClientAuthentication": false,
311+ "tlsClientAuthentication": true,
312+ "enableTls": true,
313+ "sourceIps": ["10.0.0.0/8"]
314+ },
315+ "backup": {
316+ "enableRemoteBackup": true,
317+ "interval": "every-12-hours",
318+ "timeUTC": "10:00",
319+ "destination": "s3://bucket/path"
320+ }
321+ },
322+ {
323+ "provider": "AWS",
324+ "region": "us-east-2",
325+ "redisVersionCompliance": "7.2.0",
326+ "publicEndpoint": "redis-14383.mc940-0.us-east-2-mz.ec2.qa-cloud.rlrcp.com:14383",
327+ "privateEndpoint": "redis-14383.internal.mc940-0.us-east-2-mz.ec2.qa-cloud.rlrcp.com:14383",
328+ "memoryLimitInGb": 2,
329+ "datasetSizeInGb": 2,
330+ "memoryUsedInMb": 45.3,
331+ "readOperationsPerSecond": 2000,
332+ "writeOperationsPerSecond": 2000,
333+ "dataPersistence": "aof-every-1-second",
334+ "queryPerformanceFactor": "6x",
335+ "alerts": [
336+ {
337+ "id": "51054121-2",
338+ "name": "dataset-size",
339+ "value": 85,
340+ "defaultValue": 80
341+ }
342+ ],
343+ "security": {
344+ "enableDefaultUser": false,
345+ "sslClientAuthentication": false,
346+ "tlsClientAuthentication": true,
347+ "enableTls": true,
348+ "sourceIps": ["10.0.0.0/8"]
349+ },
350+ "backup": {
351+ "enableRemoteBackup": true,
352+ "interval": "every-12-hours",
353+ "timeUTC": "10:00",
354+ "destination": "s3://bucket/path"
355+ }
356+ }
357+ ]
358+ }`
359+
360+ s := httptest .NewServer (
361+ testServer (
362+ "apiKey" ,
363+ "secret" ,
364+ getRequest (t , "/subscriptions/111478/databases/1466" , body ),
365+ ),
366+ )
367+ defer s .Close ()
368+
369+ subject , err := clientFromTestServer (s , "apiKey" , "secret" )
370+ require .NoError (t , err )
371+
372+ actual , err := subject .Database .GetActiveActive (context .TODO (), 111478 , 1466 )
373+ require .NoError (t , err )
374+
375+ expected := & databases.ActiveActiveDatabase {
376+ ID : redis .Int (1466 ),
377+ Name : redis .String ("active-active-db" ),
378+ Protocol : redis .String ("redis" ),
379+ RedisVersion : redis .String ("7.2" ),
380+ Status : redis .String ("active" ),
381+ MemoryStorage : redis .String ("ram" ),
382+ ActiveActiveRedis : redis .Bool (true ),
383+ ActivatedOn : redis .Time (time .Date (2024 , 5 , 8 , 8 , 10 , 02 , 0 , time .UTC )),
384+ LastModified : redis .Time (time .Date (2024 , 5 , 8 , 8 , 22 , 34 , 0 , time .UTC )),
385+ SupportOSSClusterAPI : redis .Bool (false ),
386+ UseExternalEndpointForOSSClusterAPI : redis .Bool (false ),
387+ Replication : redis .Bool (true ),
388+ DataEvictionPolicy : redis .String ("noeviction" ),
389+ AutoMinorVersionUpgrade : redis .Bool (true ),
390+ Modules : []* databases.Module {},
391+ GlobalDataPersistence : redis .String ("aof-every-1-second" ),
392+ GlobalSourceIP : redis .StringSlice ("192.168.1.0/24" ),
393+ GlobalPassword : redis .String ("********" ),
394+ GlobalAlerts : []* databases.Alert {
395+ {
396+ Name : redis .String ("throughput-higher-than" ),
397+ Value : redis .Int (90 ),
398+ },
399+ },
400+ GlobalEnableDefaultUser : redis .Bool (false ),
401+ CrdbDatabases : []* databases.CrdbDatabase {
402+ {
403+ Provider : redis .String ("AWS" ),
404+ Region : redis .String ("us-east-1" ),
405+ RedisVersionCompliance : redis .String ("7.2.0" ),
406+ PublicEndpoint : redis .String ("redis-14383.mc940-1.us-east-1-mz.ec2.qa-cloud.rlrcp.com:14383" ),
407+ PrivateEndpoint : redis .String ("redis-14383.internal.mc940-1.us-east-1-mz.ec2.qa-cloud.rlrcp.com:14383" ),
408+ MemoryLimitInGB : redis .Float64 (2 ),
409+ DatasetSizeInGB : redis .Float64 (2 ),
410+ MemoryUsedInMB : redis .Float64 (45.5 ),
411+ ReadOperationsPerSecond : redis .Int (2000 ),
412+ WriteOperationsPerSecond : redis .Int (2000 ),
413+ DataPersistence : redis .String ("aof-every-1-second" ),
414+ QueryPerformanceFactor : redis .String ("6x" ),
415+ Alerts : []* databases.Alert {
416+ {
417+ Name : redis .String ("dataset-size" ),
418+ Value : redis .Int (85 ),
419+ },
420+ },
421+ Security : & databases.Security {
422+ EnableDefaultUser : redis .Bool (false ),
423+ SSLClientAuthentication : redis .Bool (false ),
424+ TLSClientAuthentication : redis .Bool (true ),
425+ EnableTls : redis .Bool (true ),
426+ SourceIPs : redis .StringSlice ("10.0.0.0/8" ),
427+ },
428+ Backup : & databases.Backup {
429+ Enabled : redis .Bool (true ),
430+ Interval : redis .String ("every-12-hours" ),
431+ TimeUTC : redis .String ("10:00" ),
432+ Destination : redis .String ("s3://bucket/path" ),
433+ },
434+ },
435+ {
436+ Provider : redis .String ("AWS" ),
437+ Region : redis .String ("us-east-2" ),
438+ RedisVersionCompliance : redis .String ("7.2.0" ),
439+ PublicEndpoint : redis .String ("redis-14383.mc940-0.us-east-2-mz.ec2.qa-cloud.rlrcp.com:14383" ),
440+ PrivateEndpoint : redis .String ("redis-14383.internal.mc940-0.us-east-2-mz.ec2.qa-cloud.rlrcp.com:14383" ),
441+ MemoryLimitInGB : redis .Float64 (2 ),
442+ DatasetSizeInGB : redis .Float64 (2 ),
443+ MemoryUsedInMB : redis .Float64 (45.3 ),
444+ ReadOperationsPerSecond : redis .Int (2000 ),
445+ WriteOperationsPerSecond : redis .Int (2000 ),
446+ DataPersistence : redis .String ("aof-every-1-second" ),
447+ QueryPerformanceFactor : redis .String ("6x" ),
448+ Alerts : []* databases.Alert {
449+ {
450+ Name : redis .String ("dataset-size" ),
451+ Value : redis .Int (85 ),
452+ },
453+ },
454+ Security : & databases.Security {
455+ EnableDefaultUser : redis .Bool (false ),
456+ SSLClientAuthentication : redis .Bool (false ),
457+ TLSClientAuthentication : redis .Bool (true ),
458+ EnableTls : redis .Bool (true ),
459+ SourceIPs : redis .StringSlice ("10.0.0.0/8" ),
460+ },
461+ Backup : & databases.Backup {
462+ Enabled : redis .Bool (true ),
463+ Interval : redis .String ("every-12-hours" ),
464+ TimeUTC : redis .String ("10:00" ),
465+ Destination : redis .String ("s3://bucket/path" ),
466+ },
467+ },
468+ },
469+ }
470+
471+ assert .Equal (t , expected , actual )
472+ }
473+
259474func TestAADatabase_List (t * testing.T ) {
260475 body := `{
261476 "accountId": 69369,
@@ -280,6 +495,15 @@ func TestAADatabase_List(t *testing.T) {
280495 "dataEvictionPolicy": "noeviction",
281496 "autoMinorVersionUpgrade": true,
282497 "modules": [],
498+ "globalDataPersistence": "none",
499+ "globalSourceIp": ["0.0.0.0/0"],
500+ "globalAlerts": [
501+ {
502+ "name": "dataset-size",
503+ "value": 80
504+ }
505+ ],
506+ "globalEnableDefaultUser": true,
283507 "crdbDatabases": [
284508 {
285509 "provider": "AWS",
@@ -423,6 +647,15 @@ func TestAADatabase_List(t *testing.T) {
423647 DataEvictionPolicy : redis .String ("noeviction" ),
424648 AutoMinorVersionUpgrade : redis .Bool (true ),
425649 Modules : []* databases.Module {},
650+ GlobalDataPersistence : redis .String ("none" ),
651+ GlobalSourceIP : redis .StringSlice ("0.0.0.0/0" ),
652+ GlobalAlerts : []* databases.Alert {
653+ {
654+ Name : redis .String ("dataset-size" ),
655+ Value : redis .Int (80 ),
656+ },
657+ },
658+ GlobalEnableDefaultUser : redis .Bool (true ),
426659 CrdbDatabases : []* databases.CrdbDatabase {
427660 {
428661 Provider : redis .String ("AWS" ),
0 commit comments