Browse Source

Clean code and fix tests

Bastien Sevajol (Algoo) 8 years ago
parent
commit
a0a20c8215

+ 4 - 4
tracim/test.ini View File

@@ -11,6 +11,7 @@ smtp_server = localhost
11 11
 error_email_from = turbogears@localhost
12 12
 radicale.server.port = 15232
13 13
 radicale.client.port = 15232
14
+radicale.server.filesystem.folder = /tmp/tracim_tests_radicale_fs
14 15
 
15 16
 [server:main]
16 17
 use = egg:gearbox#wsgiref
@@ -18,7 +19,7 @@ host = 127.0.0.1
18 19
 port = 8080
19 20
 
20 21
 [app:main]
21
-sqlalchemy.url = postgresql://postgres:dummy@127.0.0.1:5432/tracim_test?client_encoding=utf8
22
+sqlalchemy.url = mysql+oursql://tracim:tracim@localhost/tracim_test
22 23
 use = config:development.ini
23 24
 
24 25
 [app:main_without_authn]
@@ -26,7 +27,7 @@ use = main
26 27
 skip_authentication = True
27 28
 
28 29
 [app:ldap]
29
-sqlalchemy.url = postgresql://postgres:dummy@127.0.0.1:5432/tracim_test?client_encoding=utf8
30
+sqlalchemy.url = mysql+oursql://tracim:tracim@localhost/tracim_test
30 31
 auth_type = ldap
31 32
 ldap_url = ldap://localhost:3333
32 33
 ldap_base_dn = dc=directory,dc=fsf,dc=org
@@ -39,8 +40,7 @@ ldap_group_enabled = False
39 40
 use = config:development.ini
40 41
 
41 42
 [app:radicale]
42
-sqlalchemy.url = postgresql://postgres:dummy@127.0.0.1:5432/tracim_test?client_encoding=utf8
43
-radicale.server.filesystem.folder = /tmp/tracim_tests_radicale_fs
43
+sqlalchemy.url = mysql+oursql://tracim:tracim@localhost/tracim_test
44 44
 use = config:development.ini
45 45
 
46 46
 # Add additional test specific configuration options as necessary.

+ 46 - 1
tracim/tracim/lib/calendar.py View File

@@ -32,6 +32,43 @@ CALENDAR_WORKSPACE_URL_TEMPLATE = \
32 32
 
33 33
 
34 34
 class CalendarManager(object):
35
+    @staticmethod
36
+    def get_base_url():
37
+        from tracim.config.app_cfg import CFG
38
+        cfg = CFG.get_instance()
39
+
40
+        return CALENDAR_BASE_URL_TEMPLATE.format(
41
+            proto='https' if cfg.RADICALE_CLIENT_SSL else 'http',
42
+            domain=cfg.RADICALE_CLIENT_HOST or '127.0.0.1',
43
+            port=str(cfg.RADICALE_CLIENT_PORT)
44
+        )
45
+
46
+    @staticmethod
47
+    def get_user_calendar_url(user_id: int, extra: str=''):
48
+        from tracim.config.app_cfg import CFG
49
+        cfg = CFG.get_instance()
50
+
51
+        return CALENDAR_USER_URL_TEMPLATE.format(
52
+            proto='https' if cfg.RADICALE_CLIENT_SSL else 'http',
53
+            domain=cfg.RADICALE_CLIENT_HOST or '127.0.0.1',
54
+            port=str(cfg.RADICALE_CLIENT_PORT),
55
+            id=str(user_id),
56
+            extra=extra,
57
+        )
58
+
59
+    @staticmethod
60
+    def get_workspace_calendar_url(workspace_id: int, extra: str=''):
61
+        from tracim.config.app_cfg import CFG
62
+        cfg = CFG.get_instance()
63
+
64
+        return CALENDAR_WORKSPACE_URL_TEMPLATE.format(
65
+            proto='https' if cfg.RADICALE_CLIENT_SSL else 'http',
66
+            domain=cfg.RADICALE_CLIENT_HOST or '127.0.0.1',
67
+            port=str(cfg.RADICALE_CLIENT_PORT),
68
+            id=str(workspace_id),
69
+            extra=extra,
70
+        )
71
+
35 72
     def __init__(self, user: User):
36 73
         self._user = user
37 74
 
@@ -224,7 +261,15 @@ class CalendarManager(object):
224 261
             content: Content,
225 262
             event: iCalendarEvent,
