[test] add default DEBUG flag for pytest, add tests for jwt_middleware
This commit is contained in:
parent
55ebe0bbdd
commit
13ac878a7c
|
@ -44,10 +44,11 @@ class JWTUser(BaseUser):
|
|||
self.payload = payload
|
||||
|
||||
def __str__(self):
|
||||
if len(self.__id) > 0:
|
||||
return self.__id
|
||||
else:
|
||||
return 'no id'
|
||||
return str({
|
||||
'id' : str(self.__id),
|
||||
'token': self.token,
|
||||
'payload': self.payload
|
||||
})
|
||||
@property
|
||||
def is_authenticated(self) -> bool:
|
||||
return True
|
||||
|
|
|
@ -2,3 +2,5 @@
|
|||
testpaths = tests halfapi
|
||||
addopts = --doctest-modules
|
||||
doctest_optionflags = ELLIPSIS
|
||||
env =
|
||||
DEBUG=TRUE
|
||||
|
|
|
@ -2,28 +2,55 @@ import jwt
|
|||
import requests
|
||||
import pytest
|
||||
import json
|
||||
from json.decoder import JSONDecodeError
|
||||
import sys
|
||||
from hashlib import sha256
|
||||
from halfapi.app import app
|
||||
from base64 import b64decode
|
||||
from starlette.testclient import TestClient
|
||||
|
||||
from halfapi.app import app
|
||||
from halfapi.lib.jwt_middleware import (JWTUser, JWTAuthenticationBackend,
|
||||
JWTWebSocketAuthenticationBackend)
|
||||
|
||||
def coucou():
|
||||
return
|
||||
def test_connected():
|
||||
app.route('/', coucou)
|
||||
|
||||
def test_token():
|
||||
# This test needs to have a running auth-lirmm on 127.0.0.1:3000
|
||||
@pytest.fixture
|
||||
def token():
|
||||
# This fixture needs to have a running auth-lirmm on 127.0.0.1:3000
|
||||
# Sets a valid token
|
||||
|
||||
r = requests.post('http://127.0.0.1:3000/',
|
||||
data={'email':'maizi', 'password':'a'})
|
||||
|
||||
assert len(r.text) > 0
|
||||
if len(r.text) <= 0:
|
||||
raise Exception('No result in token retrieval')
|
||||
|
||||
try:
|
||||
res = json.loads(r.text)
|
||||
assert 'token' in res.keys()
|
||||
sys.stderr.write(f'Token : {res["token"]}\n')
|
||||
secret = open('/etc/half_orm/secret').readline()
|
||||
sys.stderr.write(f'Secret : {secret}\n')
|
||||
assert jwt.decode(
|
||||
res['token'],
|
||||
secret, algorithms=['HS256'])
|
||||
except JSONDecodeError:
|
||||
raise Exception('Malformed response from token retrieval')
|
||||
|
||||
if 'token' not in res.keys():
|
||||
raise Exception('Missing token in token request')
|
||||
|
||||
return res['token']
|
||||
|
||||
|
||||
def test_token(token):
|
||||
client = TestClient(app)
|
||||
|
||||
r = client.get('/user', headers={'Authorization':token})
|
||||
res = False
|
||||
try:
|
||||
res = json.loads(r.text)
|
||||
except JSONDecodeError:
|
||||
raise Exception('Malformed response from /user request')
|
||||
|
||||
assert 'user' in res.keys()
|
||||
print(res['user'])
|
||||
assert 'id' in res['user'].keys()
|
||||
assert 'token' in res['user'].keys()
|
||||
assert 'payload' in res['user'].keys()
|
||||
|
|
Loading…
Reference in New Issue