149 lines
5.4 KiB
Python
149 lines
5.4 KiB
Python
# -------------------------------
|
|
# --- TEST API serveru
|
|
import data as dta
|
|
import tst_data
|
|
import api_call
|
|
import json
|
|
import sys
|
|
from datetime import datetime
|
|
|
|
base_url="http://127.0.0.1:8000"
|
|
|
|
id_kas = "01" #pro testovani
|
|
username = "Kobrle" #identifikace zakazky
|
|
passwor ="heslo"
|
|
cenik = tst_data.create_tst_cenik(id_kas)
|
|
ucet = tst_data.create_tst_ucet(id_kas, True) #jen se @ polozkami, ready pro update
|
|
|
|
print(f'Cenik----------\n{cenik}\n')
|
|
print(f'Ucet-----------\n{ucet}\n')
|
|
|
|
# ----------------------------------------------------------
|
|
# prihlaseni a ziskani tokenu, id_kas a terminal client_id
|
|
client_id = "01"
|
|
ok, response, token = api_call.call_api( "POST", base_url = base_url, endpoint="/login/", client_id=client_id, json={"username": "Kobrle","password": "heslo"})
|
|
if ok:
|
|
token0000101 = (token:=response["access_token"]) #walrus ma nizsi prioritu, proto ()
|
|
refresh_token0000101 = (refresh_token:=response["refresh_token"])
|
|
print(f"\nPrihlaseni uspesne-------\n"
|
|
f" token= {token0000101}\n"
|
|
f" refr_token= {refresh_token0000101}\n{response}\n")
|
|
else:
|
|
print(f'Bad user name or password\n')
|
|
sys.exit(1) #ukonci program s chybovym kodem nebo bez sys muze byt quit()
|
|
|
|
|
|
|
|
# -----------------------------------------------------
|
|
# nacteni setupu pro pokladnu 09
|
|
id_kas = "01"
|
|
ok, response, token = api_call.call_api("GET", base_url = base_url, endpoint="/setup/", client_id="01", token=token0000101,
|
|
refresh_token=refresh_token0000101, params={"id_kas": id_kas} )
|
|
if ok:
|
|
print(f"\nSetup nacten OK-------\n{response}\n")
|
|
else:
|
|
print("Setup failed:\n", response)
|
|
sys.exit(1)
|
|
|
|
|
|
# ------------------------------------------------------
|
|
# zapis uctu na server, stejny client -> stejne tokeny
|
|
ucet.open_at = dta.now_clk_str()
|
|
payload = ucet.model_dump()
|
|
print(json.dumps(payload, indent=2, ensure_ascii=False))
|
|
errtoken = token
|
|
ok, resp, token = api_call.call_api("POST",base_url = base_url, endpoint="/ucet/", client_id="01", token=errtoken,
|
|
refresh_token=refresh_token, json=payload)
|
|
if ok:
|
|
print(f'\nUcet pridan OK-------\n{resp}\n')
|
|
#ucislo = resp # pro dalsi testy (radeji vezmes z dumpu
|
|
else:
|
|
print(f'\nAdd ucet fail')
|
|
sys.exit(1)
|
|
|
|
|
|
# -----------------------------------------------------
|
|
# vypis cislel vsech uctu
|
|
ok, resp, token = api_call.call_api(
|
|
"GET",
|
|
base_url,
|
|
"/ucty/",
|
|
client_id=client_id,
|
|
token=token,
|
|
refresh_token=refresh_token,
|
|
params={"id_kas": id_kas, "closed": "true", }
|
|
)
|
|
|
|
if not ok:
|
|
sys.exit("Nelze načíst účty")
|
|
|
|
# resp je rovnou list dict → Ucet
|
|
ucty = resp["ucty"]
|
|
print(ucty )
|
|
stul = ucty[-1]["stul"]
|
|
print(stul)
|
|
sys.exit(0)
|
|
# -----------------------------------------------------
|
|
# nacte zpet ucet z databaze na serveru dle cisla uctu, i uzavrene
|
|
print(f"\nbude se nacitat ucet s cislem stolu {stul}\n")
|
|
ok, resp, token = api_call.call_api("GET", base_url = base_url, endpoint="/ucet/", client_id=client_id, token=token, refresh_token=refresh_token,
|
|
params={"stul": stul, "block": True})
|
|
if ok:
|
|
print(f'\nNacteni uctu (zablokovaneho) z DB zpet OK--------\n{resp}\n')
|
|
else:
|
|
print(f'Nacteni uctu selhalo')
|
|
sys.exit(1)
|
|
|
|
ucet2 = dta.Ucet(**resp) # nacte ucet ze serveru a rozsirime o jednu polozku pro test
|
|
ucet2.poloz.append(
|
|
dta.UcPol(nazev="Pohar Kiwi", id_card=5, pocet=1, delitel=1, cena=139., dph='1.20', cenhlad='1'))
|
|
|
|
|
|
# -----------------------------------------------------
|
|
# provede update uctu na serveru
|
|
#token += "123" #simulace expirovaneho tokenu
|
|
ok, resp, token = api_call.call_api("POST", base_url = base_url, endpoint="/ucet/", client_id="01", token=token,
|
|
refresh_token=refresh_token, json=ucet2.model_dump())
|
|
if ok:
|
|
print(f'\nUpdate uctu v DB OK-----------\n{resp}\n')
|
|
else:
|
|
print(f'Ucet update fail')
|
|
sys.exit(1)
|
|
|
|
# -----------------------------------------------------
|
|
# nacte zpet ucet z databaze na serveru dle cisla uctu, i uzavrene
|
|
print(f"\nbude se nacitat ucet s cislem stolu {stul}\n")
|
|
ok, resp, token = api_call.call_api("GET", base_url = base_url, endpoint="/ucet/", client_id=client_id, token=token, refresh_token=refresh_token,
|
|
params={"stul": stul, "block": False})
|
|
if ok:
|
|
print(f'\nNacteni uctu (zablokovaneho) z DB zpet OK--------\n{resp}\n')
|
|
else:
|
|
print(f'Nacteni uctu selhalo')
|
|
sys.exit(1)
|
|
|
|
ucet2 = dta.Ucet(**resp) # nacte ucet ze serveru a rozsirime o jednu polozku pro test
|
|
ucet2.poloz.append(
|
|
dta.UcPol(nazev="Pohar Kiwi", id_card=5, pocet=1, delitel=1, cena=139., dph='1.20', cenhlad='1'))
|
|
|
|
|
|
ucet2.sumdph()
|
|
suma_czk = ucet2.total_czk()
|
|
print(f'{ucet2}\nCelkem:{suma_czk}')
|
|
|
|
|
|
# -----------------------------------------------------
|
|
# provede delete uctu na serveru s refresi tokenu
|
|
ok, resp, token = api_call.call_api("DELETE", base_url = base_url, endpoint="/ucet/", client_id="01",
|
|
token=token, refresh_token=refresh_token,params={"stul": stul} )
|
|
if ok:
|
|
print(f'\nDelete uctu v DB OK------------\n{resp}\n')
|
|
else:
|
|
print(f'Ucet delete fail')
|
|
sys.exit(1)
|
|
|
|
# ----------------------------------------------------
|
|
# zbyva dodelat testy manualniho blokovani
|
|
# kooperace nekolika klientu na jedne zakazce vcetne blokovani
|
|
# kooperace nekolika zakazek
|
|
|