49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import { BadRequestException } from '@nestjs/common';
|
|
import { adminDatabaseUrl, normalizeSlug, tenantDatabaseName, urlForDatabase } from './tenant-url';
|
|
|
|
describe('tenantDatabaseName', () => {
|
|
it('maps slug to a dedicated mysql database', () => {
|
|
expect(tenantDatabaseName('demo')).toBe('sinka_t_demo');
|
|
expect(tenantDatabaseName('filial-sul')).toBe('sinka_t_filial_sul');
|
|
});
|
|
});
|
|
|
|
describe('normalizeSlug', () => {
|
|
it('accepts a valid company code', () => {
|
|
expect(normalizeSlug(' Demo-01 ')).toBe('demo-01');
|
|
});
|
|
|
|
it('rejects reserved product paths', () => {
|
|
expect(() => normalizeSlug('admin')).toThrow(BadRequestException);
|
|
expect(() => normalizeSlug('login')).toThrow(BadRequestException);
|
|
expect(() => normalizeSlug('api')).toThrow(BadRequestException);
|
|
});
|
|
|
|
it('rejects codes that are too short or start with a digit', () => {
|
|
expect(() => normalizeSlug('a')).toThrow(BadRequestException);
|
|
expect(() => normalizeSlug('1demo')).toThrow(BadRequestException);
|
|
});
|
|
});
|
|
|
|
describe('database urls', () => {
|
|
const previous = {
|
|
DATABASE_URL: process.env.DATABASE_URL,
|
|
MYSQL_ADMIN_URL: process.env.MYSQL_ADMIN_URL,
|
|
};
|
|
|
|
afterEach(() => {
|
|
process.env.DATABASE_URL = previous.DATABASE_URL;
|
|
process.env.MYSQL_ADMIN_URL = previous.MYSQL_ADMIN_URL;
|
|
});
|
|
|
|
it('points the connection at the company database', () => {
|
|
process.env.DATABASE_URL = 'mysql://sinka:sinka@localhost:3306/sinka_platform';
|
|
expect(urlForDatabase('sinka_t_demo')).toBe('mysql://sinka:sinka@localhost:3306/sinka_t_demo');
|
|
});
|
|
|
|
it('keeps an admin url that already has a database', () => {
|
|
process.env.MYSQL_ADMIN_URL = 'mysql://root:root@localhost:3306';
|
|
expect(adminDatabaseUrl()).toBe('mysql://root:root@localhost:3306/mysql');
|
|
});
|
|
});
|