23 lines
1.4 KiB
Plaintext
23 lines
1.4 KiB
Plaintext
def test_concurrent_account_switches_cannot_leak_another_accounts_page(self):
|
|
other = fixtures.WeChatMessageBrowserTests()._database(self.root, '777')
|
|
self.update('UPDATE message_table SET server_id=? WHERE server_id=?', ('account-777', 's2'), other / 'message.db')
|
|
def read(account):
|
|
return browser.load_browser_snapshot(cache_roots=[self.root], selected_account=account, selected_conversation='M:200')
|
|
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:
|
|
results = list(pool.map(read, ['100', '777'] * 8))
|
|
for index, result in enumerate(results):
|
|
account = '100' if index % 2 == 0 else '777'
|
|
self.assertEqual(result['selectedAccount'], account)
|
|
self.assertEqual(result['messages'][-1]['senderId'], account)
|
|
self.assertEqual(result['messages'][-1]['id'], 's2' if account == '100' else 'account-777')
|
|
|
|
def test_deletion_invalidates_message_and_conversation_counts(self):
|
|
self.snapshot(selected_conversation='M:200')
|
|
self.update('DELETE FROM message_table WHERE conversation_id=?', ('M:200',))
|
|
result = self.snapshot(selected_conversation='M:200')
|
|
self.assertEqual(result['messageCount'], 1)
|
|
self.assertEqual(result['conversationCount'], 1)
|
|
self.assertEqual(result['selectedConversation'], 'S:100_300')
|
|
self.assertEqual(result['messages'][0]['id'], 's3')
|
|
|