@@ -520,6 +520,68 @@ def test_set_cluster_credentials_uses_custom_domain_name_if_custom_domain_name_c
520520 )
521521
522522
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+
523585@mock .patch ("boto3.client.get_cluster_credentials" )
524586@mock .patch ("boto3.client" )
525587def test_set_cluster_credentials_caches_credentials (mock_boto_client , mock_get_cluster_credentials ) -> None :
0 commit comments