blob: dd0fed203eab9c32a99dd10c49e1f0cb545400d7 [file] [log] [blame]
// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
/**
* @fileoverview Test suite for the session-local, encrypted cache.
*/
describe('lib_credential_cache_tests.js', () => {
/**
* Verify that the cache remains enabled after being enabled once.
*/
it('enabled', () => {
const cache = new lib.CredentialCache();
assert.isNull(cache.isEnabled());
cache.setEnabled(true);
assert.isTrue(cache.isEnabled());
cache.setEnabled(false);
assert.isTrue(cache.isEnabled());
});
/**
* Verify that the cache remains disabled after being disabled once.
*/
it('disabled', () => {
const cache = new lib.CredentialCache();
assert.isNull(cache.isEnabled());
cache.setEnabled(false);
assert.isFalse(cache.isEnabled());
cache.setEnabled(true);
assert.isFalse(cache.isEnabled());
});
/**
* Simulate and verify a typical workflow consisting of store and retrieve
* operations.
*/
it('workflow', async () => {
const cache = new lib.CredentialCache();
const keyId1 = 'AABBCCDDEEFF';
const keyId2 = 'FFEEDDCCBBAA';
await cache.store('reader_1' + keyId1, new Uint8Array([1, 2, 4, 8]));
assert.deepStrictEqual(await cache.retrieve('foobar_1' + keyId1), null);
assert.deepStrictEqual(await cache.retrieve('reader_1' + keyId2), null);
assert.deepStrictEqual(
Array.from(lib.notNull(await cache.retrieve('reader_1' + keyId1))),
[1, 2, 4, 8]);
assert.deepStrictEqual(await cache.retrieve('reader_1' + keyId1), null);
await cache.store('reader_2' + keyId1, new Uint8Array([1, 3, 9, 27]));
await cache.store('reader_1' + keyId2, new Uint8Array([1, 5, 25]));
await cache.store('reader_1' + keyId2, new Uint8Array([1, 7]));
assert.deepStrictEqual(
Array.from(lib.notNull(await cache.retrieve('reader_1' + keyId2))),
[1, 7]);
assert.deepStrictEqual(await cache.retrieve('reader_1' + keyId2), null);
await cache.store('reader_1' + keyId2, new Uint8Array([1, 5, 25]));
assert.deepStrictEqual(
Array.from(lib.notNull(await cache.retrieve('reader_1' + keyId2))),
[1, 5, 25]);
});
});