mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-12 10:50:31 +00:00
89 lines
2.1 KiB
JavaScript
89 lines
2.1 KiB
JavaScript
import chai from 'chai';
|
|
import chaiHttp from 'chai-http';
|
|
import chaiThings from 'chai-things';
|
|
import systemDb from '@/database/knex';
|
|
import app from 'app';
|
|
import createTenantFactory from '@/database/factories';
|
|
import TenantsManager from '@/system/TenantsManager';
|
|
import faker from 'faker';
|
|
import { hashPassword } from 'utils';
|
|
import TenantModel from 'models/TenantModel';
|
|
import createSystemFactory from '@/database/factories/system';
|
|
|
|
|
|
const { expect } = chai;
|
|
const request = () => chai.request(app);
|
|
|
|
beforeEach(async () => {
|
|
// Rollback/migrate the system database.
|
|
await systemDb.migrate.rollback();
|
|
await systemDb.migrate.latest();
|
|
});
|
|
|
|
afterEach(async () => {
|
|
});
|
|
|
|
chai.use(chaiHttp);
|
|
chai.use(chaiThings);
|
|
|
|
// Create tenant database.
|
|
const createTenant = () => {
|
|
return TenantsManager.createTenant();
|
|
};
|
|
|
|
// Drops tenant database.
|
|
const dropTenant = async (tenantWebsite) => {
|
|
return TenantsManager.dropTenant(tenantWebsite);
|
|
};
|
|
|
|
// Create a new user that associate to the given tenant Db.
|
|
const createUser = async (tenantWebsite, givenUser) => {
|
|
const userPassword = (givenUser && givenUser.password) ? givenUser.password : 'admin'
|
|
const hashedPassword = await hashPassword(userPassword);
|
|
|
|
const userInfo = {
|
|
first_name: faker.lorem.word(),
|
|
last_name: faker.lorem.word(),
|
|
email: faker.internet.email(),
|
|
active: 1,
|
|
phone_number: faker.phone.phoneNumberFormat().replace('-', ''),
|
|
password: hashedPassword,
|
|
...givenUser,
|
|
};
|
|
const user = await TenantsManager.createTenantUser(tenantWebsite, userInfo);
|
|
return user;
|
|
};
|
|
|
|
const login = async (tenantWebsite, givenUser) => {
|
|
let user = givenUser;
|
|
|
|
if (!givenUser && tenantWebsite) {
|
|
const createdUser = await createUser(tenantWebsite, givenUser);
|
|
user = createdUser;
|
|
}
|
|
return request()
|
|
.post('/api/auth/login')
|
|
.send({
|
|
crediential: user.email,
|
|
password: 'admin',
|
|
});
|
|
};
|
|
|
|
const bindTenantModel = (tenantDb) => {
|
|
TenantModel.knexBinded = tenantDb;
|
|
};
|
|
|
|
const systemFactory = createSystemFactory();
|
|
|
|
export {
|
|
login,
|
|
systemFactory,
|
|
createTenantFactory,
|
|
createTenant,
|
|
createUser,
|
|
dropTenant,
|
|
expect,
|
|
request,
|
|
bindTenantModel,
|
|
};
|