Skip to content

Commit 31d08a9

Browse files
committed
HMS-5614: add popular repo playwright test
1 parent 46d8b0e commit 31d08a9

File tree

3 files changed

+69
-38
lines changed

3 files changed

+69
-38
lines changed

_playwright-tests/tests/API/Repositories.spec.ts

+66-17
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ import {
88
type ValidateRepositoryParametersRequest,
99
RpmsApi,
1010
ApiSearchRpmResponse,
11+
CreateRepositoryRequest,
12+
ApiPopularRepositoriesCollectionResponse,
13+
PopularRepositoriesApi,
1114
} from './client';
1215
import { randomUUID } from 'crypto';
1316
import { expect } from '@playwright/test';
14-
import { poll, SmallRedHatRepoURL } from './apiHelpers';
17+
import { poll, SmallRedHatRepoURL } from './helpers/apiHelpers';
1518

1619
test.describe('Repositories', () => {
1720
test('Verify repository introspection', async ({ client }) => {
@@ -78,8 +81,8 @@ test.describe('Repositories', () => {
7881

7982
await test.step('Check that a URLs protocol is supported and yum metadata can be retrieved', async () => {
8083
const resp = await new RepositoriesApi(client).validateRepositoryParameters(<
81-
ValidateRepositoryParametersRequest
82-
>{
84+
ValidateRepositoryParametersRequest
85+
>{
8386
apiRepositoryValidationRequest: [
8487
{
8588
url: repoUrl,
@@ -93,8 +96,8 @@ test.describe('Repositories', () => {
9396

9497
await test.step('Check that lack of yum metadata is detected', async () => {
9598
const resp = await new RepositoriesApi(client).validateRepositoryParameters(<
96-
ValidateRepositoryParametersRequest
97-
>{
99+
ValidateRepositoryParametersRequest
100+
>{
98101
apiRepositoryValidationRequest: [
99102
{
100103
url: realButBadRepoUrl,
@@ -108,8 +111,8 @@ test.describe('Repositories', () => {
108111

109112
await test.step('Check that a random name is valid for use', async () => {
110113
const resp = await new RepositoriesApi(client).validateRepositoryParameters(<
111-
ValidateRepositoryParametersRequest
112-
>{
114+
ValidateRepositoryParametersRequest
115+
>{
113116
apiRepositoryValidationRequest: [
114117
{
115118
name: repoName,
@@ -134,8 +137,8 @@ test.describe('Repositories', () => {
134137

135138
await test.step('Check that url and name has to be unique', async () => {
136139
const resp = await new RepositoriesApi(client).validateRepositoryParameters(<
137-
ValidateRepositoryParametersRequest
138-
>{
140+
ValidateRepositoryParametersRequest
141+
>{
139142
apiRepositoryValidationRequest: [
140143
{
141144
name: repoName,
@@ -146,18 +149,18 @@ test.describe('Repositories', () => {
146149

147150
expect(resp[0].name?.valid).not.toBeTruthy();
148151
expect(resp[0].name?.error).toContain(
149-
`A repository with the name '${repoName}' already exists.`,
152+
`A repository with the name '${repoName}' already exists.`,
150153
);
151154
expect(resp[0].url?.valid).not.toBeTruthy();
152155
expect(resp[0].url?.error).toContain(
153-
`A repository with the URL '${repoUrl}' already exists.`,
156+
`A repository with the URL '${repoUrl}' already exists.`,
154157
);
155158
});
156159

157160
await test.step('Repeat the check that url and name must be unique, but ignore repo with UUID given', async () => {
158161
const resp = await new RepositoriesApi(client).validateRepositoryParameters(<
159-
ValidateRepositoryParametersRequest
160-
>{
162+
ValidateRepositoryParametersRequest
163+
>{
161164
apiRepositoryValidationRequest: [
162165
{
163166
name: repoName,
@@ -173,8 +176,8 @@ test.describe('Repositories', () => {
173176

174177
await test.step('Check that invalid uuid does not cause an ISE', async () => {
175178
const resp = await new RepositoriesApi(client).validateRepositoryParametersRaw(<
176-
ValidateRepositoryParametersRequest
177-
>{
179+
ValidateRepositoryParametersRequest
180+
>{
178181
apiRepositoryValidationRequest: [
179182
{
180183
uuid: invalidFormatUuid,
@@ -191,8 +194,8 @@ test.describe('Repositories', () => {
191194

192195
await test.step('Check that invalid uuid does not cause an ISE, while validating other values', async () => {
193196
const resp = await new RepositoriesApi(client).validateRepositoryParametersRaw(<
194-
ValidateRepositoryParametersRequest
195-
>{
197+
ValidateRepositoryParametersRequest
198+
>{
196199
apiRepositoryValidationRequest: [
197200
{
198201
uuid: invalidFormatUuid,
@@ -223,4 +226,50 @@ test.describe('Repositories', () => {
223226
expect(names).toContain('ansible');
224227
});
225228
});
229+
230+
test('Add popular repository', async ({ client }) => {
231+
let popularRepos: ApiPopularRepositoriesCollectionResponse;
232+
await test.step('List popular repositories', async () => {
233+
popularRepos = await new PopularRepositoriesApi(client).listPopularRepositories({
234+
search: 'EPEL 9',
235+
});
236+
expect(popularRepos.meta?.count).toBe(1);
237+
expect(popularRepos.data?.[0].suggestedName).toBe('EPEL 9 Everything x86_64');
238+
});
239+
240+
await test.step('Delete existing repository if exists', async () => {
241+
if (popularRepos?.data?.length && popularRepos?.data?.[0].uuid != '') {
242+
const resp = await new RepositoriesApi(client).deleteRepositoryRaw(<GetRepositoryRequest>{
243+
uuid: popularRepos.data[0].uuid?.toString(),
244+
});
245+
expect(resp.raw.status).toBe(204);
246+
}
247+
});
248+
249+
await test.step('Create custom repository for popular repository', async () => {
250+
const repo = await new RepositoriesApi(client).createRepository(<CreateRepositoryRequest>{
251+
apiRepositoryRequest: {
252+
name: popularRepos.data?.[0].suggestedName,
253+
url: popularRepos.data?.[0].url,
254+
gpgKey: popularRepos.data?.[0].gpgKey,
255+
},
256+
});
257+
expect(repo.name).toBe(popularRepos.data?.[0].suggestedName);
258+
});
259+
260+
await test.step('Get repo uuid', async () => {
261+
popularRepos = await new PopularRepositoriesApi(client).listPopularRepositories({
262+
search: 'EPEL 9',
263+
});
264+
expect(popularRepos.meta?.count).toBe(1);
265+
expect(popularRepos.data?.[0].suggestedName).toBe('EPEL 9 Everything x86_64');
266+
});
267+
268+
await test.step('Delete repository', async () => {
269+
const resp = await new RepositoriesApi(client).deleteRepositoryRaw(<GetRepositoryRequest>{
270+
uuid: popularRepos.data?.[0].uuid?.toString(),
271+
});
272+
expect(resp.raw.status).toBe(204);
273+
});
274+
});
226275
});

_playwright-tests/tests/API/apiHelpers.tsx

-21
This file was deleted.

_playwright-tests/tests/API/helpers/apiHelpers.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,6 @@ export const poll = async (
1717

1818
// timer in ms, must await e.g. await timer(num)
1919
export const timer = (ms: number) => new Promise((res) => setTimeout(res, ms));
20+
21+
export const SmallRedHatRepoURL =
22+
'https://cdn.redhat.com/content/dist/layered/rhel8/x86_64/ansible/2/os/';

0 commit comments

Comments
 (0)