kibana/test/utils/kbn_server.js
Spencer e488a16e6f [eslint] reenable no-extra-semi and quotes rules (#9473)
* [eslint] re-enable no-extra-semi and quotes rules

* [eslint] update to version 0.2.2 of eslint config

* [eslint] autofix
2016-12-13 18:17:47 -07:00

63 lines
1.8 KiB
JavaScript

import url from 'url';
import { defaultsDeep, set } from 'lodash';
import { header as basicAuthHeader } from './base_auth';
import { kibanaUser, kibanaServer } from '../shield';
import KbnServer from '../../src/server/kbn_server';
import serverConfig from '../server_config';
const SERVER_DEFAULTS = {
server: {
autoListen: false,
xsrf: {
disableProtection: true
}
},
logging: {
quiet: true
},
plugins: {},
optimize: {
enabled: false
},
elasticsearch: {
url: url.format(serverConfig.servers.elasticsearch),
username: kibanaServer.username,
password: kibanaServer.password
}
};
/**
* Creates an instance of KbnServer with default configuration
* tailored for unit tests
*
* @param {object} params Any config overrides for this instance
*/
export function createServer(params = {}) {
params = defaultsDeep({}, params, SERVER_DEFAULTS);
return new KbnServer(params);
}
/**
* Creates request configuration with a basic auth header
*/
export function authOptions() {
const { username, password } = kibanaUser;
const authHeader = basicAuthHeader(username, password);
return set({}, 'headers.Authorization', authHeader);
}
/**
* Makes a request with test headers via hapi server inject()
*
* The given options are decorated with default testing options, so it's
* recommended to use this function instead of using inject() directly whenever
* possible throughout the tests.
*
* @param {KbnServer} kbnServer
* @param {object} options Any additional options or overrides for inject()
* @param {Function} fn The callback to pass as the second arg to inject()
*/
export function makeRequest(kbnServer, options, fn) {
options = defaultsDeep({}, authOptions(), options);
return kbnServer.server.inject(options, fn);
}