old_console/license_info/tests/test_middleware.py
2024-11-02 14:12:45 +03:00

73 lines
2.4 KiB
Python

import pytest
from django.contrib.auth.models import User
from django.core.handlers.wsgi import WSGIRequest
from django.http import HttpResponseRedirect
from django.test import RequestFactory
from django.urls import reverse
from unittest.mock import patch
from core.middleware import LicenseMiddleware
from license_info.tests.test_tools import FULL_LICENSE
@pytest.mark.django_db
class TestMiddleware:
def setup_class(self):
"""Prepare"""
self.factory = RequestFactory()
self.middleware = LicenseMiddleware(lambda x: x)
@pytest.fixture
def prepare_user(self):
return User.objects.create_user("test_user", "name@name.com", "password")
@pytest.fixture
def prepare_request(self, prepare_user):
def _inner(url):
request = self.factory.get(reverse(url))
request.user = prepare_user
return request
return _inner
@pytest.fixture
def process_request(self, prepare_user, prepare_request):
"""Send prepared request throw out middleware"""
def _inner(url):
return self.middleware(prepare_request(url))
return _inner
@pytest.mark.unit
@patch("core.middleware.get_license_info")
def test_has_license(self, mock_function, prepare_user, prepare_request, process_request):
"""Check that we have license in response from our middleware"""
mock_function.return_value = FULL_LICENSE
response = process_request("index")
assert response.license == FULL_LICENSE
# TODO: check how it is working now and fix this
@pytest.mark.unit
@patch("core.middleware.get_license_info")
@pytest.mark.skip
def test_has_no_license(self, mock_function, prepare_user, prepare_request, process_request):
"""Check that we have a redirect if no license found"""
mock_function.return_value = None
response = process_request("index")
assert isinstance(response, HttpResponseRedirect)
@pytest.mark.unit
@patch("core.middleware.get_license_info")
def test_has_no_license_activation(self, mock_function, prepare_user, prepare_request, process_request):
"""Check that we have a normal response if we call license URL and no license found"""
mock_function.return_value = None
response = process_request("license_activation")
assert isinstance(response, WSGIRequest)