73 lines
2.4 KiB
Python
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)
|