78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
"""Small import fallbacks for running focused tests without optional services."""
|
|
|
|
import sys
|
|
import types
|
|
|
|
|
|
try:
|
|
import psycopg2 # noqa: F401
|
|
except ModuleNotFoundError:
|
|
psycopg2 = types.ModuleType("psycopg2")
|
|
extras = types.ModuleType("psycopg2.extras")
|
|
errors = types.ModuleType("psycopg2.errors")
|
|
|
|
class Json:
|
|
def __init__(self, adapted):
|
|
self.adapted = adapted
|
|
|
|
class RealDictCursor:
|
|
pass
|
|
|
|
class UniqueViolation(Exception):
|
|
pass
|
|
|
|
def connect(**_kwargs):
|
|
raise AssertionError("Tests must mock PostgreSQL connections")
|
|
|
|
def execute_values(*_args, **_kwargs):
|
|
raise AssertionError("Tests must mock bulk PostgreSQL writes")
|
|
|
|
extras.Json = Json
|
|
extras.RealDictCursor = RealDictCursor
|
|
extras.execute_values = execute_values
|
|
errors.UniqueViolation = UniqueViolation
|
|
psycopg2.connect = connect
|
|
psycopg2.extras = extras
|
|
psycopg2.errors = errors
|
|
sys.modules["psycopg2"] = psycopg2
|
|
sys.modules["psycopg2.extras"] = extras
|
|
sys.modules["psycopg2.errors"] = errors
|
|
|
|
|
|
try:
|
|
import bcrypt # noqa: F401
|
|
except ModuleNotFoundError:
|
|
bcrypt = types.ModuleType("bcrypt")
|
|
|
|
def unavailable(*_args, **_kwargs):
|
|
raise AssertionError("Tests exercising bcrypt require project dependencies")
|
|
|
|
bcrypt.gensalt = unavailable
|
|
bcrypt.hashpw = unavailable
|
|
bcrypt.checkpw = unavailable
|
|
sys.modules["bcrypt"] = bcrypt
|
|
|
|
|
|
try:
|
|
import jwt # noqa: F401
|
|
except ModuleNotFoundError:
|
|
jwt = types.ModuleType("jwt")
|
|
exceptions = types.ModuleType("jwt.exceptions")
|
|
|
|
class ExpiredSignatureError(Exception):
|
|
pass
|
|
|
|
class InvalidTokenError(Exception):
|
|
pass
|
|
|
|
def unavailableJwt(*_args, **_kwargs):
|
|
raise AssertionError("Tests exercising JWT encoding require project dependencies")
|
|
|
|
jwt.encode = unavailableJwt
|
|
jwt.decode = unavailableJwt
|
|
exceptions.ExpiredSignatureError = ExpiredSignatureError
|
|
exceptions.InvalidTokenError = InvalidTokenError
|
|
jwt.exceptions = exceptions
|
|
sys.modules["jwt"] = jwt
|
|
sys.modules["jwt.exceptions"] = exceptions
|