forked from oscar.krause/fastapi-dls
improved tests
This commit is contained in:
parent
2663901988
commit
d91b81e50f
47
test/main.py
47
test/main.py
@ -1,9 +1,18 @@
|
|||||||
|
from base64 import b64encode as b64enc
|
||||||
|
from hashlib import sha256
|
||||||
|
from calendar import timegm
|
||||||
|
from datetime import datetime
|
||||||
|
from os.path import dirname, join
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from jose import jwt
|
from dateutil.relativedelta import relativedelta
|
||||||
|
from jose import jwt, jwk
|
||||||
|
from jose.constants import ALGORITHMS
|
||||||
from starlette.testclient import TestClient
|
from starlette.testclient import TestClient
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from app.util import generate_key, load_key
|
||||||
|
|
||||||
# add relative path to use packages as they were in the app/ dir
|
# add relative path to use packages as they were in the app/ dir
|
||||||
sys.path.append('../')
|
sys.path.append('../')
|
||||||
sys.path.append('../app')
|
sys.path.append('../app')
|
||||||
@ -13,6 +22,16 @@ from app import main
|
|||||||
client = TestClient(main.app)
|
client = TestClient(main.app)
|
||||||
|
|
||||||
ORIGIN_REF = str(uuid4())
|
ORIGIN_REF = str(uuid4())
|
||||||
|
SECRET = "HelloWorld"
|
||||||
|
|
||||||
|
# INSTANCE_KEY_RSA = generate_key()
|
||||||
|
# INSTANCE_KEY_PUB = INSTANCE_KEY_RSA.public_key()
|
||||||
|
|
||||||
|
INSTANCE_KEY_RSA = load_key(str(join(dirname(__file__), '../app/cert/instance.private.pem')))
|
||||||
|
INSTANCE_KEY_PUB = load_key(str(join(dirname(__file__), '../app/cert/instance.public.pem')))
|
||||||
|
|
||||||
|
jwt_encode_key = jwk.construct(INSTANCE_KEY_RSA.export_key().decode('utf-8'), algorithm=ALGORITHMS.RS256)
|
||||||
|
jwt_decode_key = jwk.construct(INSTANCE_KEY_PUB.export_key().decode('utf-8'), algorithm=ALGORITHMS.RS256)
|
||||||
|
|
||||||
|
|
||||||
def test_index():
|
def test_index():
|
||||||
@ -54,7 +73,7 @@ def test_auth_v1_origin():
|
|||||||
|
|
||||||
def test_auth_v1_code():
|
def test_auth_v1_code():
|
||||||
payload = {
|
payload = {
|
||||||
"code_challenge": "0wmaiAMAlTIDyz4Fgt2/j0tXnGv72TYbbLs4ISRCZlY",
|
"code_challenge": b64enc(sha256(SECRET.encode('utf-8')).digest()).rstrip(b'=').decode('utf-8'),
|
||||||
"origin_ref": ORIGIN_REF,
|
"origin_ref": ORIGIN_REF,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,7 +85,29 @@ def test_auth_v1_code():
|
|||||||
|
|
||||||
|
|
||||||
def test_auth_v1_token():
|
def test_auth_v1_token():
|
||||||
pass
|
cur_time = datetime.utcnow()
|
||||||
|
access_expires_on = cur_time + relativedelta(hours=1)
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"iat": timegm(cur_time.timetuple()),
|
||||||
|
"exp": timegm(access_expires_on.timetuple()),
|
||||||
|
"challenge": b64enc(sha256(SECRET.encode('utf-8')).digest()).rstrip(b'=').decode('utf-8'),
|
||||||
|
"origin_ref": ORIGIN_REF,
|
||||||
|
"key_ref": "00000000-0000-0000-0000-000000000000",
|
||||||
|
"kid": "00000000-0000-0000-0000-000000000000"
|
||||||
|
}
|
||||||
|
payload = {
|
||||||
|
"auth_code": jwt.encode(payload, key=jwt_encode_key, headers={'kid': payload.get('kid')},
|
||||||
|
algorithm=ALGORITHMS.RS256),
|
||||||
|
"code_verifier": SECRET,
|
||||||
|
}
|
||||||
|
|
||||||
|
response = client.post('/auth/v1/token', json=payload)
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
token = response.json()['auth_token']
|
||||||
|
payload = jwt.decode(token=token, key=jwt_decode_key, algorithms=ALGORITHMS.RS256, options={'verify_aud': False})
|
||||||
|
assert payload['origin_ref'] == ORIGIN_REF
|
||||||
|
|
||||||
|
|
||||||
def test_leasing_v1_lessor():
|
def test_leasing_v1_lessor():
|
||||||
|
Loading…
Reference in New Issue
Block a user