def test_encode_and_decode():
    payload = {
        'example': 'payload',
    }

    token = token_validation.encode_token(payload, PRIVATE_KEY)
    assert payload == token_validation.decode_token(token, PUBLIC_KEY)
def test_invalid_token_header_no_user():
    expiry = delorean.parse('2018-05-17 13:47:34').datetime
    payload = {
        'exp': expiry,
    }
    token = token_validation.encode_token(payload, PRIVATE_KEY)
    token = token.decode('utf8')
    header = f'Bearer {token}'
    result = token_validation.validate_token_header(header, PUBLIC_KEY)
    assert not result
def test_invalid_token_header_not_expiry_time():
    payload = {
        'user': {
            'name': 'homer',
            'id': 1,
        },
    }
    token = token_validation.encode_token(payload, PRIVATE_KEY)
    token = token.decode('utf8')
    header = f'Bearer {token}'
    result = token_validation.validate_token_header(header, PUBLIC_KEY)
    assert not result
def test_invalid_token_header_expired():
    expiry = delorean.parse('2018-05-17 13:47:33').datetime
    payload = {
        'user': {
            'username': '******',
            'id': 1,
        },
        'exp': expiry,
    }
    token = token_validation.encode_token(payload, PRIVATE_KEY)
    token = token.decode('utf8')
    header = f'Bearer {token}'
    result = token_validation.validate_token_header(header, PUBLIC_KEY)
    assert not result