Untitled
unknown
python
a year ago
2.2 kB
7
Indexable
import pytest
from datetime import datetime, timedelta
from app import app, db
from models import User
import jwt
@pytest.fixture
def client():
app.config['TESTING'] = True
with app.test_client() as client:
with app.app_context():
# Initialize the database here if needed
db.create_all()
yield client
with app.app_context():
db.drop_all()
@pytest.fixture
def test_user():
user = User(username='testuser', password='password123')
db.session.add(user)
db.session.commit()
return user
@pytest.fixture
def valid_token(test_user):
return jwt.encode(
{'id': test_user.id, 'exp': datetime.utcnow() + timedelta(minutes=5)},
app.config['SECRET_KEY'],
algorithm='HS256'
)
@pytest.fixture
def expired_token(test_user):
return jwt.encode(
{'id': test_user.id, 'exp': datetime.utcnow() - timedelta(minutes=1)},
app.config['SECRET_KEY'],
algorithm='HS256'
)
@pytest.fixture
def invalid_token(valid_token):
return valid_token + "some_invalid_part"
def test_no_authorization_header(client):
response = client.get('/api/users/1')
assert response.status_code == 401
assert b'Authorization header is missing' in response.data
def test_missing_token(client):
response = client.get('/api/users/1', headers={'Authorization': 'Bearer '})
assert response.status_code == 401
assert b'Token is missing' in response.data
def test_expired_token(client, expired_token):
response = client.get('/api/users/1', headers={'Authorization': f'Bearer {expired_token}'})
assert response.status_code == 401
assert b'Token expired' in response.data
def test_invalid_token(client, invalid_token):
response = client.get('/api/users/1', headers={'Authorization': f'Bearer {invalid_token}'})
assert response.status_code == 401
assert b'Invalid token' in response.data
def test_valid_token(client, valid_token):
response = client.get('/api/users/1', headers={'Authorization': f'Bearer {valid_token}'})
assert response.status_code == 200
assert b'testuser' in response.data
Editor is loading...
Leave a Comment