Layed groundwork for microservice split
This commit is contained in:
parent
e2003442e2
commit
0b048eb8b0
44 changed files with 461 additions and 259 deletions
71
common/tests/admin.py
Normal file
71
common/tests/admin.py
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
import requests
|
||||
|
||||
|
||||
class RbClient:
|
||||
def __init__(self, username = "admin", password = "password", base_url = "http://localhost:8000/api"):
|
||||
self.username = username
|
||||
self.password = password
|
||||
self.base_url = base_url
|
||||
|
||||
self.jwt = None
|
||||
self.refresh_token = None
|
||||
|
||||
def _login(self):
|
||||
r = requests.post(f"{self.base_url}/auth/login", json={
|
||||
"username": self.username,
|
||||
"password": self.password,
|
||||
})
|
||||
|
||||
if r.status_code != 200:
|
||||
print(r.text)
|
||||
raise Exception("Couldn't login")
|
||||
|
||||
res = r.json()
|
||||
self.jwt = res["token"]
|
||||
self.refresh_token = res["refreshToken"]
|
||||
|
||||
def _refresh(self):
|
||||
r = requests.post(f"{self.base_url}/auth/refresh", json={"refreshToken": self.refresh_token})
|
||||
|
||||
if r.status_code != 200:
|
||||
raise Exception("Couldn't refresh")
|
||||
|
||||
res = r.json()
|
||||
self.jwt = res["token"]
|
||||
self.refresh_token = res["refreshToken"]
|
||||
|
||||
def _request(self, type_, url, retry=2, *args, **kwargs):
|
||||
if self.jwt:
|
||||
headers = kwargs.get("headers", {})
|
||||
headers["Authorization"] = f"Bearer {self.jwt}"
|
||||
kwargs["headers"] = headers
|
||||
print(kwargs["headers"])
|
||||
|
||||
r = requests.request(type_, url, *args, **kwargs)
|
||||
|
||||
if r.status_code != 200 and retry > 0:
|
||||
if self.refresh_token:
|
||||
self._refresh()
|
||||
|
||||
else:
|
||||
self._login()
|
||||
|
||||
r = self._request(type_, url, *args, **kwargs, retry=retry - 1)
|
||||
|
||||
return r
|
||||
|
||||
def get(self, url, *args, **kwargs):
|
||||
return self._request("GET", f"{self.base_url}{url}", *args, **kwargs)
|
||||
|
||||
def post(self, url, *args, **kwargs):
|
||||
return self._request("POST", f"{self.base_url}{url}", *args, **kwargs)
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
client = RbClient()
|
||||
|
||||
# print(client.get("/admin/users").json())
|
||||
client.post("/sections", json={
|
||||
"title": "this is a title"
|
||||
})
|
||||
Reference in a new issue