import os from unittest import TestCase from unittest import mock from paperless.settings import _parse_paperless_url from paperless.settings import default_threads_per_worker class TestThreadCalculation(TestCase): def test_workers_threads(self) -> None: """ GIVEN: - Certain CPU counts WHEN: - Threads per worker is calculated THEN: - Threads per worker less than or equal to CPU count - At least 1 thread per worker """ default_workers = 1 for i in range(1, 64): with mock.patch( "paperless.settings.multiprocessing.cpu_count", ) as cpu_count: cpu_count.return_value = i default_threads = default_threads_per_worker(default_workers) self.assertGreaterEqual(default_threads, 1) self.assertLessEqual(default_workers * default_threads, i) class TestPaperlessURLSettings(TestCase): def test_paperless_url(self) -> None: """ GIVEN: - PAPERLESS_URL is set WHEN: - The URL is parsed THEN: - The URL is returned and present in related settings """ with mock.patch.dict( os.environ, { "PAPERLESS_URL": "https://example.com", }, ): url = _parse_paperless_url() self.assertEqual("https://example.com", url) from django.conf import settings self.assertIn(url, settings.CSRF_TRUSTED_ORIGINS) self.assertIn(url, settings.CORS_ALLOWED_ORIGINS)