Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / applications / drive / src / app / store / _search / indexing / useKeysCache.test.ts
blobcb2d72fb71ae754f1258c009de632ede34fedc4c
1 import type { CryptoApiInterface, PrivateKeyReference } from '@proton/crypto';
2 import { CryptoProxy } from '@proton/crypto';
3 import { LinkType } from '@proton/shared/lib/interfaces/drive/link';
5 import type { KeyCache } from './useKeysCache';
6 import { createKeysCache } from './useKeysCache';
8 const linkMock = {
9     CreateTime: 123456,
10     Hash: '',
11     Index: 0,
12     LinkID: 'link-mock-id',
13     MIMEType: '',
14     ModifyTime: 1234,
15     Name: '',
16     ParentLinkID: null,
17     Size: 123,
18     State: 0,
19     Type: LinkType.FOLDER,
22 const DECRYPTED_NAME = 'a smell of petroleum prevails throughout';
23 const PRIVATE_KEY = 'private-key';
25 const mockedCryptoApi = {
26     importPrivateKey: jest.fn().mockImplementation(() => PRIVATE_KEY),
27 } as any as CryptoApiInterface;
29 jest.mock('@proton/shared/lib/keys/driveKeys', () => ({
30     decryptUnsigned: jest.fn().mockImplementation(() => DECRYPTED_NAME),
31 }));
33 jest.mock('@proton/shared/lib/keys/drivePassphrase', () => ({
34     decryptPassphrase: jest.fn().mockImplementation(() => ({
35         decryptedPassphrase: '',
36     })),
37 }));
39 describe('useKeysCache', () => {
40     let keyCache: KeyCache;
42     beforeAll(() => {
43         CryptoProxy.setEndpoint(mockedCryptoApi);
44     });
46     afterAll(async () => {
47         await CryptoProxy.releaseEndpoint();
48     });
50     beforeEach(() => {
51         keyCache = createKeysCache('key' as unknown as PrivateKeyReference);
52     });
54     it('caches decrypted links', async () => {
55         const { name } = await keyCache.decryptAndCacheLink(linkMock, {} as unknown as PrivateKeyReference);
57         expect(name).toEqual(DECRYPTED_NAME);
58         const key = keyCache.getCachedPrivateKey(linkMock.LinkID);
59         expect(key).toEqual(PRIVATE_KEY);
60     });
62     it("returns undefined when unknown link's keys are requested", async () => {
63         const result = keyCache.getCachedPrivateKey('new-link-id');
64         expect(result).toBe(undefined);
65     });
66 });