mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-14 11:50:31 +00:00
add server to monorepo.
This commit is contained in:
88
packages/server/tests/testInit.js
Normal file
88
packages/server/tests/testInit.js
Normal file
@@ -0,0 +1,88 @@
|
||||
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,
|
||||
};
|
||||
Reference in New Issue
Block a user