kibana/test/utils/kbn_server.js
Court Ewing 5e9df5240e Configurable shield credentials for tests
While there are still hardcoded defaults, this change allows people to
specify custom credentials via environment variables for each shield
role in our tests.

Fixes #5967
2016-01-21 19:47:00 +00:00

69 lines
1.8 KiB
JavaScript

import { defaultsDeep, set } from 'lodash';
import requirefrom from 'requirefrom';
import { header as basicAuthHeader } from './base_auth';
import { kibanaUser, kibanaServer } from '../shield';
const src = requirefrom('src');
const KbnServer = src('server/KbnServer');
const fromRoot = src('utils/fromRoot');
const SERVER_DEFAULTS = {
server: {
autoListen: false,
xsrf: {
disableProtection: true
}
},
logging: {
quiet: true
},
plugins: {
scanDirs: [
fromRoot('src/plugins')
]
},
optimize: {
enabled: false
},
elasticsearch: {
url: 'http://localhost:9210',
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);
};