1
0

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:
Brendan Abolivier
2019-09-20 10:57:07 +01:00
committed by GitHub
3 changed files with 26 additions and 2 deletions

1
changelog.d/4.bugfix Normal file
View File

@@ -0,0 +1 @@
Fix handling of filtered strings in Python 3.

View File

@@ -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_]")

View File

@@ -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)