2121from helpers import delete_database_user , delete_iam_member , add_iam_member
2222from iam_groups_authn .iam_admin import get_iam_users
2323from iam_groups_authn .mysql import mysql_username
24- from iam_groups_authn .postgres import init_postgres_connection_engine
24+ from iam_groups_authn .postgres import init_postgres_connection_engine , postgres_username
2525from iam_groups_authn .sql_admin import get_instance_users
2626from iam_groups_authn .sync import groups_sync , UserService
2727import time
3030sql_instance = os .environ ["POSTGRES_INSTANCE" ]
3131iam_groups = [os .environ ["IAM_GROUPS" ]]
3232test_user = os .environ ["TEST_USER" ]
33+ sa_user = os .environ ["SA_USER" ]
3334
3435scopes = [
3536 "https://www.googleapis.com/auth/admin.directory.group.member" ,
@@ -74,8 +75,12 @@ def setup_and_teardown():
7475 try :
7576 # cleanup user from database
7677 delete_database_user (sql_instance , test_user , credentials )
78+ # cleanup service account from database
79+ delete_database_user (sql_instance , postgres_username (sa_user ), credentials )
7780 # re-add member to IAM group
7881 add_iam_member (iam_groups [0 ], test_user , credentials )
82+ # re-add service account to IAM group
83+ add_iam_member (iam_groups [0 ], sa_user , credentials )
7984 # wait 30 seconds, adding IAM member is slow
8085 time .sleep (30 )
8186 except Exception :
@@ -96,23 +101,26 @@ async def test_service_postgres(credentials):
96101 - Verifies test user no longer has group role
97102 """
98103
99- # remove database user if they exist
104+ # remove database users if they exist
100105 try :
101106 delete_database_user (sql_instance , test_user , credentials )
107+ delete_database_user (sql_instance , postgres_username (sa_user ), credentials )
102108 except Exception :
103- print ("Database user must already have been deleted!" )
109+ print ("Database users must already have been deleted!" )
104110
105111 # create aiohttp client session for async API calls
106112 client_session = ClientSession (headers = {"Content-Type" : "application/json" })
107113
108- # check that test_user is not a database user
114+ # check that users are not a database user
109115 user_service = UserService (client_session , credentials )
110116 db_users = await get_instance_users (user_service , sql_instance )
111117 assert test_user not in db_users
118+ assert postgres_username (sa_user ) not in db_users
112119
113- # make sure test_user is member of IAM group
120+ # make sure users are members of IAM group
114121 try :
115122 add_iam_member (iam_groups [0 ], test_user , credentials )
123+ add_iam_member (iam_groups [0 ], sa_user , credentials )
116124 # wait 30 seconds, adding IAM member is slow
117125 time .sleep (30 )
118126 except Exception :
@@ -121,9 +129,10 @@ async def test_service_postgres(credentials):
121129 # run groups sync
122130 await groups_sync (iam_groups , [sql_instance ], credentials , dict (), False )
123131
124- # check that test_user has been created as database user
132+ # check that users has been created as database users
125133 db_users = await get_instance_users (user_service , sql_instance )
126134 assert test_user in db_users
135+ assert postgres_username (sa_user ) in db_users
127136
128137 # create database connection to instance
129138 pool = init_postgres_connection_engine (sql_instance , credentials )
@@ -133,10 +142,11 @@ async def test_service_postgres(credentials):
133142 users_with_role = check_role_postgres (pool , mysql_username (iam_group ))
134143 iam_members = await get_iam_users (user_service , iam_group )
135144 for member in iam_members :
136- assert member in users_with_role
145+ assert postgres_username ( member ) in users_with_role
137146
138- # remove test_user from IAM group
147+ # remove users from IAM group
139148 delete_iam_member (iam_groups [0 ], test_user , credentials )
149+ delete_iam_member (iam_groups [0 ], sa_user , credentials )
140150
141151 # wait 30 seconds, deleting IAM member is slow
142152 time .sleep (30 )
@@ -147,6 +157,7 @@ async def test_service_postgres(credentials):
147157 # verify test_user no longer has group role
148158 users_with_role = check_role_postgres (pool , mysql_username (iam_groups [0 ]))
149159 assert test_user not in users_with_role
160+ assert postgres_username (sa_user ) not in users_with_role
150161
151162 # close aiohttp client session for graceful exit
152163 if not client_session .closed :
0 commit comments