freechat/json-api/client-tests/config.py
shockrah e8348918c4 + More qol like better __str__ methods everywhere
+ More error handling in case shit goes wrong
Basically handling more cases where some initial test could result in the whole
script exiting with code(1)
Not really that big of a deal since most tests after _that_ point will fail anyway
but the fix has revealed issues in the auth code magically so I'm keeping up with the new idea
that initial tests should have every resultant case validated to avoid weird behavior

> good code results in good results
who would have guessed
2021-05-08 02:07:32 -07:00

63 lines
1.6 KiB
Python

import subprocess
import os
import sys
import json
class Server:
def __init__(self, meta: dict):
self.url = meta.get('url')
self.wsurl = meta.get('wsurl')
self.serv_name = meta.get('name')
def __str__(self) -> str:
fields = {
'url': self.url,
'wsurl': self.wsurl,
'name': self.serv_name
}
return str(fields)
class Admin:
def __init__(self, user: dict, server: dict):
self.id = user.get('id')
self.name = user.get('name')
self.permissions = user.get('permissions')
self.secret = user.get('secret')
self.status = user.get('status')
self.jwt = None
self.server = Server(server)
def __str__(self) -> str:
acc = {
'id': self.id,
'name': self.name,
'permissions': self.permissions,
'secret': self.secret,
'jwt': self.jwt,
}
container = {'user': acc, 'server': str(server)}
return str(container)
def create_admin() -> Admin :
CARGO_BIN = os.getenv('CARGO_BIN')
proc = subprocess.run(
f'cargo run --release -- -c python-tester'.split(),
text=True, capture_output=True
)
try:
raw = json.loads(proc.stdout)
user = raw.get('user')
server = raw.get('server')
if user is None or server is None:
print(f'User/Server Data was not serializable => raw', file=sys.stderr)
return None
else:
return Admin(user, server)
except Exception as e:
print(f'General exception caught in parsing => {e}', file=sys.stderr)
return None