21 lines
1.5 KiB
Python
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)}))
|