Build reusable bot framework
This commit is contained in:
77
tests/unit/conftest.py
Normal file
77
tests/unit/conftest.py
Normal file
@@ -0,0 +1,77 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user