mirror of
				https://gitea.publichub.eu/oscar.krause/fastapi-dls.git
				synced 2025-11-04 03:16:07 +00:00 
			
		
		
		
	improved tests
This commit is contained in:
		
							
								
								
									
										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 jose import jwt
 | 
			
		||||
from dateutil.relativedelta import relativedelta
 | 
			
		||||
from jose import jwt, jwk
 | 
			
		||||
from jose.constants import ALGORITHMS
 | 
			
		||||
from starlette.testclient import TestClient
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
from app.util import generate_key, load_key
 | 
			
		||||
 | 
			
		||||
# add relative path to use packages as they were in the app/ dir
 | 
			
		||||
sys.path.append('../')
 | 
			
		||||
sys.path.append('../app')
 | 
			
		||||
@@ -13,6 +22,16 @@ from app import main
 | 
			
		||||
client = TestClient(main.app)
 | 
			
		||||
 | 
			
		||||
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():
 | 
			
		||||
@@ -54,7 +73,7 @@ def test_auth_v1_origin():
 | 
			
		||||
 | 
			
		||||
def test_auth_v1_code():
 | 
			
		||||
    payload = {
 | 
			
		||||
        "code_challenge": "0wmaiAMAlTIDyz4Fgt2/j0tXnGv72TYbbLs4ISRCZlY",
 | 
			
		||||
        "code_challenge": b64enc(sha256(SECRET.encode('utf-8')).digest()).rstrip(b'=').decode('utf-8'),
 | 
			
		||||
        "origin_ref": ORIGIN_REF,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -66,7 +85,29 @@ def test_auth_v1_code():
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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():
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user