Skip to content

Commit

Permalink
Added App Search log settings routes
Browse files Browse the repository at this point in the history
  • Loading branch information
JasonStoltz committed Oct 30, 2020
1 parent f5b1fae commit 4f21b1b
Show file tree
Hide file tree
Showing 3 changed files with 137 additions and 0 deletions.
2 changes: 2 additions & 0 deletions x-pack/plugins/enterprise_search/server/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import { appSearchTelemetryType } from './saved_objects/app_search/telemetry';
import { registerTelemetryUsageCollector as registerASTelemetryUsageCollector } from './collectors/app_search/telemetry';
import { registerEnginesRoute } from './routes/app_search/engines';
import { registerCredentialsRoutes } from './routes/app_search/credentials';
import { registerLogSettingsRoutes } from './routes/app_search/log_settings';

import { workplaceSearchTelemetryType } from './saved_objects/workplace_search/telemetry';
import { registerTelemetryUsageCollector as registerWSTelemetryUsageCollector } from './collectors/workplace_search/telemetry';
Expand Down Expand Up @@ -128,6 +129,7 @@ export class EnterpriseSearchPlugin implements Plugin {
registerConfigDataRoute(dependencies);
registerEnginesRoute(dependencies);
registerCredentialsRoutes(dependencies);
registerLogSettingsRoutes(dependencies);
registerWSOverviewRoute(dependencies);
registerWSGroupRoutes(dependencies);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/

import { MockRouter, mockRequestHandler, mockDependencies } from '../../__mocks__';

import { registerLogSettingsRoutes } from './log_settings';

describe('log settings routes', () => {
describe('PUT /api/app_search/log_settings', () => {
let mockRouter: MockRouter;

beforeEach(() => {
jest.clearAllMocks();
mockRouter = new MockRouter({ method: 'put', payload: 'body' });

registerLogSettingsRoutes({
...mockDependencies,
router: mockRouter.router,
});
});

it('creates a request to enterprise search', () => {
const mockRequest = {
body: {
analytics: true,
},
};

mockRouter.callRoute(mockRequest);

expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({
path: '/as/log_settings',
});
});

describe('validates', () => {
it('validates good data', () => {
const request = {
body: {
analytics: { enabled: true },
api: { enabled: true },
},
};
mockRouter.shouldValidate(request);
});

it('rejects bad data', () => {
const request = {
body: {
foo: 'bar',
},
};
mockRouter.shouldThrow(request);
});
});
});

describe('GET /api/app_search/log_settings', () => {
let mockRouter: MockRouter;

beforeEach(() => {
jest.clearAllMocks();
mockRouter = new MockRouter({ method: 'get' });

registerLogSettingsRoutes({
...mockDependencies,
router: mockRouter.router,
});
});

it('creates a request to enterprise search', () => {
mockRouter.callRoute({});

expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({
path: '/as/log_settings',
});
});
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/

import { schema } from '@kbn/config-schema';

import { IRouteDependencies } from '../../plugin';

const logSettingsSchema = schema.object({
api: schema.maybe(
schema.object({
enabled: schema.boolean(),
})
),
analytics: schema.maybe(
schema.object({
enabled: schema.boolean(),
})
),
});

export function registerLogSettingsRoutes({
router,
enterpriseSearchRequestHandler,
}: IRouteDependencies) {
router.get(
{
path: '/api/app_search/log_settings',
validate: false,
},
async (context, request, response) => {
return enterpriseSearchRequestHandler.createRequest({
path: '/as/log_settings',
})(context, request, response);
}
);

router.put(
{
path: '/api/app_search/log_settings',
validate: {
body: logSettingsSchema,
},
},
async (context, request, response) => {
return enterpriseSearchRequestHandler.createRequest({
path: '/as/log_settings',
})(context, request, response);
}
);
}

0 comments on commit 4f21b1b

Please sign in to comment.