unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
79 lines • 2.84 kB
JavaScript
import dbInit from '../helpers/database-init.js';
import getLogger from '../../fixtures/no-logger.js';
import { createTestConfig } from '../../config/test-config.js';
import { ApiTokenType } from '../../../lib/types/model.js';
import { DEFAULT_ENV } from '../../../lib/util/constants.js';
import { addDays, subDays } from 'date-fns';
import { createProjectService } from '../../../lib/features/index.js';
import { EdgeService } from '../../../lib/services/index.js';
import { TEST_AUDIT_USER, } from '../../../lib/types/index.js';
import { createApiTokenService } from '../../../lib/features/api-tokens/createApiTokenService.js';
let db;
let stores;
let edgeService;
let projectService;
beforeAll(async () => {
const config = createTestConfig({
server: { baseUriPath: '/test' },
experimental: {
flags: {
useMemoizedActiveTokens: true,
},
},
});
db = await dbInit('api_token_service_serial', getLogger);
stores = db.stores;
const project = {
id: 'test-project',
name: 'Test Project',
description: 'Fancy',
mode: 'open',
defaultStickiness: 'clientId',
};
const user = await stores.userStore.insert({
name: 'Some Name',
email: 'test@getunleash.io',
});
projectService = createProjectService(db.rawDatabase, config);
await projectService.createProject(project, user, TEST_AUDIT_USER);
const apiTokenService = createApiTokenService(db.rawDatabase, config);
edgeService = new EdgeService({ apiTokenService }, config);
});
afterAll(async () => {
if (db) {
await db.destroy();
}
});
afterEach(async () => {
const tokens = await stores.apiTokenStore.getAll();
const deleteAll = tokens.map((t) => stores.apiTokenStore.delete(t.secret));
await Promise.all(deleteAll);
});
test('should only return valid tokens', async () => {
const now = Date.now();
const yesterday = subDays(now, 1);
const tomorrow = addDays(now, 1);
const expiredToken = await stores.apiTokenStore.insert({
tokenName: 'expired',
secret: '*:environment.expired-secret',
type: ApiTokenType.BACKEND,
expiresAt: yesterday,
projects: ['*'],
environment: DEFAULT_ENV,
});
const activeToken = await stores.apiTokenStore.insert({
tokenName: 'default-valid',
secret: '*:environment.valid-secret',
type: ApiTokenType.BACKEND,
expiresAt: tomorrow,
projects: ['*'],
environment: DEFAULT_ENV,
});
const response = await edgeService.getValidTokens([
activeToken.secret,
expiredToken.secret,
]);
expect(response.tokens.length).toBe(1);
expect(activeToken.secret).toBe(response.tokens[0].token);
});
//# sourceMappingURL=edge-service.e2e.test.js.map