1
0
mirror of https://gitlab.com/animath/si/plateforme-corres2math.git synced 2025-06-21 14:38:21 +02:00

Cover also settings files, keep 100% coverage by ignoring production files

This commit is contained in:
Yohann D'ANELLO
2020-11-03 19:13:33 +01:00
parent fa368a399a
commit 1ddf39f296
11 changed files with 75 additions and 35 deletions

View File

@ -6,7 +6,7 @@ _client = None
def get_sympa_client():
global _client
if _client is None:
if os.getenv("SYMPA_PASSWORD", None) is not None:
if os.getenv("SYMPA_PASSWORD", None) is not None: # pragma: no cover
from sympasoap import Client
_client = Client("https://" + os.getenv("SYMPA_URL"))
_client.login(os.getenv("SYMPA_EMAIL"), os.getenv("SYMPA_PASSWORD"))

View File

@ -22,7 +22,7 @@ class Matrix:
_device_id: str = None
@classmethod
async def _get_client(cls) -> Union[AsyncClient, "FakeMatrixClient"]:
async def _get_client(cls) -> Union[AsyncClient, "FakeMatrixClient"]: # pragma: no cover
"""
Retrieve the bot account.
If not logged, log in and store access token.
@ -133,7 +133,8 @@ class Matrix:
If left as ``None``, some servers might refuse the upload.
"""
client = await cls._get_client()
return await client.upload(data_provider, content_type, filename, encrypt, monitor, filesize)
return await client.upload(data_provider, content_type, filename, encrypt, monitor, filesize) \
if isinstance(client, AsyncClient) else UploadResponse("debug mode"), None
@classmethod
@async_to_sync
@ -219,9 +220,7 @@ class Matrix:
"""
client = await cls._get_client()
resp: RoomResolveAliasResponse = await client.room_resolve_alias(room_alias)
if isinstance(resp, RoomResolveAliasResponse):
return resp.room_id
return None
return resp.room_id if isinstance(resp, RoomResolveAliasResponse) else None
@classmethod
@async_to_sync
@ -291,7 +290,7 @@ class Matrix:
@classmethod
@async_to_sync
async def set_room_power_level(cls, room_id: str, user_id: str, power_level: int)\
-> Union[RoomPutStateResponse, RoomPutStateError]:
-> Union[RoomPutStateResponse, RoomPutStateError]: # pragma: no cover
"""
Put a given power level to a user in a certain room.
@ -306,6 +305,9 @@ class Matrix:
power_level (int): The target power level to give.
"""
client = await cls._get_client()
if isinstance(client, FakeMatrixClient):
return RoomPutStateError("debug mode")
if room_id.startswith("#"):
room_id = await cls.resolve_room_alias(room_id)
resp = await client.room_get_state_event(room_id, "m.room.power_levels")
@ -316,7 +318,7 @@ class Matrix:
@classmethod
@async_to_sync
async def set_room_power_level_event(cls, room_id: str, event: str, power_level: int)\
-> Union[RoomPutStateResponse, RoomPutStateError]:
-> Union[RoomPutStateResponse, RoomPutStateError]: # pragma: no cover
"""
Define the minimal power level to have to send a certain event type
in a given room.
@ -332,6 +334,9 @@ class Matrix:
power_level (int): The target power level to give.
"""
client = await cls._get_client()
if isinstance(client, FakeMatrixClient):
return RoomPutStateError("debug mode")
if room_id.startswith("#"):
room_id = await cls.resolve_room_alias(room_id)
resp = await client.room_get_state_event(room_id, "m.room.power_levels")

View File

@ -21,19 +21,13 @@ def get_current_user() -> User:
return getattr(_thread_locals, USER_ATTR_NAME, None)
def get_current_session() -> SessionStore:
return getattr(_thread_locals, SESSION_ATTR_NAME, None)
def get_current_ip() -> str:
return getattr(_thread_locals, IP_ATTR_NAME, None)
def get_current_authenticated_user():
current_user = get_current_user()
if isinstance(current_user, AnonymousUser):
return None
return current_user
return None if isinstance(current_user, AnonymousUser) else current_user
class SessionMiddleware(object):
@ -49,10 +43,7 @@ class SessionMiddleware(object):
request.user = User.objects.get(pk=request.session["_fake_user_id"])
user = request.user
if 'HTTP_X_REAL_IP' in request.META:
ip = request.META.get('HTTP_X_REAL_IP')
else:
ip = request.META.get('REMOTE_ADDR')
ip = request.META.get('HTTP_X_REAL_IP' if 'HTTP_X_REAL_IP' in request.META else 'REMOTE_ADDR')
_set_current_user_and_ip(user, request.session, ip)
response = self.get_response(request)
@ -61,7 +52,7 @@ class SessionMiddleware(object):
return response
class TurbolinksMiddleware(object):
class TurbolinksMiddleware(object): # pragma: no cover
"""
Send the `Turbolinks-Location` header in response to a visit that was redirected,
and Turbolinks will replace the browser's topmost history entry.

View File

@ -195,7 +195,7 @@ HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
_db_type = os.getenv('DJANGO_DB_TYPE', 'sqlite').lower()
if _db_type == 'mysql' or _db_type.startswith('postgres') or _db_type == 'psql':
if _db_type == 'mysql' or _db_type.startswith('postgres') or _db_type == 'psql': # pragma: no cover
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql' if _db_type == 'mysql' else 'django.db.backends.postgresql_psycopg2',
@ -214,7 +214,7 @@ else:
}
}
if os.getenv("CORRES2MATH_STAGE", "dev") == "prod":
if os.getenv("CORRES2MATH_STAGE", "dev") == "prod": # pragma: no cover
from .settings_prod import * # noqa: F401,F403
else:
from .settings_dev import * # noqa: F401,F403

24
corres2math/tests.py Normal file
View File

@ -0,0 +1,24 @@
import os
from django.core.handlers.asgi import ASGIHandler
from django.core.handlers.wsgi import WSGIHandler
from django.test import TestCase
class TestLoadModules(TestCase):
"""
Load modules that are not used in development mode in order to increase coverage.
"""
def test_asgi(self):
from corres2math import asgi
self.assertTrue(isinstance(asgi.application, ASGIHandler))
def test_wsgi(self):
from corres2math import wsgi
self.assertTrue(isinstance(wsgi.application, WSGIHandler))
def test_load_production_settings(self):
os.putenv("CORRES2MATH_STAGE", "prod")
os.putenv("DJANGO_DB_TYPE", "postgres")
from corres2math import settings_prod
self.assertFalse(settings_prod.DEBUG)