0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-23 22:27:34 -05:00
verdaccio/packages/plugins/local-storage/tests/token.test.ts
Behrang Yarahmadi 13310814da
#2606 add prettier plugin sort imports (#2607)
* #2606 add prettier plugin sort imprts

* #2606 update pnpm-lock.yaml

* #2606 update eslint rules

* #2606 fixes website directory formatting

Co-authored-by: Ayush Sharma <ayush.sharma@trivago.com>
2021-10-29 17:33:05 +02:00

86 lines
2.5 KiB
TypeScript

/* eslint-disable jest/no-mocks-import */
import fs from 'fs';
import path from 'path';
import { dirSync } from 'tmp-promise';
import { Logger, Token } from '@verdaccio/types';
import LocalDatabase from '../src/local-database';
const logger: Logger = {
error: jest.fn(),
info: jest.fn(),
debug: jest.fn(),
child: jest.fn(),
warn: jest.fn(),
http: jest.fn(),
trace: jest.fn(),
};
describe('Local Database', () => {
let tmpFolder;
let locaDatabase;
beforeEach(async () => {
tmpFolder = dirSync({ unsafeCleanup: true });
const tempFolder = path.join(tmpFolder.name, 'verdaccio-test.yaml');
const writeMock = jest.spyOn(fs, 'writeFileSync').mockImplementation();
locaDatabase = new LocalDatabase( // @ts-expect-error
{
storage: 'storage',
config_path: tempFolder,
checkSecretKey: () => 'fooX',
},
logger
);
await (locaDatabase as any).init();
(locaDatabase as any).clean();
writeMock.mockClear();
});
afterEach(() => {
jest.clearAllMocks();
});
describe('token', () => {
let token: Token = {
user: 'someUser',
token: 'foo..foo',
key: 'someHash',
readonly: true,
created: 1234,
};
test('should save and get token', async () => {
await locaDatabase.saveToken(token);
const tokens = await locaDatabase.readTokens({ user: token.user });
expect(tokens).toHaveLength(1);
expect(tokens[0]).toEqual(token);
});
test('should revoke and get token', async () => {
await locaDatabase.saveToken(token);
const tokens = await locaDatabase.readTokens({ user: token.user });
expect(tokens).toHaveLength(1);
expect(tokens[0]).toEqual(token);
await locaDatabase.deleteToken(token.user, token.key);
const tokens2 = await locaDatabase.readTokens({ user: token.user });
expect(tokens2).toHaveLength(0);
});
test('should fail on revoke', async () => {
await expect(locaDatabase.deleteToken({ user: 'foo', key: 'bar' })).rejects.toThrow(
'user not found'
);
});
test('should verify save more than one token', async () => {
await locaDatabase.saveToken(token);
const tokens = await locaDatabase.readTokens({ user: token.user });
expect(tokens).toHaveLength(1);
expect(tokens[0]).toEqual(token);
await locaDatabase.saveToken({ ...token, key: 'foo' });
expect(tokens).toHaveLength(2);
expect(tokens[1].key).toEqual('foo');
});
});
});