ipld-eth-server/postgraphile/spec/config/parse.spec.ts

79 lines
2.1 KiB
TypeScript

import { parseConfig } from '../../src/config/parse';
describe('parseConfig', () => {
let configPath: string;
let tomlContents: string;
let parsedToml: object;
let readCallback: jasmine.Spy;
let tomlParseCallback: jasmine.Spy;
beforeEach(() => {
configPath = '/example/config/path.toml';
tomlContents = `[database]\nname = 'example_database'\n `
+ `hostname = 'example.com'\nport = 1234`;
parsedToml = {
database: {
hostname: 'example.com',
name: 'example_database',
port: '1234',
user: 'user',
password: 'password'
}
};
readCallback = jasmine.createSpy('readCallback');
readCallback.and.returnValue(tomlContents);
tomlParseCallback = jasmine.createSpy('tomlParseCallback');
tomlParseCallback.and.returnValue(parsedToml);
});
it('provides the database host', () => {
const databaseConfig = parseConfig(
readCallback, tomlParseCallback, configPath);
expect(databaseConfig.host).toEqual('postgres://user:password@example.com:1234');
});
it('provides the database name', () => {
const databaseConfig = parseConfig(
readCallback, tomlParseCallback, configPath);
expect(databaseConfig.database).toEqual('example_database');
});
it('handles a missing config path', () => {
const failingCall = () =>
parseConfig(readCallback, tomlParseCallback, '');
tomlParseCallback.and.returnValue({
database: { hostname: 'example.com', name: 'example_database' }
});
expect(failingCall).toThrow();
});
it('handles a missing database host', () => {
const failingCall = () =>
parseConfig(readCallback, tomlParseCallback, configPath);
tomlParseCallback.and.returnValue({
database: { hostname: '', name: 'example_database' }
});
expect(failingCall).toThrow();
});
it('handles a missing database name', () => {
const failingCall = () =>
parseConfig(readCallback, tomlParseCallback, configPath);
tomlParseCallback.and.returnValue({
database: { hostname: 'example.com', name: '', port: '1234' }
});
expect(failingCall).toThrow();
});
});