def test_db_upgrade(self, tempdir): user = "******" device_id = "DEVICE_ID" user2 = "alice" device_id2 = "ALICE_ID" store = MatrixStore(user, device_id, tempdir, database_name="test.db") account = OlmAccount() session = OutboundSession(account, BOB_CURVE, BOB_ONETIME) out_group = OutboundGroupSession() in_group = InboundGroupSession(out_group.session_key, account.identity_keys["ed25519"], account.identity_keys["curve25519"], TEST_ROOM, TEST_FORWARDING_CHAIN) devices = self.example_devices assert len(devices) == 11 store.save_account(account) store.save_session(BOB_CURVE, session) store.save_inbound_group_session(in_group) store.save_device_keys(devices) store2 = MatrixStore(user2, device_id2, tempdir, database_name="test.db") account2 = OlmAccount() store2.save_account(account2) del store store = MatrixStore(user, device_id, tempdir, database_name="test.db") loaded_account = store.load_account() assert account.identity_keys == loaded_account.identity_keys session_store = store.load_sessions() loaded_session = session_store.get(BOB_CURVE) session_store = store.load_inbound_group_sessions() assert loaded_session assert session.id == loaded_session.id loaded_session = session_store.get(TEST_ROOM, account.identity_keys["curve25519"], in_group.id) device_store = store.load_device_keys() # pdb.set_trace() assert loaded_session assert in_group.id == loaded_session.id assert (sorted( loaded_session.forwarding_chain) == sorted(TEST_FORWARDING_CHAIN)) bob_device = device_store[BOB_ID][BOB_DEVICE] assert bob_device assert bob_device.user_id == BOB_ID assert bob_device.id == BOB_DEVICE assert bob_device.ed25519 == BOB_ONETIME assert bob_device.curve25519 == BOB_CURVE assert not bob_device.deleted assert len(device_store.users) == 11
def test_new_store_group_session(self, store): account = store.load_account() out_group = OutboundGroupSession() in_group = InboundGroupSession( out_group.session_key, account.identity_keys["ed25519"], account.identity_keys["curve25519"], TEST_ROOM, TEST_FORWARDING_CHAIN ) store.save_inbound_group_session(in_group) store2 = self.copy_store(store) session_store = store2.load_inbound_group_sessions() loaded_session = session_store.get( TEST_ROOM, account.identity_keys["curve25519"], in_group.id ) assert loaded_session assert in_group.id == loaded_session.id assert (sorted(loaded_session.forwarding_chain) == sorted(TEST_FORWARDING_CHAIN))
def test_group_session_store(self): store = GroupSessionStore() account = OlmAccount() out_group = OutboundGroupSession() session = InboundGroupSession(out_group.session_key, account.identity_keys["ed25519"], BOB_CURVE, TEST_ROOM) assert session not in store assert not store.get(TEST_ROOM, BOB_CURVE, session.id) assert store.add(session) assert store.get(TEST_ROOM, BOB_CURVE, session.id) assert session in store assert not store.add(session) assert store[TEST_ROOM] == {BOB_CURVE: {session.id: session}}
def test_outbound_group_session(self): session = OutboundGroupSession() assert not session.expired assert not session.shared assert session.message_count == 0 with pytest.raises(EncryptionError): session.encrypt("Hello") session.mark_as_shared() assert session.shared session.encrypt("Hello") assert session.message_count == 1 session.message_count = 101 assert session.expired with pytest.raises(EncryptionError): session.encrypt("Hello")