Pārlūkot izejas kodu

Refactor WebdavFactory + test config initialisation for wsgidav

Guénaël Muller 6 gadus atpakaļ
vecāks
revīzija
fdc6dd8b16
2 mainītis faili ar 65 papildinājumiem un 7 dzēšanām
  1. 15 6
      tracim/lib/webdav/__init__.py
  2. 50 1
      tracim/tests/library/test_webdav.py

+ 15 - 6
tracim/lib/webdav/__init__.py Parādīt failu

@@ -44,14 +44,10 @@ class WebdavAppFactory(object):
44 44
         # Set config defaults
45 45
         config = DEFAULT_CONFIG.copy()
46 46
         temp_verbose = config["verbose"]
47
-
48 47
         # Get pyramid Env
49 48
         tracim_config_file_path = os.path.abspath(tracim_config_file_path)
50 49
         config['tracim_config'] = tracim_config_file_path
51
-        global_conf = get_appsettings(config['tracim_config']).global_conf
52
-        local_conf = get_appsettings(config['tracim_config'], 'tracim_web')
53
-        settings = global_conf
54
-        settings.update(local_conf)
50
+        settings = self._get_tracim_settings(config)
55 51
         app_config = CFG(settings)
56 52
 
57 53
         default_config_file = os.path.abspath(settings['wsgidav.config_path'])
@@ -91,10 +87,23 @@ class WebdavAppFactory(object):
91 87
         config['domaincontroller'] = TracimDomainController(
92 88
             presetdomain=None,
93 89
             presetserver=None,
94
-            app_config = app_config,
90
+            app_config=app_config,
95 91
         )
96 92
         return config
97 93
 
94
+    def _get_tracim_settings(
95
+            self,
96
+            default_config,
97
+    ):
98
+        """
99
+        Get tracim settings
100
+        """
101
+        global_conf = get_appsettings(default_config['tracim_config']).global_conf
102
+        local_conf = get_appsettings(default_config['tracim_config'], 'tracim_web')  # nopep8
103
+        settings = global_conf
104
+        settings.update(local_conf)
105
+        return settings
106
+
98 107
     # INFO - G.M - 13-04-2018 - Copy from
99 108
     # wsgidav.server.run_server._readConfigFile
100 109
     def _readConfigFile(self, config_file, verbose):

+ 50 - 1
tracim/tests/library/test_webdav.py Parādīt failu

@@ -3,8 +3,10 @@ import io
3 3
 
4 4
 import pytest
5 5
 from sqlalchemy.exc import InvalidRequestError
6
-
6
+from wsgidav.wsgidav_app import DEFAULT_CONFIG
7
+from tracim import WebdavAppFactory
7 8
 from tracim.lib.core.user import UserApi
9
+from tracim.lib.webdav import TracimDomainController
8 10
 from tracim.tests import eq_
9 11
 from tracim.lib.core.notifications import DummyNotifier
10 12
 from tracim.lib.webdav.dav_provider import Provider
@@ -15,6 +17,53 @@ from tracim.tests import StandardTest
15 17
 from tracim.fixtures.content import Content as ContentFixtures
16 18
 from tracim.fixtures.users_and_groups import Base as BaseFixture
17 19
 from wsgidav import util
20
+from unittest.mock import MagicMock
21
+
22
+
23
+class TestWebdavFactory(StandardTest):
24
+
25
+    def test_unit__initConfig__ok__nominal_case(self):
26
+        """
27
+        Check if config is correctly modify for wsgidav using mocked
28
+        wsgidav and tracim conf (as dict)
29
+        :return:
30
+        """
31
+        tracim_settings = {
32
+            'sqlalchemy.url': 'sqlite:///:memory:',
33
+            'user.auth_token.validity': '604800',
34
+            'depot_storage_dir': '/tmp/test/depot',
35
+            'depot_storage_name': 'test',
36
+            'preview_cache_dir': '/tmp/test/preview_cache',
37
+            'wsgidav.config_path': 'development.ini'
38
+
39
+        }
40
+        wsgidav_setting = DEFAULT_CONFIG.copy()
41
+        wsgidav_setting.update(
42
+            {
43
+               'root_path':  '',
44
+               'acceptbasic': True,
45
+               'acceptdigest': False,
46
+               'defaultdigest': False,
47
+            }
48
+        )
49
+        mock = MagicMock()
50
+        mock._initConfig = WebdavAppFactory._initConfig
51
+        mock._readConfigFile.return_value = wsgidav_setting
52
+        mock._get_tracim_settings.return_value = tracim_settings
53
+        config = mock._initConfig(mock)
54
+        assert config
55
+        assert config['acceptbasic'] is True
56
+        assert config['acceptdigest'] is False
57
+        assert config['defaultdigest'] is False
58
+        # TODO - G.M - 25-05-2018 - Better check for middleware stack config
59
+        assert 'middleware_stack' in config
60
+        assert len(config['middleware_stack']) == 7
61
+        assert 'root_path' in config
62
+        assert 'provider_mapping' in config
63
+        assert config['root_path'] in config['provider_mapping']
64
+        assert isinstance(config['provider_mapping'][config['root_path']], Provider)  # nopep8
65
+        assert 'domaincontroller' in config
66
+        assert isinstance(config['domaincontroller'], TracimDomainController)
18 67
 
19 68
 
20 69
 class TestWebDav(StandardTest):