226 263
             event_name: str,
227
-    ) -> Content:
264
+    ) -> None:
265
+        """
266
+        Populate Content content instance from iCalendarEvent event attributes.
267
+        :param content: content to populate
268
+        :param event: event with data to insert in content
269
+        :param event_name: Event name (ID) like
270
+        20160602T083511Z-18100-1001-1-71_Bastien-20160602T083516Z.ics
271
+        :return: given content
272
+        """
228 273
         content.label = event.get('summary')
229 274
         content.description = event.get('description')
230 275
         content.properties = {

+ 0 - 34
tracim/tracim/tests/__init__.py View File

@@ -371,37 +371,3 @@ class TestCalendar(TestController):
371 371
                 shutil.rmtree('{0}/{1}'.format(radicale_fs_path, file))
372 372
         except FileNotFoundError:
373 373
             pass  # Dir not exists yet, no need to clear it
374
-
375
-    def _get_base_url(self):
376
-        from tracim.config.app_cfg import CFG
377
-        cfg = CFG.get_instance()
378
-
379
-        return CALENDAR_BASE_URL_TEMPLATE.format(
380
-            proto='https' if cfg.RADICALE_CLIENT_SSL else 'http',
381
-            domain=cfg.RADICALE_CLIENT_HOST or '127.0.0.1',
382
-            port=str(cfg.RADICALE_CLIENT_PORT)
383
-        )
384
-
385
-    def _get_user_calendar_url(self, user_id):
386
-        from tracim.config.app_cfg import CFG
387
-        cfg = CFG.get_instance()
388
-
389
-        return CALENDAR_USER_URL_TEMPLATE.format(
390
-            proto='https' if cfg.RADICALE_CLIENT_SSL else 'http',
391
-            domain=cfg.RADICALE_CLIENT_HOST or '127.0.0.1',
392
-            port=str(cfg.RADICALE_CLIENT_PORT),
393
-            id=user_id,
394
-            extra='',
395
-        )
396
-
397
-    def _get_workspace_calendar_url(self, workspace_id):
398
-        from tracim.config.app_cfg import CFG
399
-        cfg = CFG.get_instance()
400
-
401
-        return CALENDAR_WORKSPACE_URL_TEMPLATE.format(
402
-            proto='https' if cfg.RADICALE_CLIENT_SSL else 'http',
403
-            domain=cfg.RADICALE_CLIENT_HOST or '127.0.0.1',
404
-            port=str(cfg.RADICALE_CLIENT_PORT),
405
-            id=workspace_id,
406
-            extra='',
407
-        )

+ 16 - 13
tracim/tracim/tests/functional/test_calendar.py View File

@@ -9,6 +9,7 @@ from requests.exceptions import ConnectionError
9 9
 from sqlalchemy.orm.exc import NoResultFound
10 10
 
11 11
 from tracim.config.app_cfg import daemons
12
+from tracim.lib.calendar import CalendarManager
12 13
 from tracim.lib.workspace import WorkspaceApi
13 14
 from tracim.model import DBSession
14 15
 from tracim.tests import TestCalendar as BaseTestCalendar
@@ -23,7 +24,7 @@ class TestCalendar(BaseTestCalendar):
23 24
         # ... radicale daemon started. We should lock something somewhere !
24 25
 
25 26
     def test_func__radicale_connectivity__ok__nominal_case(self):
26
-        radicale_base_url = self._get_base_url()
27
+        radicale_base_url = CalendarManager.get_base_url()
27 28
 
28 29
         try:
29 30
             response = requests.get(radicale_base_url)
@@ -32,7 +33,7 @@ class TestCalendar(BaseTestCalendar):
32 33
             ok_(False, 'Unable to contact radicale on HTTP')
33 34
 
34 35
     def test_func__radicale_auth__ok__as_lawrence(self):
35
-        radicale_base_url = self._get_base_url()
36
+        radicale_base_url = CalendarManager.get_base_url()
36 37
         client = caldav.DAVClient(
37 38
             radicale_base_url,
38 39
             username='lawrence-not-real-email@fsf.local',
@@ -45,7 +46,7 @@ class TestCalendar(BaseTestCalendar):
45 46
             ok_(False, 'AuthorizationError when communicate with radicale')
46 47
 
47 48
     def test_func__radicale_auth__fail__as_john_doe(self):
48
-        radicale_base_url = self._get_base_url()
49
+        radicale_base_url = CalendarManager.get_base_url()
49 50
         client = caldav.DAVClient(
50 51
             radicale_base_url,
51 52
             username='john.doe@foo.local',
@@ -59,7 +60,7 @@ class TestCalendar(BaseTestCalendar):
59 60
             ok_(True, 'AuthorizationError thrown correctly')
60 61
 
61 62
     def test_func__rights_read_user_calendar__ok__as_lawrence(self):
62
-        radicale_base_url = self._get_base_url()
63
+        radicale_base_url = CalendarManager.get_base_url()
63 64
         client = caldav.DAVClient(
64 65
             radicale_base_url,
65 66
             username='lawrence-not-real-email@fsf.local',
@@ -68,7 +69,7 @@ class TestCalendar(BaseTestCalendar):
68 69
         user = DBSession.query(User).filter(
69 70
             User.email == 'lawrence-not-real-email@fsf.local'
70 71
         ).one()
71
-        user_calendar_url = self._get_user_calendar_url(user.user_id)
72
+        user_calendar_url = CalendarManager.get_user_calendar_url(user.user_id)
72 73
         try:
73 74
             caldav.Calendar(
74 75
                 parent=client,
@@ -81,7 +82,7 @@ class TestCalendar(BaseTestCalendar):
81 82
             ok_(False, 'User should not access that')
82 83
 
83 84
     def test_func__rights_read_user_calendar__fail__as_john_doe(self):
84
-        radicale_base_url = self._get_base_url()
85
+        radicale_base_url = CalendarManager.get_base_url()
85 86
         client = caldav.DAVClient(
86 87
             radicale_base_url,
87 88
             username='john.doe@foo.local',
@@ -90,7 +91,7 @@ class TestCalendar(BaseTestCalendar):
90 91
         other_user = DBSession.query(User).filter(
91 92
             User.email == 'admin@admin.admin'
92 93
         ).one()
93
-        user_calendar_url = self._get_user_calendar_url(other_user.user_id)
94
+        user_calendar_url = CalendarManager.get_user_calendar_url(other_user.user_id)
94 95
         try:
95 96
             caldav.Calendar(
96 97
                 parent=client,
@@ -113,13 +114,13 @@ class TestCalendar(BaseTestCalendar):
113 114
         workspace.calendar_enabled = True
114 115
         DBSession.flush()
115 116
 
116
-        workspace_calendar_url = self._get_workspace_calendar_url(
117
+        workspace_calendar_url = CalendarManager.get_workspace_calendar_url(
117 118
             workspace.workspace_id
118 119
         )
119 120
 
120 121
         transaction.commit()
121 122
 
122
-        radicale_base_url = self._get_base_url()
123
+        radicale_base_url = CalendarManager.get_base_url()
123 124
         client = caldav.DAVClient(
124 125
             radicale_base_url,
125 126
             username='lawrence-not-real-email@fsf.local',
@@ -147,13 +148,13 @@ class TestCalendar(BaseTestCalendar):
147 148
         workspace.calendar_enabled = True
148 149
         DBSession.flush()
149 150
 
150
-        workspace_calendar_url = self._get_workspace_calendar_url(
151
+        workspace_calendar_url = CalendarManager.get_workspace_calendar_url(
151 152
             workspace.workspace_id
152 153
         )
153 154
 
154 155
         transaction.commit()
155 156
 
156
-        radicale_base_url = self._get_base_url()
157
+        radicale_base_url = CalendarManager.get_base_url()
157 158
         client = caldav.DAVClient(
158 159
             radicale_base_url,
159 160
             username='bob@fsf.local',
@@ -174,13 +175,15 @@ class TestCalendar(BaseTestCalendar):
174 175
         lawrence = DBSession.query(User).filter(
175 176
             User.email == 'lawrence-not-real-email@fsf.local'
176 177
         ).one()
177
-        radicale_base_url = self._get_base_url()
178
+        radicale_base_url = CalendarManager.get_base_url()
178 179
         client = caldav.DAVClient(
179 180
             radicale_base_url,
180 181
             username='lawrence-not-real-email@fsf.local',
181 182
             password='foobarbaz'
182 183
         )
183
-        user_calendar_url = self._get_user_calendar_url(lawrence.user_id)
184
+        user_calendar_url = CalendarManager.get_user_calendar_url(
185
+            lawrence.user_id
186
+        )
184 187
         user_calendar = caldav.Calendar(
185 188
             parent=client,
186 189
             client=client,