diff options
-rwxr-xr-x | synapse/app/homeserver.py | 4 | ||||
-rw-r--r-- | synapse/rest/__init__.py | 35 | ||||
-rw-r--r-- | synapse/rest/client/__init__.py | 14 | ||||
-rw-r--r-- | synapse/rest/client/v1/__init__.py | 47 | ||||
-rw-r--r-- | synapse/rest/client/v1/admin.py (renamed from synapse/rest/admin.py) | 0 | ||||
-rw-r--r-- | synapse/rest/client/v1/base.py (renamed from synapse/rest/base.py) | 2 | ||||
-rw-r--r-- | synapse/rest/client/v1/directory.py (renamed from synapse/rest/directory.py) | 0 | ||||
-rw-r--r-- | synapse/rest/client/v1/events.py (renamed from synapse/rest/events.py) | 2 | ||||
-rw-r--r-- | synapse/rest/client/v1/initial_sync.py (renamed from synapse/rest/initial_sync.py) | 0 | ||||
-rw-r--r-- | synapse/rest/client/v1/login.py (renamed from synapse/rest/login.py) | 0 | ||||
-rw-r--r-- | synapse/rest/client/v1/presence.py (renamed from synapse/rest/presence.py) | 0 | ||||
-rw-r--r-- | synapse/rest/client/v1/profile.py (renamed from synapse/rest/profile.py) | 0 | ||||
-rw-r--r-- | synapse/rest/client/v1/register.py (renamed from synapse/rest/register.py) | 0 | ||||
-rw-r--r-- | synapse/rest/client/v1/room.py (renamed from synapse/rest/room.py) | 0 | ||||
-rw-r--r-- | synapse/rest/client/v1/transactions.py (renamed from synapse/rest/transactions.py) | 0 | ||||
-rw-r--r-- | synapse/rest/client/v1/voip.py (renamed from synapse/rest/voip.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/__init__.py (renamed from synapse/media/__init__.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/v0/__init__.py (renamed from synapse/media/v0/__init__.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/v0/content_repository.py (renamed from synapse/media/v0/content_repository.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/v1/__init__.py (renamed from synapse/media/v1/__init__.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/v1/base_resource.py (renamed from synapse/media/v1/base_resource.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/v1/download_resource.py (renamed from synapse/media/v1/download_resource.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/v1/filepath.py (renamed from synapse/media/v1/filepath.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/v1/media_repository.py (renamed from synapse/media/v1/media_repository.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/v1/thumbnail_resource.py (renamed from synapse/media/v1/thumbnail_resource.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/v1/thumbnailer.py (renamed from synapse/media/v1/thumbnailer.py) | 0 | ||||
-rw-r--r-- | synapse/rest/media/v1/upload_resource.py (renamed from synapse/media/v1/upload_resource.py) | 0 | ||||
-rw-r--r-- | synapse/server.py | 2 | ||||
-rw-r--r-- | tests/rest/__init__.py | 3 | ||||
-rw-r--r-- | tests/rest/client/__init__.py | 14 | ||||
-rw-r--r-- | tests/rest/client/v1/__init__.py | 15 | ||||
-rw-r--r-- | tests/rest/client/v1/test_events.py (renamed from tests/rest/test_events.py) | 14 | ||||
-rw-r--r-- | tests/rest/client/v1/test_presence.py (renamed from tests/rest/test_presence.py) | 2 | ||||
-rw-r--r-- | tests/rest/client/v1/test_profile.py (renamed from tests/rest/test_profile.py) | 2 | ||||
-rw-r--r-- | tests/rest/client/v1/test_rooms.py (renamed from tests/rest/test_rooms.py) | 18 | ||||
-rw-r--r-- | tests/rest/client/v1/test_typing.py (renamed from tests/rest/test_typing.py) | 6 | ||||
-rw-r--r-- | tests/rest/client/v1/utils.py (renamed from tests/rest/utils.py) | 0 |
37 files changed, 118 insertions, 62 deletions
diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py index afe3d19760..cd24bbdc79 100755 --- a/synapse/app/homeserver.py +++ b/synapse/app/homeserver.py @@ -26,8 +26,8 @@ from twisted.web.resource import Resource from twisted.web.static import File from twisted.web.server import Site from synapse.http.server import JsonResource, RootRedirect -from synapse.media.v0.content_repository import ContentRepoResource -from synapse.media.v1.media_repository import MediaRepositoryResource +from synapse.rest.media.v0.content_repository import ContentRepoResource +from synapse.rest.media.v1.media_repository import MediaRepositoryResource from synapse.http.server_key_resource import LocalKey from synapse.http.matrixfederationclient import MatrixFederationHttpClient from synapse.api.urls import ( diff --git a/synapse/rest/__init__.py b/synapse/rest/__init__.py index 88ec9cd27d..1a84d94cd9 100644 --- a/synapse/rest/__init__.py +++ b/synapse/rest/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2014, 2015 OpenMarket Ltd +# Copyright 2015 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,36 +12,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - - -from . import ( - room, events, register, login, profile, presence, initial_sync, directory, - voip, admin, -) - - -class RestServletFactory(object): - - """ A factory for creating REST servlets. - - These REST servlets represent the entire client-server REST API. Generally - speaking, they serve as wrappers around events and the handlers that - process them. - - See synapse.events for information on synapse events. - """ - - def __init__(self, hs): - client_resource = hs.get_resource_for_client() - - # TODO(erikj): There *must* be a better way of doing this. - room.register_servlets(hs, client_resource) - events.register_servlets(hs, client_resource) - register.register_servlets(hs, client_resource) - login.register_servlets(hs, client_resource) - profile.register_servlets(hs, client_resource) - presence.register_servlets(hs, client_resource) - initial_sync.register_servlets(hs, client_resource) - directory.register_servlets(hs, client_resource) - voip.register_servlets(hs, client_resource) - admin.register_servlets(hs, client_resource) diff --git a/synapse/rest/client/__init__.py b/synapse/rest/client/__init__.py new file mode 100644 index 0000000000..1a84d94cd9 --- /dev/null +++ b/synapse/rest/client/__init__.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +# Copyright 2015 OpenMarket Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/synapse/rest/client/v1/__init__.py b/synapse/rest/client/v1/__init__.py new file mode 100644 index 0000000000..88ec9cd27d --- /dev/null +++ b/synapse/rest/client/v1/__init__.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Copyright 2014, 2015 OpenMarket Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from . import ( + room, events, register, login, profile, presence, initial_sync, directory, + voip, admin, +) + + +class RestServletFactory(object): + + """ A factory for creating REST servlets. + + These REST servlets represent the entire client-server REST API. Generally + speaking, they serve as wrappers around events and the handlers that + process them. + + See synapse.events for information on synapse events. + """ + + def __init__(self, hs): + client_resource = hs.get_resource_for_client() + + # TODO(erikj): There *must* be a better way of doing this. + room.register_servlets(hs, client_resource) + events.register_servlets(hs, client_resource) + register.register_servlets(hs, client_resource) + login.register_servlets(hs, client_resource) + profile.register_servlets(hs, client_resource) + presence.register_servlets(hs, client_resource) + initial_sync.register_servlets(hs, client_resource) + directory.register_servlets(hs, client_resource) + voip.register_servlets(hs, client_resource) + admin.register_servlets(hs, client_resource) diff --git a/synapse/rest/admin.py b/synapse/rest/client/v1/admin.py index 0aa83514c8..0aa83514c8 100644 --- a/synapse/rest/admin.py +++ b/synapse/rest/client/v1/admin.py diff --git a/synapse/rest/base.py b/synapse/rest/client/v1/base.py index c583945527..d005206b77 100644 --- a/synapse/rest/base.py +++ b/synapse/rest/client/v1/base.py @@ -15,7 +15,7 @@ """ This module contains base REST classes for constructing REST servlets. """ from synapse.api.urls import CLIENT_PREFIX -from synapse.rest.transactions import HttpTransactionStore +from .transactions import HttpTransactionStore import re import logging diff --git a/synapse/rest/directory.py b/synapse/rest/client/v1/directory.py index 7ff44fdd9e..7ff44fdd9e 100644 --- a/synapse/rest/directory.py +++ b/synapse/rest/client/v1/directory.py diff --git a/synapse/rest/events.py b/synapse/rest/client/v1/events.py index bedcb2bcc6..c2515528ac 100644 --- a/synapse/rest/events.py +++ b/synapse/rest/client/v1/events.py @@ -18,7 +18,7 @@ from twisted.internet import defer from synapse.api.errors import SynapseError from synapse.streams.config import PaginationConfig -from synapse.rest.base import RestServlet, client_path_pattern +from .base import RestServlet, client_path_pattern import logging diff --git a/synapse/rest/initial_sync.py b/synapse/rest/client/v1/initial_sync.py index b13d56b286..b13d56b286 100644 --- a/synapse/rest/initial_sync.py +++ b/synapse/rest/client/v1/initial_sync.py diff --git a/synapse/rest/login.py b/synapse/rest/client/v1/login.py index 6b8deff67b..6b8deff67b 100644 --- a/synapse/rest/login.py +++ b/synapse/rest/client/v1/login.py diff --git a/synapse/rest/presence.py b/synapse/rest/client/v1/presence.py index ca4d2d21f0..ca4d2d21f0 100644 --- a/synapse/rest/presence.py +++ b/synapse/rest/client/v1/presence.py diff --git a/synapse/rest/profile.py b/synapse/rest/client/v1/profile.py index dc6eb424b0..dc6eb424b0 100644 --- a/synapse/rest/profile.py +++ b/synapse/rest/client/v1/profile.py diff --git a/synapse/rest/register.py b/synapse/rest/client/v1/register.py index e3b26902d9..e3b26902d9 100644 --- a/synapse/rest/register.py +++ b/synapse/rest/client/v1/register.py diff --git a/synapse/rest/room.py b/synapse/rest/client/v1/room.py index 48bba2a5f3..48bba2a5f3 100644 --- a/synapse/rest/room.py +++ b/synapse/rest/client/v1/room.py diff --git a/synapse/rest/transactions.py b/synapse/rest/client/v1/transactions.py index d933fea18a..d933fea18a 100644 --- a/synapse/rest/transactions.py +++ b/synapse/rest/client/v1/transactions.py diff --git a/synapse/rest/voip.py b/synapse/rest/client/v1/voip.py index 011c35e69b..011c35e69b 100644 --- a/synapse/rest/voip.py +++ b/synapse/rest/client/v1/voip.py diff --git a/synapse/media/__init__.py b/synapse/rest/media/__init__.py index e69de29bb2..e69de29bb2 100644 --- a/synapse/media/__init__.py +++ b/synapse/rest/media/__init__.py diff --git a/synapse/media/v0/__init__.py b/synapse/rest/media/v0/__init__.py index e69de29bb2..e69de29bb2 100644 --- a/synapse/media/v0/__init__.py +++ b/synapse/rest/media/v0/__init__.py diff --git a/synapse/media/v0/content_repository.py b/synapse/rest/media/v0/content_repository.py index 79ae0e3d74..79ae0e3d74 100644 --- a/synapse/media/v0/content_repository.py +++ b/synapse/rest/media/v0/content_repository.py diff --git a/synapse/media/v1/__init__.py b/synapse/rest/media/v1/__init__.py index d6c6690577..d6c6690577 100644 --- a/synapse/media/v1/__init__.py +++ b/synapse/rest/media/v1/__init__.py diff --git a/synapse/media/v1/base_resource.py b/synapse/rest/media/v1/base_resource.py index 688e7376ad..688e7376ad 100644 --- a/synapse/media/v1/base_resource.py +++ b/synapse/rest/media/v1/base_resource.py diff --git a/synapse/media/v1/download_resource.py b/synapse/rest/media/v1/download_resource.py index c585bb11f7..c585bb11f7 100644 --- a/synapse/media/v1/download_resource.py +++ b/synapse/rest/media/v1/download_resource.py diff --git a/synapse/media/v1/filepath.py b/synapse/rest/media/v1/filepath.py index ed9a58e9d9..ed9a58e9d9 100644 --- a/synapse/media/v1/filepath.py +++ b/synapse/rest/media/v1/filepath.py diff --git a/synapse/media/v1/media_repository.py b/synapse/rest/media/v1/media_repository.py index 461cc001f1..461cc001f1 100644 --- a/synapse/media/v1/media_repository.py +++ b/synapse/rest/media/v1/media_repository.py diff --git a/synapse/media/v1/thumbnail_resource.py b/synapse/rest/media/v1/thumbnail_resource.py index 84f5e3463c..84f5e3463c 100644 --- a/synapse/media/v1/thumbnail_resource.py +++ b/synapse/rest/media/v1/thumbnail_resource.py diff --git a/synapse/media/v1/thumbnailer.py b/synapse/rest/media/v1/thumbnailer.py index 28404f2b7b..28404f2b7b 100644 --- a/synapse/media/v1/thumbnailer.py +++ b/synapse/rest/media/v1/thumbnailer.py diff --git a/synapse/media/v1/upload_resource.py b/synapse/rest/media/v1/upload_resource.py index b1718a630b..b1718a630b 100644 --- a/synapse/media/v1/upload_resource.py +++ b/synapse/rest/media/v1/upload_resource.py diff --git a/synapse/server.py b/synapse/server.py index d861efd2fd..e9add8e2b4 100644 --- a/synapse/server.py +++ b/synapse/server.py @@ -24,7 +24,7 @@ from synapse.events.utils import serialize_event from synapse.notifier import Notifier from synapse.api.auth import Auth from synapse.handlers import Handlers -from synapse.rest import RestServletFactory +from synapse.rest.client.v1 import RestServletFactory from synapse.state import StateHandler from synapse.storage import DataStore from synapse.types import UserID, RoomAlias, RoomID, EventID diff --git a/tests/rest/__init__.py b/tests/rest/__init__.py index 9bff9ec169..1a84d94cd9 100644 --- a/tests/rest/__init__.py +++ b/tests/rest/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2014 OpenMarket Ltd +# Copyright 2015 OpenMarket Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,4 +12,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - diff --git a/tests/rest/client/__init__.py b/tests/rest/client/__init__.py new file mode 100644 index 0000000000..1a84d94cd9 --- /dev/null +++ b/tests/rest/client/__init__.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +# Copyright 2015 OpenMarket Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tests/rest/client/v1/__init__.py b/tests/rest/client/v1/__init__.py new file mode 100644 index 0000000000..9bff9ec169 --- /dev/null +++ b/tests/rest/client/v1/__init__.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Copyright 2014 OpenMarket Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + diff --git a/tests/rest/test_events.py b/tests/rest/client/v1/test_events.py index d3159e2cf4..0384ffbb3d 100644 --- a/tests/rest/test_events.py +++ b/tests/rest/client/v1/test_events.py @@ -19,13 +19,13 @@ from tests import unittest # twisted imports from twisted.internet import defer -import synapse.rest.events -import synapse.rest.register -import synapse.rest.room +import synapse.rest.client.v1.events +import synapse.rest.client.v1.register +import synapse.rest.client.v1.room from synapse.server import HomeServer -from ..utils import MockHttpResource, SQLiteMemoryDbPool, MockKey +from ....utils import MockHttpResource, SQLiteMemoryDbPool, MockKey from .utils import RestTestCase from mock import Mock, NonCallableMock @@ -144,9 +144,9 @@ class EventStreamPermissionsTestCase(RestTestCase): hs.get_clock().time_msec.return_value = 1000000 hs.get_clock().time.return_value = 1000 - synapse.rest.register.register_servlets(hs, self.mock_resource) - synapse.rest.events.register_servlets(hs, self.mock_resource) - synapse.rest.room.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.register.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.events.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource) # register an account self.user_id = "sid1" diff --git a/tests/rest/test_presence.py b/tests/rest/client/v1/test_presence.py index 769c7824bc..0b6f7cfccb 100644 --- a/tests/rest/test_presence.py +++ b/tests/rest/client/v1/test_presence.py @@ -20,7 +20,7 @@ from twisted.internet import defer from mock import Mock -from ..utils import MockHttpResource, MockKey +from ....utils import MockHttpResource, MockKey from synapse.api.constants import PresenceState from synapse.handlers.presence import PresenceHandler diff --git a/tests/rest/test_profile.py b/tests/rest/client/v1/test_profile.py index 3a0d1e700a..47cfb10a6d 100644 --- a/tests/rest/test_profile.py +++ b/tests/rest/client/v1/test_profile.py @@ -20,7 +20,7 @@ from twisted.internet import defer from mock import Mock, NonCallableMock -from ..utils import MockHttpResource, MockKey +from ....utils import MockHttpResource, MockKey from synapse.api.errors import SynapseError, AuthError from synapse.server import HomeServer diff --git a/tests/rest/test_rooms.py b/tests/rest/client/v1/test_rooms.py index 8e65ff9a1c..12f8040541 100644 --- a/tests/rest/test_rooms.py +++ b/tests/rest/client/v1/test_rooms.py @@ -18,7 +18,7 @@ # twisted imports from twisted.internet import defer -import synapse.rest.room +import synapse.rest.client.v1.room from synapse.api.constants import Membership from synapse.server import HomeServer @@ -30,7 +30,7 @@ import json import urllib import types -from ..utils import MockHttpResource, SQLiteMemoryDbPool, MockKey +from ....utils import MockHttpResource, SQLiteMemoryDbPool, MockKey from .utils import RestTestCase from mock import Mock, NonCallableMock @@ -82,7 +82,7 @@ class RoomPermissionsTestCase(RestTestCase): self.auth_user_id = self.rmcreator_id - synapse.rest.room.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource) self.auth = hs.get_auth() @@ -476,7 +476,7 @@ class RoomsMemberListTestCase(RestTestCase): return defer.succeed(None) hs.get_datastore().insert_client_ip = _insert_client_ip - synapse.rest.room.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource) def tearDown(self): pass @@ -565,7 +565,7 @@ class RoomsCreateTestCase(RestTestCase): return defer.succeed(None) hs.get_datastore().insert_client_ip = _insert_client_ip - synapse.rest.room.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource) def tearDown(self): pass @@ -668,7 +668,7 @@ class RoomTopicTestCase(RestTestCase): return defer.succeed(None) hs.get_datastore().insert_client_ip = _insert_client_ip - synapse.rest.room.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource) # create the room self.room_id = yield self.create_room_as(self.user_id) @@ -783,7 +783,7 @@ class RoomMemberStateTestCase(RestTestCase): return defer.succeed(None) hs.get_datastore().insert_client_ip = _insert_client_ip - synapse.rest.room.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource) self.room_id = yield self.create_room_as(self.user_id) @@ -919,7 +919,7 @@ class RoomMessagesTestCase(RestTestCase): return defer.succeed(None) hs.get_datastore().insert_client_ip = _insert_client_ip - synapse.rest.room.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource) self.room_id = yield self.create_room_as(self.user_id) @@ -1023,7 +1023,7 @@ class RoomInitialSyncTestCase(RestTestCase): return defer.succeed(None) hs.get_datastore().insert_client_ip = _insert_client_ip - synapse.rest.room.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource) # Since I'm getting my own presence I need to exist as far as presence # is concerned. diff --git a/tests/rest/test_typing.py b/tests/rest/client/v1/test_typing.py index 18138af1b5..647bcebfd8 100644 --- a/tests/rest/test_typing.py +++ b/tests/rest/client/v1/test_typing.py @@ -18,10 +18,10 @@ # twisted imports from twisted.internet import defer -import synapse.rest.room +import synapse.rest.client.v1.room from synapse.server import HomeServer -from ..utils import MockHttpResource, MockClock, SQLiteMemoryDbPool, MockKey +from ....utils import MockHttpResource, MockClock, SQLiteMemoryDbPool, MockKey from .utils import RestTestCase from mock import Mock, NonCallableMock @@ -104,7 +104,7 @@ class RoomTypingTestCase(RestTestCase): hs.get_handlers().room_member_handler.fetch_room_distributions_into = ( fetch_room_distributions_into) - synapse.rest.room.register_servlets(hs, self.mock_resource) + synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource) self.room_id = yield self.create_room_as(self.user_id) # Need another user to make notifications actually work diff --git a/tests/rest/utils.py b/tests/rest/client/v1/utils.py index 579441fb4a..579441fb4a 100644 --- a/tests/rest/utils.py +++ b/tests/rest/client/v1/utils.py |