Skip to content

Commit

Permalink
Improve mocks
Browse files Browse the repository at this point in the history
  • Loading branch information
paul-tavares committed Sep 23, 2024
1 parent a133744 commit 75ba84f
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 25 deletions.
17 changes: 13 additions & 4 deletions x-pack/plugins/security_solution/server/endpoint/mocks/mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ import { unsecuredActionsClientMock } from '@kbn/actions-plugin/server/unsecured
import type { PluginStartContract as ActionPluginStartContract } from '@kbn/actions-plugin/server';
import type { Mutable } from 'utility-types';
import type { DeeplyMockedKeys } from '@kbn/utility-types-jest';
import { EndpointMetadataService } from '../services/metadata';
import { createEndpointFleetServicesFactoryMock } from '../services/fleet/endpoint_fleet_services_factory.mocks';
import type { ProductFeaturesService } from '../../lib/product_features_service';
import { responseActionsClientMock } from '../services/actions/clients/mocks';
import { getEndpointAuthzInitialStateMock } from '../../../common/endpoint/service/authz/mocks';
Expand All @@ -68,7 +70,6 @@ import {
import { requestContextFactoryMock } from '../../request_context_factory.mock';
import type { SecuritySolutionRequestHandlerContextMock } from '../../lib/detection_engine/routes/__mocks__/request_context';
import { createMockClients } from '../../lib/detection_engine/routes/__mocks__/request_context';
import { createEndpointMetadataServiceTestContextMock } from '../services/metadata/mocks';
import type { EndpointAuthz } from '../../../common/endpoint/types/authz';
import { createLicenseServiceMock } from '../../../common/license/mocks';
import { createFeatureUsageServiceMock } from '../services/feature_usage/mocks';
Expand Down Expand Up @@ -97,7 +98,15 @@ export const createMockEndpointAppContext = (
export const createMockEndpointAppContextService = (
mockManifestManager?: ManifestManager
): jest.Mocked<EndpointAppContextService> => {
const mockEndpointMetadataContext = createEndpointMetadataServiceTestContextMock(); // FIXME:PT remove this
const { esClient, fleetStartServices } = createMockEndpointAppContextServiceStartContract();
const fleetServices = createEndpointFleetServicesFactoryMock({
fleetDependencies: fleetStartServices,
}).service.asInternalUser();
const endpointMetadataService = new EndpointMetadataService(
esClient,
savedObjectsClientMock.create(),
fleetServices
);
const casesClientMock = createCasesClientMock();
const fleetFromHostFilesClientMock = createFleetFromHostFilesClientMock();
const fleetToHostFilesClientMock = createFleetToHostFilesClientMock();
Expand All @@ -115,8 +124,8 @@ export const createMockEndpointAppContextService = (
},
createLogger: jest.fn((...parts) => loggerFactory.get(...parts)),
getManifestManager: jest.fn().mockReturnValue(mockManifestManager ?? jest.fn()),
getEndpointMetadataService: jest.fn(() => mockEndpointMetadataContext.endpointMetadataService),
getInternalFleetServices: jest.fn(() => mockEndpointMetadataContext.fleetServices),
getEndpointMetadataService: jest.fn(() => endpointMetadataService),
getInternalFleetServices: jest.fn(() => fleetServices),
getEndpointAuthz: jest.fn(async (_) => getEndpointAuthzInitialStateMock()),
getCasesClient: jest.fn().mockReturnValue(casesClientMock),
getFleetFromHostFilesClient: jest.fn(async () => fleetFromHostFilesClientMock),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
import type { DeeplyMockedKeys } from '@kbn/utility-types-jest';
import type { FleetStartContract } from '@kbn/fleet-plugin/server';
import { createFleetStartContractMock } from '@kbn/fleet-plugin/server/mocks';
import { coreMock, savedObjectsServiceMock } from '@kbn/core/server/mocks';
import { SavedObjectsClientFactory } from '../saved_objects';
import type { SavedObjectsClientFactory } from '../saved_objects';
import type { EndpointFleetServicesFactoryInterface } from './endpoint_fleet_services_factory';
import { EndpointFleetServicesFactory } from './endpoint_fleet_services_factory';
import { createSavedObjectsClientFactoryMock } from '../saved_objects/saved_objects_client_factory.mocks';

interface EndpointFleetServicesFactoryInterfaceMocked
extends EndpointFleetServicesFactoryInterface {
Expand All @@ -33,10 +33,7 @@ export const createEndpointFleetServicesFactoryMock = (
} => {
const {
fleetDependencies = createFleetStartContractMock(),
savedObjects = new SavedObjectsClientFactory(
savedObjectsServiceMock.createStartContract(),
coreMock.createSetup().http
),
savedObjects = createSavedObjectsClientFactoryMock().service,
} = dependencies;

return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,22 +143,20 @@ describe('EndpointMetadataService', () => {
const mockDoc = unitedMetadataSearchResponseMock(endpointMetadataDoc, mockAgent);
esClient.search.mockResponse(mockDoc);
agentPolicyServiceMock.getByIds.mockResolvedValue(agentPolicies);
testMockedContext.packagePolicyService.list.mockImplementation(
async (_, { page, perPage }) => {
const response = {
items: packagePolicies,
page: page ?? 1,
total: packagePolicies.length,
perPage: packagePolicies.length,
};

if ((page ?? 1) > 1) {
response.items = [];
}

return response;
testMockedContext.packagePolicyService.list.mockImplementation(async (_, { page }) => {
const response = {
items: packagePolicies,
page: page ?? 1,
total: packagePolicies.length,
perPage: packagePolicies.length,
};

if ((page ?? 1) > 1) {
response.items = [];
}
);

return response;
});

const queryOptions = { page: 1, pageSize: 10, kuery: '', hostStatuses: [] };
const metadataListResponse = await metadataService.getHostMetadataList(queryOptions);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/

import type { SavedObjectsServiceStart } from '@kbn/core-saved-objects-server';
import type { HttpServiceSetup } from '@kbn/core/server';
import { savedObjectsServiceMock } from '@kbn/core-saved-objects-server-mocks';
import { coreMock } from '@kbn/core/server/mocks';
import { SavedObjectsClientFactory } from './saved_objects_client_factory';

interface CreateSavedObjectsClientFactoryMockOptions {
savedObjectsServiceStart: jest.Mocked<SavedObjectsServiceStart>;
httpServiceSetup: HttpServiceSetup;
}

export const createSavedObjectsClientFactoryMock = (
dependencies: Partial<CreateSavedObjectsClientFactoryMockOptions> = {}
): {
service: SavedObjectsClientFactory;
dependencies: CreateSavedObjectsClientFactoryMockOptions;
} => {
const {
savedObjectsServiceStart = savedObjectsServiceMock.createStartContract(),
httpServiceSetup = coreMock.createSetup().http,
} = dependencies;

return {
service: new SavedObjectsClientFactory(savedObjectsServiceStart, httpServiceSetup),
dependencies: { savedObjectsServiceStart, httpServiceSetup },
};
};

0 comments on commit 75ba84f

Please sign in to comment.