auth-vir
Version:
Auth made easy and secure via JWT cookies, CSRF tokens, and password hashing helpers.
57 lines (56 loc) • 1.44 kB
JavaScript
/**
* Create an empty `accessRecord` object, this is to be used in conjunction with
* {@link createMockLocalStorage}.
*
* @category Mock
*/
export function createEmptyMockLocalStorageAccessRecord() {
return {
getItem: [],
removeItem: [],
setItem: [],
key: [],
};
}
/**
* Create a LocalStorage mock.
*
* @category Mock
*/
export function createMockLocalStorage(
/** Set values in here to initialize the mocked localStorage data store contents. */
init = {}) {
const store = init;
const accessRecord = createEmptyMockLocalStorageAccessRecord();
const mockLocalStorage = {
clear() {
Object.keys(store).forEach((key) => {
delete store[key];
});
},
getItem(key) {
accessRecord.getItem.push(key);
return store[key] ?? null;
},
get length() {
return Object.keys(store).length;
},
key(index) {
accessRecord.key.push(index);
return Object.keys(store)[index] ?? null;
},
removeItem(key) {
accessRecord.removeItem.push(key);
delete store[key];
},
setItem(key, value) {
accessRecord.setItem.push({ key, value });
store[key] = value;
},
};
return {
localStorage: mockLocalStorage,
store,
accessRecord,
};
}