Files
IKAR/tool/cleanup_test_accounts.py
T

21 lines
1.5 KiB
Python

"""Delete only the reserved identities created by this release's tests."""
from pathlib import Path
import json,sqlite3,urllib.request,uuid
root=Path('/mnt/data/ikar_server')
with sqlite3.connect(f'file:{root / "shared/data/ikar.db"}?mode=ro',uri=True) as db:
candidates=db.execute('select Id,NormalizedPhoneNumber,DisplayName from Users where IsBot=0 and IsBlocked=0').fetchall()
# The compatibility layer stores the last ten digits. Other smoke-test clients
# delete their own accounts in their finally blocks; only this emulator remains.
ids=[user_id for user_id,phone,name in candidates if phone=='2025550101' and name=='IKAR']
if ids:
settings=dict(line.split('=',1) for line in (root/'shared/server.env').read_text().splitlines() if '=' in line)
body=json.dumps({'username':settings['Admin__Username'],'password':settings['Admin__Password']}).encode()
request=urllib.request.Request('http://127.0.0.1:5099/admin/api/session/login',data=body,headers={'Content-Type':'application/json'})
with urllib.request.urlopen(request,timeout=15) as response:
cookies='; '.join(value.split(';',1)[0] for value in response.headers.get_all('Set-Cookie',[]))
assert cookies and response.status==204
for user_id in ids:
request=urllib.request.Request(f'http://127.0.0.1:5099/admin/api/users/{uuid.UUID(user_id)}',method='DELETE',headers={'Cookie':cookies})
with urllib.request.urlopen(request,timeout=15) as response: assert response.status==204
print(json.dumps({'reservedTestAccountsDeleted':len(ids)}))