90 lines
3.1 KiB
TypeScript

import { Server } from 'ember-cli-mirage';
import { getApiRoot, ApiVersion } from '@datahub/utils/api/shared';
import { getTopConsumers } from '@datahub/shared/mirage-addon/test-helpers/top-consumers';
import { getEntityConfigs } from '@datahub/shared/mirage-addon/test-helpers/entity-configs';
import { healthEndpoint } from '@datahub/shared/api/health';
import { getEntityHealth } from '@datahub/shared/mirage-addon/test-helpers/entity-health/health-metadata';
import { changeLogEndpoint } from '@datahub/shared/api/change-management/change-log';
import { getChangeLog } from '@datahub/shared/mirage-addon/test-helpers/change-log';
import { browse } from '@datahub/shared/mirage-addon/helpers/browse';
import { browsePaths } from '@datahub/shared/mirage-addon/helpers/browse-paths';
import { getConfig } from '@datahub/shared/mirage-addon/helpers/config';
import { getAuth } from '@datahub/shared/mirage-addon/helpers/authenticate';
/**
* Datahub shared's mirage setup helper to augment the server with shorthand request hooks
* @param {Server} server the Mirage server instance
*/
export const setup = (server: Server): void => {
server.namespace = '';
server.get('/config', getConfig);
server.post('/authenticate', getAuth);
server.passthrough('/write-coverage');
server.namespace = getApiRoot(ApiVersion.v2);
server.get('/browse', browse);
server.get('/browsePaths', browsePaths);
// Routes for entity insights
server.get('datasets/:urn/top-consumers', getTopConsumers);
// Route declared for instantiating person entity for top consumers insight
server.get('corpusers/:urn', () => {});
// Routes for entity social features
server.get(
`datasets/:urn/likes`,
(): Com.Linkedin.Common.Likes => {
return { actions: [{ likedBy: 'aketchum' }, { likedBy: 'misty' }, { likedBy: 'brock' }] };
}
);
// TODO : Add follows in mirage : https://jira01.corp.linkedin.com:8443/browse/META-11926
server.get(
`datasets/:urn/follows`,
(): Com.Linkedin.Common.Follow => ({
followers: [
{ follower: { corpUser: 'aketchum' } },
{ follower: { corpUser: 'misty' } },
{ follower: { corpUser: 'brock' } }
]
})
);
server.get(`:entity/:urn/${healthEndpoint}`, getEntityHealth);
// Entity configs for configurable features
server.get('/entity-configs/:urn', getEntityConfigs);
server.get(
'/lineage/graph/:urn',
(): Com.Linkedin.Metadata.Graph.Graph => ({
nodes: [],
edges: []
})
);
server.get(`${changeLogEndpoint}/:id`, getChangeLog);
server.namespace = 'api/v2';
// TODO: [META-11379] Replace with factory once we have mirage setup for person entity
server.get('/user/me', () => {
const testUser = 'testUser';
return {
username: testUser,
info: {
departmentName: 'APA',
lastName: 'User',
firstName: 'Test',
active: true,
fullName: 'Test User',
title: 'Software Engineer',
managerUrn: 'urn:li:corpuser:testManager',
managerName: 'Test Manager',
email: 'testuser@linkedin.com'
}
};
});
};