Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 18b70cc

Browse files
committedMar 18, 2025·
HMS-5614: add popular repo playwright test
1 parent 445716d commit 18b70cc

File tree

2 files changed

+66
-17
lines changed

2 files changed

+66
-17
lines changed
 

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

+65-16
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ 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';
@@ -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('gcc-plugin-devel');
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/helpers/apiHelpers.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ export const poll = async (
1919
export const timer = (ms: number) => new Promise((res) => setTimeout(res, ms));
2020

2121
export const SmallRedHatRepoURL =
22-
'https://cdn.redhat.com/content/dist/rhel9/9/aarch64/codeready-builder/os/';
22+
'https://cdn.redhat.com/content/dist/rhel9/9/aarch64/codeready-builder/os/';

0 commit comments

Comments
 (0)
Please sign in to comment.