Пример #1
0
    def _add_new_user(self, room_id, user_id):
        """Add new user to the room by creating an event and poking the federation API."""

        hostname = get_domain_from_id(user_id)

        room_version = self.get_success(
            self.store.get_room_version_id(room_id))

        builder = EventBuilder(
            state=self.state,
            auth=self.auth,
            store=self.store,
            clock=self.clock,
            hostname=hostname,
            signing_key=self.random_signing_key,
            room_version=KNOWN_ROOM_VERSIONS[room_version],
            room_id=room_id,
            type=EventTypes.Member,
            sender=user_id,
            state_key=user_id,
            content={"membership": Membership.JOIN},
        )

        prev_event_ids = self.get_success(
            self.store.get_latest_event_ids_in_room(room_id))

        event = self.get_success(builder.build(prev_event_ids, None))

        self.get_success(
            self.federation_handler.on_receive_pdu(hostname, event))

        # Check that it was successfully persisted.
        self.get_success(self.store.get_event(event.event_id))
        self.get_success(self.store.get_event(event.event_id))
Пример #2
0
    def test_sign_message(self):
        builder = EventBuilder({
            'content': {
                'body': "Here is the message content",
            },
            'event_id': "$0:domain",
            'origin': "domain",
            'origin_server_ts': 1000000,
            'type': "m.room.message",
            'room_id': "!r:domain",
            'sender': "@u:domain",
            'signatures': {},
            'unsigned': {
                'age_ts': 1000000
            },
        })

        add_hashes_and_signatures(builder, HOSTNAME, self.signing_key)

        event = builder.build()

        self.assertTrue(hasattr(event, 'hashes'))
        self.assertIn('sha256', event.hashes)
        self.assertEquals(
            event.hashes['sha256'],
            "onLKD1bGljeBWQhWZ1kaP9SorVmRQNdN5aM2JYU2n/g",
        )

        self.assertTrue(hasattr(event, 'signatures'))
        self.assertIn(HOSTNAME, event.signatures)
        self.assertIn(KEY_NAME, event.signatures["domain"])
        self.assertEquals(
            event.signatures[HOSTNAME][KEY_NAME],
            "Wm+VzmOUOz08Ds+0NTWb1d4CZrVsJSikkeRxh6aCcUw"
            "u6pNC78FunoD7KNWzqFn241eYHYMGCA5McEiVPdhzBA")
Пример #3
0
    def test_sign_minimal(self):
        builder = EventBuilder(
            {
                'event_id': "$0:domain",
                'origin': "domain",
                'origin_server_ts': 1000000,
                'signatures': {},
                'type': "X",
                'unsigned': {
                    'age_ts': 1000000
                },
            }, )

        add_hashes_and_signatures(builder, HOSTNAME, self.signing_key)

        event = builder.build()

        self.assertTrue(hasattr(event, 'hashes'))
        self.assertIn('sha256', event.hashes)
        self.assertEquals(
            event.hashes['sha256'],
            "6tJjLpXtggfke8UxFhAKg82QVkJzvKOVOOSjUDK4ZSI",
        )

        self.assertTrue(hasattr(event, 'signatures'))
        self.assertIn(HOSTNAME, event.signatures)
        self.assertIn(KEY_NAME, event.signatures["domain"])
        self.assertEquals(
            event.signatures[HOSTNAME][KEY_NAME],
            "2Wptgo4CwmLo/Y8B8qinxApKaCkBG2fjTWB7AbP5Uy+"
            "aIbygsSdLOFzvdDjww8zUVKCmI02eP9xtyJxc/cLiBA",
        )
Пример #4
0
    def test_sign_minimal(self):
        builder = EventBuilder(
            {
                'event_id': "$0:domain",
                'origin': "domain",
                'origin_server_ts': 1000000,
                'signatures': {},
                'type': "X",
                'unsigned': {'age_ts': 1000000},
            },
        )

        add_hashes_and_signatures(builder, HOSTNAME, self.signing_key)

        event = builder.build()

        self.assertTrue(hasattr(event, 'hashes'))
        self.assertIn('sha256', event.hashes)
        self.assertEquals(
            event.hashes['sha256'],
            "6tJjLpXtggfke8UxFhAKg82QVkJzvKOVOOSjUDK4ZSI",
        )

        self.assertTrue(hasattr(event, 'signatures'))
        self.assertIn(HOSTNAME, event.signatures)
        self.assertIn(KEY_NAME, event.signatures["domain"])
        self.assertEquals(
            event.signatures[HOSTNAME][KEY_NAME],
            "2Wptgo4CwmLo/Y8B8qinxApKaCkBG2fjTWB7AbP5Uy+"
            "aIbygsSdLOFzvdDjww8zUVKCmI02eP9xtyJxc/cLiBA",
        )
Пример #5
0
    def test_sign_message(self):
        builder = EventBuilder(
            {
                'content': {'body': "Here is the message content"},
                'event_id': "$0:domain",
                'origin': "domain",
                'origin_server_ts': 1000000,
                'type': "m.room.message",
                'room_id': "!r:domain",
                'sender': "@u:domain",
                'signatures': {},
                'unsigned': {'age_ts': 1000000},
            }
        )

        add_hashes_and_signatures(builder, HOSTNAME, self.signing_key)

        event = builder.build()

        self.assertTrue(hasattr(event, 'hashes'))
        self.assertIn('sha256', event.hashes)
        self.assertEquals(
            event.hashes['sha256'], "onLKD1bGljeBWQhWZ1kaP9SorVmRQNdN5aM2JYU2n/g"
        )

        self.assertTrue(hasattr(event, 'signatures'))
        self.assertIn(HOSTNAME, event.signatures)
        self.assertIn(KEY_NAME, event.signatures["domain"])
        self.assertEquals(
            event.signatures[HOSTNAME][KEY_NAME],
            "Wm+VzmOUOz08Ds+0NTWb1d4CZrVsJSikkeRxh6aCcUw"
            "u6pNC78FunoD7KNWzqFn241eYHYMGCA5McEiVPdhzBA",
        )
Пример #6
0
    def _add_new_user(self, room_id, user_id):
        """Add new user to the room by creating an event and poking the federation API.
        """

        hostname = get_domain_from_id(user_id)

        room_version = self.get_success(self.store.get_room_version(room_id))

        builder = EventBuilder(
            state=self.state,
            auth=self.auth,
            store=self.store,
            clock=self.clock,
            hostname=hostname,
            signing_key=self.random_signing_key,
            format_version=room_version_to_event_format(room_version),
            room_id=room_id,
            type=EventTypes.Member,
            sender=user_id,
            state_key=user_id,
            content={"membership": Membership.JOIN},
        )

        prev_event_ids = self.get_success(
            self.store.get_latest_event_ids_in_room(room_id)
        )

        event = self.get_success(builder.build(prev_event_ids))

        self.get_success(self.federation_handler.on_receive_pdu(hostname, event))

        # Check that it was successfully persisted.
        self.get_success(self.store.get_event(event.event_id))
        self.get_success(self.store.get_event(event.event_id))