Merge pull request #4 from matrix-org/babolivier/strip_invalid_mxid_characters
Fix handling of filtered strings in Python 3 when processing MXIDs
This commit is contained in:
1
changelog.d/4.bugfix
Normal file
1
changelog.d/4.bugfix
Normal file
@@ -0,0 +1 @@
|
||||
Fix handling of filtered strings in Python 3.
|
||||
@@ -16,6 +16,8 @@ import re
|
||||
import string
|
||||
from collections import namedtuple
|
||||
|
||||
from six.moves import filter
|
||||
|
||||
import attr
|
||||
|
||||
from synapse.api.errors import SynapseError
|
||||
@@ -240,7 +242,8 @@ def strip_invalid_mxid_characters(localpart):
|
||||
Returns:
|
||||
localpart (basestring): the localpart having been stripped
|
||||
"""
|
||||
return filter(lambda c: c in mxid_localpart_allowed_characters, localpart)
|
||||
filtered = filter(lambda c: c in mxid_localpart_allowed_characters, localpart)
|
||||
return "".join(filtered)
|
||||
|
||||
|
||||
UPPER_CASE_PATTERN = re.compile(b"[A-Z_]")
|
||||
|
||||
@@ -12,9 +12,16 @@
|
||||
# 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 six import string_types
|
||||
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.types import GroupID, RoomAlias, UserID, map_username_to_mxid_localpart
|
||||
from synapse.types import (
|
||||
GroupID,
|
||||
RoomAlias,
|
||||
UserID,
|
||||
map_username_to_mxid_localpart,
|
||||
strip_invalid_mxid_characters,
|
||||
)
|
||||
|
||||
from tests import unittest
|
||||
from tests.utils import TestHomeServer
|
||||
@@ -106,3 +113,16 @@ class MapUsernameTestCase(unittest.TestCase):
|
||||
self.assertEqual(
|
||||
map_username_to_mxid_localpart(u'têst'.encode('utf-8')), "t=c3=aast"
|
||||
)
|
||||
|
||||
|
||||
class StripInvalidMxidCharactersTestCase(unittest.TestCase):
|
||||
def test_return_type(self):
|
||||
unstripped = strip_invalid_mxid_characters("test")
|
||||
stripped = strip_invalid_mxid_characters("test@")
|
||||
|
||||
self.assertTrue(isinstance(unstripped, string_types), type(unstripped))
|
||||
self.assertTrue(isinstance(stripped, string_types), type(stripped))
|
||||
|
||||
def test_strip(self):
|
||||
stripped = strip_invalid_mxid_characters("test@")
|
||||
self.assertEqual(stripped, "test", stripped)
|
||||
|
||||
Reference in New Issue
Block a user