0004-Fix-multitenant-tests-under-django-3.2.patch
hobo/multitenant/settings.py | ||
---|---|---|
29 | 29 | |
30 | 30 |
class TenantSettingsWrapper: |
31 | 31 |
local = threading.local() |
32 |
# Uppercase is necessary for properties |
|
33 |
# accessed via settings.FOO |
|
34 |
# because django 3 raises an error |
|
35 |
# when trying to access a non-uppercase setting value |
|
32 | 36 | |
33 | 37 |
def __init__(self, default_settings): |
34 | 38 |
self.__dict__['tenants_settings'] = {} |
35 | 39 |
self.__dict__['default_settings'] = default_settings |
36 | 40 | |
37 |
def clear_tenants_settings(self):
|
|
41 |
def CLEAR_TENANTS_SETTINGS(self):
|
|
38 | 42 |
self.__dict__['tenants_settings'] = {} |
39 | 43 | |
40 | 44 |
@property |
tests_multitenant/test_middleware.py | ||
---|---|---|
22 | 22 |
settings.DEBUG_PROPAGATE_EXCEPTIONS = False |
23 | 23 |
app.get('/?raise', status=404) |
24 | 24 |
response = app.get('/?raise', status=500, extra_environ={'HTTP_HOST': tenants[0].domain_url}) |
25 |
assert response.text == '<h1>Server Error (500)</h1>'
|
|
25 |
assert 'Server Error (500)' in response.text
|
|
26 | 26 | |
27 | 27 |
settings.INTERNAL_IPS = ['127.0.0.1'] |
28 | 28 | |
29 | 29 |
response = app.get('/?raise', status=500, extra_environ={'HTTP_HOST': tenants[0].domain_url}) |
30 |
assert 'You\'re seeing this error because you have' in response.text
|
|
30 |
assert 'seeing this error because you have' in response.text |
|
31 | 31 | |
32 | 32 | |
33 | 33 |
def test_samesite_middleware(app, tenants, settings): |
tests_multitenant/test_settings.py | ||
---|---|---|
39 | 39 | |
40 | 40 | |
41 | 41 |
def test_tenant_json_settings(tenants, settings): |
42 |
settings.clear_tenants_settings()
|
|
42 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
43 | 43 | |
44 | 44 |
with utilities.patch_default_settings( |
45 | 45 |
settings, TENANT_SETTINGS_LOADERS=('hobo.multitenant.settings_loaders.SettingsJSON',) |
... | ... | |
67 | 67 | |
68 | 68 | |
69 | 69 |
def test_tenant_template_vars(tenants, settings, client): |
70 |
django.conf.settings.clear_tenants_settings()
|
|
70 |
django.conf.settings.CLEAR_TENANTS_SETTINGS()
|
|
71 | 71 | |
72 | 72 |
with utilities.patch_default_settings( |
73 | 73 |
settings, TENANT_SETTINGS_LOADERS=('hobo.multitenant.settings_loaders.TemplateVars',) |
... | ... | |
99 | 99 | |
100 | 100 | |
101 | 101 |
def test_tenant_settings_vars(tenants, settings, client): |
102 |
django.conf.settings.clear_tenants_settings()
|
|
102 |
django.conf.settings.CLEAR_TENANTS_SETTINGS()
|
|
103 | 103 | |
104 | 104 |
with utilities.patch_default_settings( |
105 | 105 |
settings, TENANT_SETTINGS_LOADERS=('hobo.multitenant.settings_loaders.SettingsVars',) |
... | ... | |
127 | 127 | |
128 | 128 | |
129 | 129 |
def test_tenant_cors_settings(tenants, settings, client): |
130 |
settings.clear_tenants_settings()
|
|
130 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
131 | 131 | |
132 | 132 |
with utilities.patch_default_settings( |
133 | 133 |
settings, TENANT_SETTINGS_LOADERS=('hobo.multitenant.settings_loaders.CORSSettings',) |
... | ... | |
148 | 148 | |
149 | 149 | |
150 | 150 |
def test_tenant_theme_settings(tenants, settings, client): |
151 |
django.conf.settings.clear_tenants_settings()
|
|
151 |
django.conf.settings.CLEAR_TENANTS_SETTINGS()
|
|
152 | 152 | |
153 | 153 |
with utilities.patch_default_settings( |
154 | 154 |
settings, |
... | ... | |
183 | 183 |
def test_known_services(tenants, settings): |
184 | 184 |
from hobo.multitenant.settings_loaders import KnownServices |
185 | 185 | |
186 |
settings.clear_tenants_settings()
|
|
186 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
187 | 187 |
settings.SETTINGS_MODULE = 'fake.settings' |
188 | 188 | |
189 | 189 |
for tenant in tenants: |
... | ... | |
224 | 224 | |
225 | 225 |
def test_legacy_urls_mapping(tenants, settings): |
226 | 226 | |
227 |
settings.clear_tenants_settings()
|
|
227 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
228 | 228 |
settings.SETTINGS_MODULE = 'fake.settings' |
229 | 229 | |
230 | 230 |
for tenant in tenants: |
... | ... | |
235 | 235 | |
236 | 236 | |
237 | 237 |
def test_unique_cookies(tenants, settings): |
238 |
settings.clear_tenants_settings()
|
|
238 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
239 | 239 | |
240 | 240 |
cookie_names = set() |
241 | 241 |
for tenant in tenants: |
... | ... | |
247 | 247 | |
248 | 248 | |
249 | 249 |
def test_tenant_json_settings_reload(tenants, settings, freezer): |
250 |
settings.clear_tenants_settings()
|
|
250 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
251 | 251 | |
252 | 252 |
with utilities.patch_default_settings( |
253 | 253 |
settings, TENANT_SETTINGS_LOADERS=('hobo.multitenant.settings_loaders.SettingsJSON',) |
tests_multitenant/test_tenant_command.py | ||
---|---|---|
49 | 49 |
def test_all_tenants_disable_cron(handle, tenants, settings): |
50 | 50 |
from django.core.management import execute_from_command_line |
51 | 51 | |
52 |
settings.clear_tenants_settings()
|
|
52 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
53 | 53 |
settings.DISABLE_CRON_JOBS = True |
54 | 54 |
handle.side_effect = RecordTenant() |
55 | 55 |
execute_from_command_line(['manage.py', 'tenant_command', 'clearsessions', '--all-tenants']) |
... | ... | |
61 | 61 |
def test_all_tenants_disable_cron_for_specific_tenant(handle, tenants, settings): |
62 | 62 |
from django.core.management import execute_from_command_line |
63 | 63 | |
64 |
settings.clear_tenants_settings()
|
|
64 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
65 | 65 |
disabled_tenant = tenants[0] |
66 | 66 |
with open(os.path.join(disabled_tenant.get_directory(), 'settings.json'), 'w') as fd: |
67 | 67 |
json.dump( |
... | ... | |
78 | 78 |
def test_all_tenants_global_disable_cron_with_force_job(handle, tenants, settings): |
79 | 79 |
from django.core.management import execute_from_command_line |
80 | 80 | |
81 |
settings.clear_tenants_settings()
|
|
81 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
82 | 82 |
settings.DISABLE_CRON_JOBS = True |
83 | 83 |
handle.side_effect = RecordTenant() |
84 | 84 |
execute_from_command_line( |
tests_multitenant/test_threading.py | ||
---|---|---|
18 | 18 | |
19 | 19 |
import django.conf |
20 | 20 |
import utilities |
21 |
from django.core.cache import cache, caches
|
|
21 |
from django.core.cache import cache |
|
22 | 22 |
from tenant_schemas.utils import tenant_context |
23 | 23 | |
24 | 24 | |
25 | 25 |
def test_thread(tenants, settings, client): |
26 | 26 | |
27 |
settings.clear_tenants_settings()
|
|
27 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
28 | 28 |
with utilities.patch_default_settings( |
29 | 29 |
settings, TENANT_SETTINGS_LOADERS=('hobo.multitenant.settings_loaders.TemplateVars',) |
30 | 30 |
): |
31 | 31 | |
32 | 32 |
def f(tenant=None): |
33 | 33 |
if tenant is not None: |
34 |
assert hasattr(settings, 'TEMPLATE_VARS') |
|
35 |
assert settings.TEMPLATE_VARS['test_url'] == tenant.get_base_url() |
|
34 |
with tenant_context(tenant): |
|
35 |
assert hasattr(settings, 'TEMPLATE_VARS') |
|
36 |
assert settings.TEMPLATE_VARS['test_url'] == tenant.get_base_url() |
|
36 | 37 |
else: |
37 | 38 |
assert not hasattr(django.conf.settings, 'TEMPLATE_VARS') |
38 | 39 | |
... | ... | |
56 | 57 | |
57 | 58 |
def test_cache(tenants, client): |
58 | 59 |
# Clear caches |
59 |
caches._caches.caches = {}
|
|
60 |
cache.clear()
|
|
60 | 61 | |
61 | 62 |
cache.set('coin', 1) |
62 | 63 | |
... | ... | |
68 | 69 |
assert cache.get('coin') == 1 |
69 | 70 | |
70 | 71 |
for tenant in tenants: |
71 |
with tenant_context(tenant): |
|
72 | 72 | |
73 |
def f(): |
|
73 |
def f(): |
|
74 |
with tenant_context(tenant): |
|
74 | 75 |
assert cache.get('coin') == tenant.domain_url |
75 | 76 | |
76 |
t1 = threading.Thread(target=f)
|
|
77 |
t1.start()
|
|
77 |
t1 = threading.Thread(target=f) |
|
78 |
t1.start() |
|
78 | 79 |
t1.join() |
79 | 80 | |
80 | 81 |
def g(): |
... | ... | |
86 | 87 | |
87 | 88 | |
88 | 89 |
def test_timer_thread(tenants, settings, client): |
89 |
settings.clear_tenants_settings()
|
|
90 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
90 | 91 |
with utilities.patch_default_settings( |
91 | 92 |
settings, TENANT_SETTINGS_LOADERS=('hobo.multitenant.settings_loaders.TemplateVars',) |
92 | 93 |
): |
93 | 94 | |
94 | 95 |
def f(tenant=None): |
95 | 96 |
if tenant is not None: |
96 |
assert hasattr(settings, 'TEMPLATE_VARS') |
|
97 |
assert settings.TEMPLATE_VARS['test_url'] == tenant.get_base_url() |
|
97 |
with tenant_context(tenant): |
|
98 |
assert hasattr(settings, 'TEMPLATE_VARS') |
|
99 |
assert settings.TEMPLATE_VARS['test_url'] == tenant.get_base_url() |
|
98 | 100 |
else: |
99 | 101 |
assert not hasattr(django.conf.settings, 'TEMPLATE_VARS') |
100 | 102 | |
101 |
- |