unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
87 lines • 3.11 kB
JavaScript
import { createTestConfig } from '../../../config/test-config.js';
import { TEST_AUDIT_USER, } from '../../../../lib/types/index.js';
import UserService from '../../../../lib/services/user-service.js';
import { AccessService } from '../../../../lib/services/access-service.js';
import { setupApp } from '../../helpers/test-helper.js';
import dbInit from '../../helpers/database-init.js';
import getLogger from '../../../fixtures/no-logger.js';
import { EmailService } from '../../../../lib/services/email-service.js';
import SessionService from '../../../../lib/services/session-service.js';
import { RoleName } from '../../../../lib/types/model.js';
import SettingService from '../../../../lib/services/setting-service.js';
import { GroupService } from '../../../../lib/services/group-service.js';
import ResetTokenService from '../../../../lib/services/reset-token-service.js';
import { createEventsService } from '../../../../lib/features/index.js';
let app;
let stores;
let db;
const config = createTestConfig({
getLogger,
server: {
unleashUrl: 'http://localhost:3000',
baseUriPath: '',
},
email: {
host: 'test',
},
});
const password = 'DtUYwi&l5I1KX4@Le';
let userService;
let adminUser;
beforeAll(async () => {
db = await dbInit('simple_password_provider_api_serial', getLogger);
stores = db.stores;
app = await setupApp(stores);
const eventService = createEventsService(db.rawDatabase, config);
const groupService = new GroupService(stores, config, eventService);
const accessService = new AccessService(stores, config, groupService, eventService);
const resetTokenService = new ResetTokenService(stores, config);
const emailService = new EmailService(config);
const sessionService = new SessionService(stores, config);
const settingService = new SettingService(stores, config, eventService);
userService = new UserService(stores, config, {
accessService,
resetTokenService,
emailService,
eventService,
sessionService,
settingService,
});
const adminRole = await accessService.getPredefinedRole(RoleName.ADMIN);
adminUser = await userService.createUser({
username: 'admin@test.com',
email: 'admin@test.com',
rootRole: adminRole.id,
password: password,
}, TEST_AUDIT_USER);
});
beforeEach(async () => {
app = await setupApp(stores);
});
afterEach(async () => {
await app.destroy();
});
afterAll(async () => {
await db.destroy();
});
test('Can log in', async () => {
await app.request
.post('/auth/simple/login')
.send({
username: adminUser.username,
password,
})
.expect(200);
});
test('Gets rate limited after 10 tries', async () => {
for (const statusCode of [...Array(10).fill(200), 429]) {
await app.request
.post('/auth/simple/login')
.send({
username: adminUser.username,
password,
})
.expect(statusCode);
}
});
//# sourceMappingURL=simple-password-provider.e2e.test.js.map