@@ -1096,6 +1096,55 @@ def get_license_details(
10961096 }
10971097
10981098
1099+ _EXPECTED_ACCESS_KEY_BOXES = 2
1100+
1101+
1102+ @beartype
1103+ def _wait_for_access_keys (
1104+ * ,
1105+ wait : WebDriverWait [WebDriver ],
1106+ key_ids : Sequence [str ],
1107+ ) -> None :
1108+ """Wait for key sections to show an access key and a secret key."""
1109+ wait .until (
1110+ method = lambda d : all (
1111+ len (
1112+ boxes := d .find_element (
1113+ by = By .ID ,
1114+ value = key_id ,
1115+ ).find_elements (by = By .CLASS_NAME , value = "grey-box" ),
1116+ )
1117+ >= _EXPECTED_ACCESS_KEY_BOXES
1118+ and all (
1119+ box .text .strip () for box in boxes [:_EXPECTED_ACCESS_KEY_BOXES ]
1120+ )
1121+ for key_id in key_ids
1122+ ),
1123+ )
1124+
1125+
1126+ @beartype
1127+ def _access_key_pair (
1128+ * ,
1129+ driver : WebDriver ,
1130+ key_id : str ,
1131+ ) -> tuple [str , str ]:
1132+ """Return the access key and secret key shown in a key section.
1133+
1134+ Call this only after ``_wait_for_access_keys`` has returned for the
1135+ section: that is what guarantees that both boxes are there and
1136+ filled in. Boxes after the first two are ignored, so that the target
1137+ manager growing another one does not change what this returns.
1138+ """
1139+ grey_boxes = driver .find_element (
1140+ by = By .ID ,
1141+ value = key_id ,
1142+ ).find_elements (by = By .CLASS_NAME , value = "grey-box" )
1143+ access_key = grey_boxes [0 ].text .strip ()
1144+ secret_key = grey_boxes [1 ].text .strip ()
1145+ return (access_key , secret_key )
1146+
1147+
10991148@_TIMEOUT_RETRY_DECORATOR
11001149@beartype
11011150def get_database_details (
@@ -1123,35 +1172,19 @@ def get_database_details(
11231172
11241173 access_keys_tab_item .click ()
11251174
1126- expected_key_boxes = 2
1127-
1128- long_wait .until (
1129- method = lambda d : all (
1130- len (
1131- boxes := d .find_element (
1132- by = By .ID ,
1133- value = key_id ,
1134- ).find_elements (by = By .CLASS_NAME , value = "grey-box" ),
1135- )
1136- >= expected_key_boxes
1137- and all (box .text .strip () for box in boxes [:expected_key_boxes ])
1138- for key_id in ("client-access-key" , "server-access-key" )
1139- ),
1175+ _wait_for_access_keys (
1176+ wait = long_wait ,
1177+ key_ids = ("client-access-key" , "server-access-key" ),
11401178 )
11411179
1142- client_grey_boxes = driver .find_element (
1143- by = By .ID ,
1144- value = "client-access-key" ,
1145- ).find_elements (by = By .CLASS_NAME , value = "grey-box" )
1146- client_access_key = client_grey_boxes [0 ].text .strip ()
1147- client_secret_key = client_grey_boxes [1 ].text .strip ()
1148-
1149- server_grey_boxes = driver .find_element (
1150- by = By .ID ,
1151- value = "server-access-key" ,
1152- ).find_elements (by = By .CLASS_NAME , value = "grey-box" )
1153- server_access_key = server_grey_boxes [0 ].text .strip ()
1154- server_secret_key = server_grey_boxes [1 ].text .strip ()
1180+ client_access_key , client_secret_key = _access_key_pair (
1181+ driver = driver ,
1182+ key_id = "client-access-key" ,
1183+ )
1184+ server_access_key , server_secret_key = _access_key_pair (
1185+ driver = driver ,
1186+ key_id = "server-access-key" ,
1187+ )
11551188
11561189 return {
11571190 "database_name" : database_name ,
@@ -1192,27 +1225,15 @@ def get_vumark_database_details(
11921225
11931226 access_keys_tab_item .click ()
11941227
1195- expected_key_boxes = 2
1196-
1197- long_wait .until (
1198- method = lambda d : (
1199- len (
1200- boxes := d .find_element (
1201- by = By .ID ,
1202- value = "server-access-key" ,
1203- ).find_elements (by = By .CLASS_NAME , value = "grey-box" ),
1204- )
1205- >= expected_key_boxes
1206- and all (box .text .strip () for box in boxes [:expected_key_boxes ])
1207- ),
1228+ _wait_for_access_keys (
1229+ wait = long_wait ,
1230+ key_ids = ("server-access-key" ,),
12081231 )
12091232
1210- server_grey_boxes = driver .find_element (
1211- by = By .ID ,
1212- value = "server-access-key" ,
1213- ).find_elements (by = By .CLASS_NAME , value = "grey-box" )
1214- server_access_key = server_grey_boxes [0 ].text .strip ()
1215- server_secret_key = server_grey_boxes [1 ].text .strip ()
1233+ server_access_key , server_secret_key = _access_key_pair (
1234+ driver = driver ,
1235+ key_id = "server-access-key" ,
1236+ )
12161237
12171238 return {
12181239 "database_name" : database_name ,
0 commit comments