Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion apps/meteor/client/lib/userData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,8 @@ export const synchronizeUserData = async (uid: IUser['_id']): Promise<RawUserDat
return userData;
};

export const removeLocalUserData = (): number => Users.remove({});
export const removeLocalUserData = (): number => {
const removed = Users.remove({});
localStorage.clear();
return removed;
};
43 changes: 43 additions & 0 deletions apps/meteor/tests/e2e/account-login.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { Users, restoreState } from './fixtures/userStates';
import { test, expect } from './utils/test';

test.use({ storageState: Users.userE2EE.state });

test.describe('Account Login', () => {
test.beforeAll(async ({ api }) => {
await api.post('/settings/E2E_Enable', { value: true });
await api.post('/settings/E2E_Allow_Unencrypted_Messages', { value: true });
});

test.afterAll(async ({ api }) => {
await api.post('/settings/E2E_Enable', { value: false });
await api.post('/settings/E2E_Allow_Unencrypted_Messages', { value: false });
});

test.beforeEach(async ({ page }) => {
await page.goto('/home');
await restoreState(page, Users.userE2EE);
});

test('should remove private_key and public_key from localStorage when token expires', async ({ page }) => {
expect(await page.evaluate(() => localStorage.getItem('Meteor.userId'))).not.toBeNull();
expect(await page.evaluate(() => localStorage.getItem('Meteor.loginToken'))).not.toBeNull();
expect(await page.evaluate(() => localStorage.getItem('Meteor.loginTokenExpires'))).not.toBeNull();
expect(await page.evaluate(() => localStorage.getItem('private_key'))).not.toBeNull();
expect(await page.evaluate(() => localStorage.getItem('public_key'))).not.toBeNull();

await page.evaluate(() => {
localStorage.setItem('Meteor.loginTokenExpires', new Date().toString());
});

await page.reload();

await expect(page.getByRole('form', { name: 'Login' })).toBeVisible();

expect(await page.evaluate(() => localStorage.getItem('Meteor.userId'))).toBeNull();
expect(await page.evaluate(() => localStorage.getItem('Meteor.loginToken'))).toBeNull();
expect(await page.evaluate(() => localStorage.getItem('Meteor.loginTokenExpires'))).toBeNull();
expect(await page.evaluate(() => localStorage.getItem('private_key'))).toBeNull();
expect(await page.evaluate(() => localStorage.getItem('public_key'))).toBeNull();
});
});
Loading