@@ -8,10 +8,13 @@ import {
8
8
type ValidateRepositoryParametersRequest ,
9
9
RpmsApi ,
10
10
ApiSearchRpmResponse ,
11
+ CreateRepositoryRequest ,
12
+ ApiPopularRepositoriesCollectionResponse ,
13
+ PopularRepositoriesApi ,
11
14
} from './client' ;
12
15
import { randomUUID } from 'crypto' ;
13
16
import { expect } from '@playwright/test' ;
14
- import { poll , SmallRedHatRepoURL } from './apiHelpers' ;
17
+ import { poll , SmallRedHatRepoURL } from './helpers/ apiHelpers' ;
15
18
16
19
test . describe ( 'Repositories' , ( ) => {
17
20
test ( 'Verify repository introspection' , async ( { client } ) => {
@@ -78,8 +81,8 @@ test.describe('Repositories', () => {
78
81
79
82
await test . step ( 'Check that a URLs protocol is supported and yum metadata can be retrieved' , async ( ) => {
80
83
const resp = await new RepositoriesApi ( client ) . validateRepositoryParameters ( <
81
- ValidateRepositoryParametersRequest
82
- > {
84
+ ValidateRepositoryParametersRequest
85
+ > {
83
86
apiRepositoryValidationRequest : [
84
87
{
85
88
url : repoUrl ,
@@ -93,8 +96,8 @@ test.describe('Repositories', () => {
93
96
94
97
await test . step ( 'Check that lack of yum metadata is detected' , async ( ) => {
95
98
const resp = await new RepositoriesApi ( client ) . validateRepositoryParameters ( <
96
- ValidateRepositoryParametersRequest
97
- > {
99
+ ValidateRepositoryParametersRequest
100
+ > {
98
101
apiRepositoryValidationRequest : [
99
102
{
100
103
url : realButBadRepoUrl ,
@@ -108,8 +111,8 @@ test.describe('Repositories', () => {
108
111
109
112
await test . step ( 'Check that a random name is valid for use' , async ( ) => {
110
113
const resp = await new RepositoriesApi ( client ) . validateRepositoryParameters ( <
111
- ValidateRepositoryParametersRequest
112
- > {
114
+ ValidateRepositoryParametersRequest
115
+ > {
113
116
apiRepositoryValidationRequest : [
114
117
{
115
118
name : repoName ,
@@ -134,8 +137,8 @@ test.describe('Repositories', () => {
134
137
135
138
await test . step ( 'Check that url and name has to be unique' , async ( ) => {
136
139
const resp = await new RepositoriesApi ( client ) . validateRepositoryParameters ( <
137
- ValidateRepositoryParametersRequest
138
- > {
140
+ ValidateRepositoryParametersRequest
141
+ > {
139
142
apiRepositoryValidationRequest : [
140
143
{
141
144
name : repoName ,
@@ -146,18 +149,18 @@ test.describe('Repositories', () => {
146
149
147
150
expect ( resp [ 0 ] . name ?. valid ) . not . toBeTruthy ( ) ;
148
151
expect ( resp [ 0 ] . name ?. error ) . toContain (
149
- `A repository with the name '${ repoName } ' already exists.` ,
152
+ `A repository with the name '${ repoName } ' already exists.` ,
150
153
) ;
151
154
expect ( resp [ 0 ] . url ?. valid ) . not . toBeTruthy ( ) ;
152
155
expect ( resp [ 0 ] . url ?. error ) . toContain (
153
- `A repository with the URL '${ repoUrl } ' already exists.` ,
156
+ `A repository with the URL '${ repoUrl } ' already exists.` ,
154
157
) ;
155
158
} ) ;
156
159
157
160
await test . step ( 'Repeat the check that url and name must be unique, but ignore repo with UUID given' , async ( ) => {
158
161
const resp = await new RepositoriesApi ( client ) . validateRepositoryParameters ( <
159
- ValidateRepositoryParametersRequest
160
- > {
162
+ ValidateRepositoryParametersRequest
163
+ > {
161
164
apiRepositoryValidationRequest : [
162
165
{
163
166
name : repoName ,
@@ -173,8 +176,8 @@ test.describe('Repositories', () => {
173
176
174
177
await test . step ( 'Check that invalid uuid does not cause an ISE' , async ( ) => {
175
178
const resp = await new RepositoriesApi ( client ) . validateRepositoryParametersRaw ( <
176
- ValidateRepositoryParametersRequest
177
- > {
179
+ ValidateRepositoryParametersRequest
180
+ > {
178
181
apiRepositoryValidationRequest : [
179
182
{
180
183
uuid : invalidFormatUuid ,
@@ -191,8 +194,8 @@ test.describe('Repositories', () => {
191
194
192
195
await test . step ( 'Check that invalid uuid does not cause an ISE, while validating other values' , async ( ) => {
193
196
const resp = await new RepositoriesApi ( client ) . validateRepositoryParametersRaw ( <
194
- ValidateRepositoryParametersRequest
195
- > {
197
+ ValidateRepositoryParametersRequest
198
+ > {
196
199
apiRepositoryValidationRequest : [
197
200
{
198
201
uuid : invalidFormatUuid ,
@@ -223,4 +226,50 @@ test.describe('Repositories', () => {
223
226
expect ( names ) . toContain ( 'ansible' ) ;
224
227
} ) ;
225
228
} ) ;
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
+ } ) ;
226
275
} ) ;
0 commit comments