mirror of
https://github.com/django/daphne.git
synced 2025-07-14 18:02:17 +03:00
Also normalise include patterns, and add tests for all regex norm
This commit is contained in:
parent
7864519241
commit
8a65199bfe
|
@ -205,7 +205,10 @@ class Include(object):
|
||||||
|
|
||||||
def __init__(self, routing, **kwargs):
|
def __init__(self, routing, **kwargs):
|
||||||
self.routing = Router.resolve_routing(routing)
|
self.routing = Router.resolve_routing(routing)
|
||||||
self.prefixes = kwargs
|
self.prefixes = {
|
||||||
|
name: Router.normalise_re_arg(value)
|
||||||
|
for name, value in kwargs.items()
|
||||||
|
}
|
||||||
# Sanity check prefix regexes
|
# Sanity check prefix regexes
|
||||||
for name, value in self.prefixes.items():
|
for name, value in self.prefixes.items():
|
||||||
if not value.startswith("^"):
|
if not value.startswith("^"):
|
||||||
|
|
|
@ -230,3 +230,57 @@ class RoutingTests(SimpleTestCase):
|
||||||
Router([
|
Router([
|
||||||
include("channels.tests.test_routing.chatroom_routing_noprefix", path="^/foobar/"),
|
include("channels.tests.test_routing.chatroom_routing_noprefix", path="^/foobar/"),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def test_mixed_unicode_bytes(self):
|
||||||
|
"""
|
||||||
|
Tests that having the message key be bytes and pattern unicode (or vice-versa)
|
||||||
|
still works.
|
||||||
|
"""
|
||||||
|
# Unicode patterns, byte message
|
||||||
|
router = Router([
|
||||||
|
route("websocket.connect", consumer_1, path="^/foo/"),
|
||||||
|
include("channels.tests.test_routing.chatroom_routing", path="^/ws/v(?P<version>[0-9]+)"),
|
||||||
|
])
|
||||||
|
self.assertRoute(
|
||||||
|
router,
|
||||||
|
channel="websocket.connect",
|
||||||
|
content={"path": b"/boom/"},
|
||||||
|
consumer=None,
|
||||||
|
)
|
||||||
|
self.assertRoute(
|
||||||
|
router,
|
||||||
|
channel="websocket.connect",
|
||||||
|
content={"path": b"/foo/"},
|
||||||
|
consumer=consumer_1,
|
||||||
|
)
|
||||||
|
self.assertRoute(
|
||||||
|
router,
|
||||||
|
channel="websocket.connect",
|
||||||
|
content={"path": b"/ws/v2/chat/django/"},
|
||||||
|
consumer=consumer_2,
|
||||||
|
kwargs={"version": "2", "room": "django"},
|
||||||
|
)
|
||||||
|
# Byte patterns, unicode message
|
||||||
|
router = Router([
|
||||||
|
route("websocket.connect", consumer_1, path=b"^/foo/"),
|
||||||
|
include("channels.tests.test_routing.chatroom_routing", path=b"^/ws/v(?P<version>[0-9]+)"),
|
||||||
|
])
|
||||||
|
self.assertRoute(
|
||||||
|
router,
|
||||||
|
channel="websocket.connect",
|
||||||
|
content={"path": "/boom/"},
|
||||||
|
consumer=None,
|
||||||
|
)
|
||||||
|
self.assertRoute(
|
||||||
|
router,
|
||||||
|
channel="websocket.connect",
|
||||||
|
content={"path": "/foo/"},
|
||||||
|
consumer=consumer_1,
|
||||||
|
)
|
||||||
|
self.assertRoute(
|
||||||
|
router,
|
||||||
|
channel="websocket.connect",
|
||||||
|
content={"path": "/ws/v2/chat/django/"},
|
||||||
|
consumer=consumer_2,
|
||||||
|
kwargs={"version": "2", "room": "django"},
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user