Skip to content

Commit

Permalink
[Workplace Search] Add routes for settings (#87239)
Browse files Browse the repository at this point in the history
  • Loading branch information
scottybollinger authored Jan 5, 2021
1 parent c69eaf8 commit 24748bf
Show file tree
Hide file tree
Showing 3 changed files with 196 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ import { RouteDependencies } from '../../plugin';
import { registerOverviewRoute } from './overview';
import { registerGroupsRoutes } from './groups';
import { registerSourcesRoutes } from './sources';
import { registerSettingsRoutes } from './settings';

export const registerWorkplaceSearchRoutes = (dependencies: RouteDependencies) => {
registerOverviewRoute(dependencies);
registerGroupsRoutes(dependencies);
registerSourcesRoutes(dependencies);
registerSettingsRoutes(dependencies);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/*
* 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 {
registerOrgSettingsRoute,
registerOrgSettingsCustomizeRoute,
registerOrgSettingsOauthApplicationRoute,
} from './settings';

describe('settings routes', () => {
describe('GET /api/workplace_search/org/settings', () => {
let mockRouter: MockRouter;

beforeEach(() => {
jest.clearAllMocks();
});

it('creates a request handler', () => {
mockRouter = new MockRouter({
method: 'get',
path: '/api/workplace_search/org/settings',
payload: 'params',
});

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

mockRouter.callRoute({});

expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({
path: '/ws/org/settings',
});
});
});

describe('PUT /api/workplace_search/org/settings/customize', () => {
let mockRouter: MockRouter;

beforeEach(() => {
jest.clearAllMocks();
});

it('creates a request handler', () => {
mockRouter = new MockRouter({
method: 'put',
path: '/api/workplace_search/org/settings/customize',
payload: 'body',
});

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

const mockRequest = {
body: {
name: 'foo',
},
};

mockRouter.callRoute(mockRequest);

expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({
path: '/ws/org/settings/customize',
body: mockRequest.body,
});
});
});

describe('PUT /api/workplace_search/org/settings/oauth_application', () => {
let mockRouter: MockRouter;

beforeEach(() => {
jest.clearAllMocks();
});

it('creates a request handler', () => {
mockRouter = new MockRouter({
method: 'put',
path: '/api/workplace_search/org/settings/oauth_application',
payload: 'body',
});

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

const mockRequest = {
body: {
oauth_application: {
name: 'foo',
confidential: true,
redirect_uri: 'http://foo.bar',
},
},
};

mockRouter.callRoute(mockRequest);

expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({
path: '/ws/org/settings/oauth_application',
body: mockRequest.body,
});
});
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/*
* 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 { RouteDependencies } from '../../plugin';

export function registerOrgSettingsRoute({
router,
enterpriseSearchRequestHandler,
}: RouteDependencies) {
router.get(
{
path: '/api/workplace_search/org/settings',
validate: false,
},
async (context, request, response) => {
return enterpriseSearchRequestHandler.createRequest({
path: '/ws/org/settings',
})(context, request, response);
}
);
}

export function registerOrgSettingsCustomizeRoute({
router,
enterpriseSearchRequestHandler,
}: RouteDependencies) {
router.put(
{
path: '/api/workplace_search/org/settings/customize',
validate: {
body: schema.object({
name: schema.string(),
}),
},
},
async (context, request, response) => {
return enterpriseSearchRequestHandler.createRequest({
path: '/ws/org/settings/customize',
body: request.body,
})(context, request, response);
}
);
}

export function registerOrgSettingsOauthApplicationRoute({
router,
enterpriseSearchRequestHandler,
}: RouteDependencies) {
router.put(
{
path: '/api/workplace_search/org/settings/oauth_application',
validate: {
body: schema.object({
oauth_application: schema.object({
name: schema.string(),
confidential: schema.boolean(),
redirect_uri: schema.string(),
}),
}),
},
},
async (context, request, response) => {
return enterpriseSearchRequestHandler.createRequest({
path: '/ws/org/settings/oauth_application',
body: request.body,
})(context, request, response);
}
);
}

export const registerSettingsRoutes = (dependencies: RouteDependencies) => {
registerOrgSettingsRoute(dependencies);
registerOrgSettingsCustomizeRoute(dependencies);
registerOrgSettingsOauthApplicationRoute(dependencies);
};

0 comments on commit 24748bf

Please sign in to comment.