Untitled

 avatar
unknown
python
a year ago
2.2 kB
4
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