0004-Fix-multitenant-tests-under-django-3.2.patch
hobo/multitenant/settings.py | ||
---|---|---|
29 | 29 | |
30 | 30 |
class TenantSettingsWrapper(object): |
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 | ||
---|---|---|
24 | 24 |
settings.DEBUG_PROPAGATE_EXCEPTIONS = False |
25 | 25 |
app.get('/?raise', status=404) |
26 | 26 |
response = app.get('/?raise', status=500, extra_environ={'HTTP_HOST': tenants[0].domain_url}) |
27 |
assert response.text == '<h1>Server Error (500)</h1>'
|
|
27 |
assert 'Server Error (500)' in response.text
|
|
28 | 28 | |
29 | 29 |
settings.INTERNAL_IPS = ['127.0.0.1'] |
30 | 30 | |
31 | 31 |
response = app.get('/?raise', status=500, extra_environ={'HTTP_HOST': tenants[0].domain_url}) |
32 |
assert 'You\'re seeing this error because you have' in response.text
|
|
32 |
assert 'seeing this error because you have' in response.text |
|
33 | 33 | |
34 | 34 | |
35 | 35 |
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: |
... | ... | |
229 | 229 | |
230 | 230 |
def test_legacy_urls_mapping(tenants, settings): |
231 | 231 | |
232 |
settings.clear_tenants_settings()
|
|
232 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
233 | 233 |
settings.SETTINGS_MODULE = 'fake.settings' |
234 | 234 | |
235 | 235 |
for tenant in tenants: |
... | ... | |
240 | 240 | |
241 | 241 | |
242 | 242 |
def test_unique_cookies(tenants, settings): |
243 |
settings.clear_tenants_settings()
|
|
243 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
244 | 244 | |
245 | 245 |
cookie_names = set() |
246 | 246 |
for tenant in tenants: |
... | ... | |
252 | 252 | |
253 | 253 | |
254 | 254 |
def test_tenant_json_settings_reload(tenants, settings, freezer): |
255 |
settings.clear_tenants_settings()
|
|
255 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
256 | 256 | |
257 | 257 |
with utilities.patch_default_settings( |
258 | 258 |
settings, TENANT_SETTINGS_LOADERS=('hobo.multitenant.settings_loaders.SettingsJSON',) |
tests_multitenant/test_tenant_command.py | ||
---|---|---|
50 | 50 |
def test_all_tenants_disable_cron(handle, tenants, settings): |
51 | 51 |
from django.core.management import execute_from_command_line |
52 | 52 | |
53 |
settings.clear_tenants_settings()
|
|
53 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
54 | 54 |
settings.DISABLE_CRON_JOBS = True |
55 | 55 |
handle.side_effect = RecordTenant() |
56 | 56 |
execute_from_command_line(['manage.py', 'tenant_command', 'clearsessions', '--all-tenants']) |
... | ... | |
62 | 62 |
def test_all_tenants_disable_cron_for_specific_tenant(handle, tenants, settings): |
63 | 63 |
from django.core.management import execute_from_command_line |
64 | 64 | |
65 |
settings.clear_tenants_settings()
|
|
65 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
66 | 66 |
disabled_tenant = tenants[0] |
67 | 67 |
with open(os.path.join(disabled_tenant.get_directory(), 'settings.json'), 'w') as fd: |
68 | 68 |
json.dump( |
... | ... | |
79 | 79 |
def test_all_tenants_global_disable_cron_with_force_job(handle, tenants, settings): |
80 | 80 |
from django.core.management import execute_from_command_line |
81 | 81 | |
82 |
settings.clear_tenants_settings()
|
|
82 |
settings.CLEAR_TENANTS_SETTINGS()
|
|
83 | 83 |
settings.DISABLE_CRON_JOBS = True |
84 | 84 |
handle.side_effect = RecordTenant() |
85 | 85 |
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 = threading.Thread(target=f) |
|
77 | 78 |
t1.start() |
78 | 79 |
t1.join() |
79 | 80 | |
... | ... | |
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 |
- |