gitlab-org--gitlab-foss/spec/frontend/api/harbor_registry_spec.js

108 lines
3.3 KiB
JavaScript

import MockAdapter from 'axios-mock-adapter';
import * as harborRegistryApi from '~/api/harbor_registry';
import axios from '~/lib/utils/axios_utils';
import httpStatus from '~/lib/utils/http_status';
describe('~/api/harbor_registry', () => {
let mock;
beforeEach(() => {
mock = new MockAdapter(axios);
jest.spyOn(axios, 'get');
});
afterEach(() => {
mock.restore();
});
describe('getHarborRepositoriesList', () => {
it('fetches the harbor repositories of the configured harbor project', () => {
const requestPath = '/flightjs/Flight/-/harbor/repositories';
const expectedUrl = `${requestPath}.json`;
const expectedParams = {
limit: 10,
page: 1,
sort: 'update_time desc',
requestPath,
};
const expectResponse = [
{
harbor_id: 1,
name: 'test-project/image-1',
artifact_count: 1,
creation_time: '2022-07-16T08:20:34.851Z',
update_time: '2022-07-16T08:20:34.851Z',
harbor_project_id: 2,
pull_count: 0,
location: 'http://demo.harbor.com/harbor/projects/2/repositories/image-1',
},
];
mock.onGet(expectedUrl).reply(httpStatus.OK, expectResponse);
return harborRegistryApi.getHarborRepositoriesList(expectedParams).then(({ data }) => {
expect(data).toEqual(expectResponse);
});
});
});
describe('getHarborArtifacts', () => {
it('fetches the artifacts of a particular harbor repository', () => {
const requestPath = '/flightjs/Flight/-/harbor/repositories';
const repoName = 'image-1';
const expectedUrl = `${requestPath}/${repoName}/artifacts.json`;
const expectedParams = {
limit: 10,
page: 1,
sort: 'name asc',
repoName,
requestPath,
};
const expectResponse = [
{
harbor_id: 1,
digest: 'sha256:dcdf379c574e1773d703f0c0d56d67594e7a91d6b84d11ff46799f60fb081c52',
size: 775241,
push_time: '2022-07-16T08:20:34.867Z',
tags: ['v2', 'v1', 'latest'],
},
];
mock.onGet(expectedUrl).reply(httpStatus.OK, expectResponse);
return harborRegistryApi.getHarborArtifacts(expectedParams).then(({ data }) => {
expect(data).toEqual(expectResponse);
});
});
});
describe('getHarborTags', () => {
it('fetches the tags of a particular artifact', () => {
const requestPath = '/flightjs/Flight/-/harbor/repositories';
const repoName = 'image-1';
const digest = 'sha256:5d98daa36cdc8d6c7ed6579ce17230f0f9fd893a9012fc069cb7d714c0e3df35';
const expectedUrl = `${requestPath}/${repoName}/artifacts/${digest}/tags.json`;
const expectedParams = {
requestPath,
digest,
repoName,
};
const expectResponse = [
{
repositoryId: 4,
artifactId: 5,
id: 4,
name: 'latest',
pullTime: '0001-01-01T00:00:00.000Z',
pushTime: '2022-05-27T18:21:27.903Z',
signed: false,
immutable: false,
},
];
mock.onGet(expectedUrl).reply(httpStatus.OK, expectResponse);
return harborRegistryApi.getHarborTags(expectedParams).then(({ data }) => {
expect(data).toEqual(expectResponse);
});
});
});
});