Skip to content
Snippets Groups Projects
test_client.py 1.79 KiB
Newer Older
  • Learn to ignore specific revisions
  • import json
    
    from synapse.api.room_versions import RoomVersions
    from synapse.federation.transport.client import SendJoinParser
    
    from tests.unittest import TestCase
    
    
    class SendJoinParserTestCase(TestCase):
        def test_two_writes(self) -> None:
            """Test that the parser can sensibly deserialise an input given in two slices."""
            parser = SendJoinParser(RoomVersions.V1, True)
            parent_event = {
                "content": {
                    "see_room_version_spec": "The event format changes depending on the room version."
                },
                "event_id": "$authparent",
                "room_id": "!somewhere:example.org",
                "type": "m.room.minimal_pdu",
            }
            state = {
                "content": {
                    "see_room_version_spec": "The event format changes depending on the room version."
                },
                "event_id": "$DoNotThinkAboutTheEvent",
                "room_id": "!somewhere:example.org",
                "type": "m.room.minimal_pdu",
            }
            response = [
                200,
                {
                    "auth_chain": [parent_event],
                    "origin": "matrix.org",
                    "state": [state],
                },
            ]
            serialised_response = json.dumps(response).encode()
    
            # Send data to the parser
            parser.write(serialised_response[:100])
            parser.write(serialised_response[100:])
    
            # Retrieve the parsed SendJoinResponse
            parsed_response = parser.finish()
    
            # Sanity check the parsing gave us sensible data.
            self.assertEqual(len(parsed_response.auth_events), 1, parsed_response)
            self.assertEqual(len(parsed_response.state), 1, parsed_response)
            self.assertEqual(parsed_response.event_dict, {}, parsed_response)
            self.assertIsNone(parsed_response.event, parsed_response)