@@ -520,6 +520,68 @@ def test_set_cluster_credentials_uses_custom_domain_name_if_custom_domain_name_c
520
520
)
521
521
522
522
523
+ @mock .patch ("boto3.client.get_credentials" )
524
+ @mock .patch ("boto3.client" )
525
+ def test_set_cluster_credentials_uses_custom_domain_name_if_custom_domain_name_serverless (
526
+ mock_boto_client , mock_get_cluster_credentials
527
+ ):
528
+ mock_cred_provider = MagicMock ()
529
+ mock_cred_holder = MagicMock ()
530
+ mock_cred_provider .get_credentials .return_value = mock_cred_holder
531
+ mock_cred_provider .get_cache_key .return_value = "mocked"
532
+ mock_cred_holder .has_associated_session = False
533
+
534
+ rp : RedshiftProperty = make_redshift_property ()
535
+ rp .put ("cluster_identifier" , None )
536
+ rp .put ("host" , "mycustom.domain.name" )
537
+ rp .put ("is_serverless" , True )
538
+ rp .put ("is_cname" , True )
539
+
540
+ IamHelper .credentials_cache .clear ()
541
+
542
+ IamHelper .set_cluster_credentials (mock_cred_provider , rp )
543
+
544
+ assert mock_boto_client .called is True
545
+ mock_boto_client .assert_has_calls (
546
+ [
547
+ call ().get_credentials (
548
+ customDomainName = rp .host ,
549
+ dbName = rp .db_name ,
550
+ )
551
+ ]
552
+ )
553
+
554
+
555
+ @mock .patch ("boto3.client.get_credentials" )
556
+ @mock .patch ("boto3.client" )
557
+ def test_set_cluster_credentials_uses_workgroup_if_nlb_serverless (mock_boto_client , mock_get_cluster_credentials ):
558
+ mock_cred_provider = MagicMock ()
559
+ mock_cred_holder = MagicMock ()
560
+ mock_cred_provider .get_credentials .return_value = mock_cred_holder
561
+ mock_cred_provider .get_cache_key .return_value = "mocked"
562
+ mock_cred_holder .has_associated_session = False
563
+
564
+ rp : RedshiftProperty = make_redshift_property ()
565
+ rp .put ("cluster_identifier" , None )
566
+ rp .put ("host" , "mycustom.domain.name" )
567
+ rp .put ("is_serverless" , True )
568
+ rp .put ("serverless_work_group" , "xyz" )
569
+ rp .put ("serverless_acct_id" , "012345678901" )
570
+ IamHelper .credentials_cache .clear ()
571
+
572
+ IamHelper .set_cluster_credentials (mock_cred_provider , rp )
573
+
574
+ assert mock_boto_client .called is True
575
+ mock_boto_client .assert_has_calls (
576
+ [
577
+ call ().get_credentials (
578
+ workgroupName = rp .serverless_work_group ,
579
+ dbName = rp .db_name ,
580
+ )
581
+ ]
582
+ )
583
+
584
+
523
585
@mock .patch ("boto3.client.get_cluster_credentials" )
524
586
@mock .patch ("boto3.client" )
525
587
def test_set_cluster_credentials_caches_credentials (mock_boto_client , mock_get_cluster_credentials ) -> None :
0 commit comments