feat: mock plugins with real configs

so you no longer need to comment out xpack config in the kibana.dev.yml
This commit is contained in:
2018-05-21 09:31:36 -07:00
committed by joe fleming
parent f1f2e9e8bb
commit ba769682d6
9 changed files with 367 additions and 13 deletions

134
plugins/reporting/index.js Normal file
View File

@@ -0,0 +1,134 @@
const appConfig = { concurrency: 4 };
const getDefaultBrowser = async () => 'phantom';
const getDefaultChromiumSandboxDisabled = async () => true;
export function reporting(kibana) {
return new kibana.Plugin({
name: "reporting",
id: "reporting",
configPrefix: "xpack.reporting",
async config(Joi) {
return Joi.object({
enabled: Joi.boolean().default(true),
kibanaServer: Joi.object({
protocol: Joi.string().valid(["http", "https"]),
hostname: Joi.string(),
port: Joi.number().integer()
}).default(),
queue: Joi.object({
indexInterval: Joi.string().default("week"),
pollInterval: Joi.number()
.integer()
.default(3000),
pollIntervalErrorMultiplier: Joi.number()
.integer()
.default(10),
timeout: Joi.number()
.integer()
.default(30000)
}).default(),
capture: Joi.object({
record: Joi.boolean().default(false),
zoom: Joi.number()
.integer()
.default(2),
viewport: Joi.object({
width: Joi.number()
.integer()
.default(1950),
height: Joi.number()
.integer()
.default(1200)
}).default(),
timeout: Joi.number()
.integer()
.default(20000), //deprecated
loadDelay: Joi.number()
.integer()
.default(3000),
settleTime: Joi.number()
.integer()
.default(1000), //deprecated
concurrency: Joi.number()
.integer()
.default(appConfig.concurrency), //deprecated
browser: Joi.object({
type: Joi.any()
.valid("phantom", "chromium")
.default(await getDefaultBrowser()),
autoDownload: Joi.boolean().when("$dev", {
is: true,
then: Joi.default(true),
otherwise: Joi.default(false)
}),
chromium: Joi.object({
disableSandbox: Joi.boolean().default(
await getDefaultChromiumSandboxDisabled()
),
proxy: Joi.object({
enabled: Joi.boolean().default(false),
server: Joi.string()
.uri({ scheme: ["http", "https"] })
.when("enabled", {
is: Joi.valid(false),
then: Joi.valid(null),
else: Joi.required()
}),
bypass: Joi.array()
.items(Joi.string().regex(/^[^\s]+$/))
.when("enabled", {
is: Joi.valid(false),
then: Joi.valid(null),
else: Joi.default([])
})
}).default(),
maxScreenshotDimension: Joi.number()
.integer()
.default(1950)
}).default()
}).default()
}).default(),
csv: Joi.object({
maxSizeBytes: Joi.number()
.integer()
.default(1024 * 1024 * 10), // bytes in a kB * kB in a mB * 10
scroll: Joi.object({
duration: Joi.string()
.regex(/^[0-9]+(d|h|m|s|ms|micros|nanos)$/, {
name: "DurationString"
})
.default("30s"),
size: Joi.number()
.integer()
.default(500)
}).default()
}).default(),
encryptionKey: Joi.string(),
roles: Joi.object({
allow: Joi.array()
.items(Joi.string())
.default(["reporting_user"])
}).default(),
index: Joi.string().default(".reporting"),
poll: Joi.object({
jobCompletionNotifier: Joi.object({
interval: Joi.number()
.integer()
.default(10000),
intervalErrorMultiplier: Joi.number()
.integer()
.default(5)
}).default(),
jobsRefresh: Joi.object({
interval: Joi.number()
.integer()
.default(5000),
intervalErrorMultiplier: Joi.number()
.integer()
.default(5)
}).default()
}).default()
}).default();
}
});
}