fix tests, types and cleanup
This commit is contained in:
committed by
moustafab
parent
e2085293a6
commit
beaa0a82db
@@ -66,6 +66,7 @@ describe('KubernetesClientProvider', () => {
|
||||
authProvider: 'serviceAccount',
|
||||
},
|
||||
new Set(['pods', 'services']),
|
||||
'',
|
||||
);
|
||||
|
||||
expect(result).toStrictEqual({
|
||||
@@ -129,6 +130,7 @@ describe('KubernetesClientProvider', () => {
|
||||
authProvider: 'serviceAccount',
|
||||
},
|
||||
new Set(['pods', 'services']),
|
||||
'',
|
||||
);
|
||||
|
||||
expect(result).toStrictEqual({
|
||||
@@ -178,6 +180,7 @@ describe('KubernetesClientProvider', () => {
|
||||
authProvider: 'serviceAccount',
|
||||
},
|
||||
new Set<any>(['foo']),
|
||||
'',
|
||||
),
|
||||
).toThrow('unrecognised type=foo');
|
||||
|
||||
@@ -254,4 +257,46 @@ describe('KubernetesClientProvider', () => {
|
||||
},
|
||||
);
|
||||
});
|
||||
it('should always add a labelSelector query', async () => {
|
||||
clientMock.listPodForAllNamespaces.mockResolvedValueOnce({
|
||||
body: {
|
||||
items: [
|
||||
{
|
||||
metadata: {
|
||||
name: 'pod-name',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
clientMock.listServiceForAllNamespaces.mockResolvedValueOnce({
|
||||
body: {
|
||||
items: [
|
||||
{
|
||||
metadata: {
|
||||
name: 'service-name',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
await sut.fetchObjectsForService(
|
||||
'some-service',
|
||||
{
|
||||
name: 'cluster1',
|
||||
url: 'http://localhost:9999',
|
||||
serviceAccountToken: 'token',
|
||||
authProvider: 'serviceAccount',
|
||||
},
|
||||
new Set(['pods', 'services']),
|
||||
'',
|
||||
);
|
||||
|
||||
const mockCall = clientMock.listPodForAllNamespaces.mock.calls[0];
|
||||
const actualSelector = mockCall[mockCall.length - 1];
|
||||
const expectedSelector = 'backstage.io/kubernetes-id=some-service';
|
||||
expect(actualSelector).toBe(expectedSelector);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -116,7 +116,9 @@ export class KubernetesClientBasedFetcher implements KubernetesFetcher {
|
||||
serviceId,
|
||||
clusterDetails,
|
||||
type,
|
||||
labelSelector,
|
||||
labelSelector.length !== 0
|
||||
? labelSelector
|
||||
: `backstage.io/kubernetes-id=${serviceId}`,
|
||||
).catch(captureKubernetesErrorsRethrowOthers);
|
||||
});
|
||||
|
||||
|
||||
+10
-8
@@ -20,7 +20,7 @@ import { ClusterDetails } from '..';
|
||||
|
||||
const TEST_SERVICE_ID = 'my-service';
|
||||
|
||||
const fetchObjectsByServiceId = jest.fn();
|
||||
const fetchObjectsForService = jest.fn();
|
||||
|
||||
const getClustersByServiceId = jest.fn();
|
||||
|
||||
@@ -64,7 +64,7 @@ const mockFetch = (mock: jest.Mock) => {
|
||||
);
|
||||
};
|
||||
|
||||
describe('handleGetKubernetesObjectsByServiceId', () => {
|
||||
describe('handleGetKubernetesObjectsForService', () => {
|
||||
beforeEach(() => {
|
||||
jest.resetAllMocks();
|
||||
});
|
||||
@@ -79,22 +79,23 @@ describe('handleGetKubernetesObjectsByServiceId', () => {
|
||||
]),
|
||||
);
|
||||
|
||||
mockFetch(fetchObjectsByServiceId);
|
||||
mockFetch(fetchObjectsForService);
|
||||
|
||||
const result = await handleGetKubernetesObjectsForService(
|
||||
TEST_SERVICE_ID,
|
||||
{
|
||||
fetchObjectsForService: fetchObjectsByServiceId,
|
||||
fetchObjectsForService: fetchObjectsForService,
|
||||
},
|
||||
{
|
||||
getClustersByServiceId,
|
||||
},
|
||||
getVoidLogger(),
|
||||
{},
|
||||
'',
|
||||
);
|
||||
|
||||
expect(getClustersByServiceId.mock.calls.length).toBe(1);
|
||||
expect(fetchObjectsByServiceId.mock.calls.length).toBe(1);
|
||||
expect(fetchObjectsForService.mock.calls.length).toBe(1);
|
||||
expect(result).toStrictEqual({
|
||||
items: [
|
||||
{
|
||||
@@ -153,12 +154,12 @@ describe('handleGetKubernetesObjectsByServiceId', () => {
|
||||
]),
|
||||
);
|
||||
|
||||
mockFetch(fetchObjectsByServiceId);
|
||||
mockFetch(fetchObjectsForService);
|
||||
|
||||
const result = await handleGetKubernetesObjectsForService(
|
||||
TEST_SERVICE_ID,
|
||||
{
|
||||
fetchObjectsForService: fetchObjectsByServiceId,
|
||||
fetchObjectsForService: fetchObjectsForService,
|
||||
},
|
||||
{
|
||||
getClustersByServiceId,
|
||||
@@ -169,10 +170,11 @@ describe('handleGetKubernetesObjectsByServiceId', () => {
|
||||
google: 'google_token_123',
|
||||
},
|
||||
},
|
||||
'',
|
||||
);
|
||||
|
||||
expect(getClustersByServiceId.mock.calls.length).toBe(1);
|
||||
expect(fetchObjectsByServiceId.mock.calls.length).toBe(2);
|
||||
expect(fetchObjectsForService.mock.calls.length).toBe(2);
|
||||
expect(result).toStrictEqual({
|
||||
items: [
|
||||
{
|
||||
|
||||
@@ -80,7 +80,7 @@ export const makeRouter = (
|
||||
serviceLocator,
|
||||
logger,
|
||||
requestBody,
|
||||
labelSelector,
|
||||
labelSelector ? labelSelector.toString() : '',
|
||||
);
|
||||
res.send(response);
|
||||
} catch (e) {
|
||||
|
||||
@@ -54,8 +54,9 @@ export class KubernetesBackendClient implements KubernetesApi {
|
||||
private parseLabelSelector(params: V1LabelSelector): string {
|
||||
// TODO: figure out how to convert the selector to the full query param from the yaml
|
||||
// (as shown here https://github.com/kubernetes/apimachinery/blob/master/pkg/labels/selector.go)
|
||||
return Object.keys(params.matchLabels)
|
||||
.map(key => `${key}=${params[key]}`)
|
||||
const { matchLabels } = params;
|
||||
return Object.keys(matchLabels)
|
||||
.map(key => `${key}=${matchLabels[key]}`)
|
||||
.join(',');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user