Skip to content

Commit d2d6054

Browse files
adamtheturtleclaude
andcommitted
Read database access keys through one shared helper
Closes #1500 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YJDy3qA1LyNTh11zS98ukM
1 parent 7eda687 commit d2d6054

1 file changed

Lines changed: 67 additions & 46 deletions

File tree

src/vws_web_tools/__init__.py

Lines changed: 67 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -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
11011150
def 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

Comments
 (0)