import { HashEncodingPathStorage } from '../../../../src/storage/keyvalue/HashEncodingPathStorage'; import type { KeyValueStorage } from '../../../../src/storage/keyvalue/KeyValueStorage'; import { NotImplementedHttpError } from '../../../../src/util/errors/NotImplementedHttpError'; describe('A HashEncodingPathStorage', (): void => { const relativePath = '/container/'; let map: Map; let source: KeyValueStorage; let storage: HashEncodingPathStorage; beforeEach(async(): Promise => { map = new Map(); source = map as any; storage = new HashEncodingPathStorage(relativePath, source); }); it('hashes the keys.', async(): Promise => { const key = 'key'; const hash = '2c70e12b7a0646f92279f427c7b38e7334d8e5389cff167a1dc30e73f826b683'; const data = 'data'; await storage.set(key, data); expect(map.size).toBe(1); expect(map.get(`${relativePath}${hash}`)).toBe(data); await expect(storage.get(key)).resolves.toBe(data); }); it('errors when paths should be converted back to keys.', async(): Promise => { await storage.set('key', 'data'); await expect(storage.entries().next()).rejects.toThrow(NotImplementedHttpError); }); });