5
5
import pytest
6
6
7
7
from iib .web .models import (
8
+ Request ,
8
9
RequestAdd ,
9
10
RequestMergeIndexImage ,
10
11
RequestRegenerateBundle ,
11
12
RequestRm ,
12
13
RequestCreateEmptyIndex ,
13
14
)
14
-
15
+ from iib .common .pydantic_models import (
16
+ AddPydanticModel ,
17
+ RmPydanticModel ,
18
+ MergeIndexImagePydanticModel ,
19
+ RegenerateBundlePydanticModel ,
20
+ CreateEmptyIndexPydanticModel ,
21
+ )
15
22
16
23
INITIAL_DB_REVISION = '274ba38408e8'
17
24
@@ -25,19 +32,19 @@ def test_migrate_to_polymorphic_requests(app, auth_env, client, db):
25
32
for i in range (total_requests ):
26
33
request_class = random .choice ((RequestAdd , RequestRm ))
27
34
if request_class == RequestAdd :
28
- data = {
29
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
30
- ' bundles' : [f'quay.io/namespace/bundle:{ i } ' ],
31
- ' from_index' : f'quay.io/namespace/repo:{ i } ' ,
32
- }
33
- request = RequestAdd .from_json ( data )
35
+ data = AddPydanticModel (
36
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
37
+ bundles = [f'quay.io/namespace/bundle:{ i } ' ],
38
+ from_index = f'quay.io/namespace/repo:{ i } ' ,
39
+ )
40
+ request = RequestAdd .from_json_replacement ( payload = data )
34
41
elif request_class == RequestRm :
35
- data = {
36
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
37
- ' operators' : [f'operator-{ i } ' ],
38
- ' from_index' : f'quay.io/namespace/repo:{ i } ' ,
39
- }
40
- request = RequestRm .from_json (data )
42
+ data = RmPydanticModel (
43
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
44
+ operators = [f'operator-{ i } ' ],
45
+ from_index = f'quay.io/namespace/repo:{ i } ' ,
46
+ )
47
+ request = RequestRm .from_json_replacement (data )
41
48
42
49
if i % 5 == 0 :
43
50
# Simulate failed request
@@ -63,26 +70,26 @@ def test_migrate_to_merge_index_endpoints(app, auth_env, client, db):
63
70
for i in range (total_requests ):
64
71
request_class = random .choice ((RequestAdd , RequestMergeIndexImage , RequestRm ))
65
72
if request_class == RequestAdd :
66
- data = {
67
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
68
- ' bundles' : [f'quay.io/namespace/bundle:{ i } ' ],
69
- ' from_index' : f'quay.io/namespace/repo:{ i } ' ,
70
- }
71
- request = RequestAdd .from_json (data )
73
+ data = AddPydanticModel (
74
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
75
+ bundles = [f'quay.io/namespace/bundle:{ i } ' ],
76
+ from_index = f'quay.io/namespace/repo:{ i } ' ,
77
+ )
78
+ request = RequestAdd .from_json_replacement (data )
72
79
elif request_class == RequestRm :
73
- data = {
74
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
75
- ' operators' : [f'operator-{ i } ' ],
76
- ' from_index' : f'quay.io/namespace/repo:{ i } ' ,
77
- }
78
- request = RequestRm .from_json (data )
80
+ data = RmPydanticModel (
81
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
82
+ operators = [f'operator-{ i } ' ],
83
+ from_index = f'quay.io/namespace/repo:{ i } ' ,
84
+ )
85
+ request = RequestRm .from_json_replacement (data )
79
86
elif request_class == RequestMergeIndexImage :
80
- data = {
81
- ' source_from_index' : f'quay.io/namespace/repo:{ i } ' ,
82
- ' target_index' : f'quay.io/namespace/repo:{ i } ' ,
83
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
84
- }
85
- request = RequestMergeIndexImage .from_json (data )
87
+ data = MergeIndexImagePydanticModel (
88
+ source_from_index = f'quay.io/namespace/repo:{ i } ' ,
89
+ target_index = f'quay.io/namespace/repo:{ i } ' ,
90
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
91
+ )
92
+ request = RequestMergeIndexImage .from_json_replacement (data )
86
93
87
94
if i % 5 == 0 :
88
95
# Simulate failed request
@@ -104,31 +111,35 @@ def test_abort_when_downgrading_from_regenerate_bundle_request(app, auth_env, cl
104
111
# flask_login.current_user is used in Request*.from_json which requires a request context
105
112
with app .test_request_context (environ_base = auth_env ):
106
113
# Always add a RequestRegenerateBundle to ensure sufficient test data is available
107
- data = {'from_bundle_image' : 'quay.io/namespace/bundle-image:latest' }
108
- request = RequestRegenerateBundle .from_json (data )
114
+ data = RegenerateBundlePydanticModel (
115
+ from_bundle_image = 'quay.io/namespace/bundle-image:latest'
116
+ )
117
+ request = RequestRegenerateBundle .from_json_replacement (data )
109
118
db .session .add (request )
110
119
111
120
# One request was already added, let's add the remaining ones
112
121
for i in range (total_requests - 1 ):
113
122
request_class = random .choice ((RequestAdd , RequestRm , RequestRegenerateBundle ))
114
123
if request_class == RequestAdd :
115
- data = {
116
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
117
- ' bundles' : [f'quay.io/namespace/bundle:{ i } ' ],
118
- ' from_index' : f'quay.io/namespace/repo:{ i } ' ,
119
- }
120
- request = RequestAdd .from_json (data )
124
+ data = AddPydanticModel (
125
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
126
+ bundles = [f'quay.io/namespace/bundle:{ i } ' ],
127
+ from_index = f'quay.io/namespace/repo:{ i } ' ,
128
+ )
129
+ request = RequestAdd .from_json_replacement (data )
121
130
122
131
elif request_class == RequestRm :
123
- data = {
124
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
125
- ' operators' : [f'operator-{ i } ' ],
126
- ' from_index' : f'quay.io/namespace/repo:{ i } ' ,
127
- }
128
- request = RequestRm .from_json (data )
132
+ data = RmPydanticModel (
133
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
134
+ operators = [f'operator-{ i } ' ],
135
+ from_index = f'quay.io/namespace/repo:{ i } ' ,
136
+ )
137
+ request = RequestRm .from_json_replacement (data )
129
138
else :
130
- data = {'from_bundle_image' : 'quay.io/namespace/bundle-image:latest' }
131
- request = RequestRegenerateBundle .from_json (data )
139
+ data = RegenerateBundlePydanticModel (
140
+ from_bundle_image = 'quay.io/namespace/bundle-image:latest'
141
+ )
142
+ request = RequestRegenerateBundle .from_json_replacement (data )
132
143
db .session .add (request )
133
144
134
145
db .session .commit ()
@@ -148,35 +159,35 @@ def test_create_empty_index_image_request(app, auth_env, client, db):
148
159
# which requires a request context
149
160
with app .test_request_context (environ_base = auth_env ):
150
161
# Generate some data to verify migration
151
- data = {
152
- ' from_index' : 'quay.io/namespace/index_image:latest' ,
153
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
154
- }
155
- request = RequestCreateEmptyIndex .from_json (data )
162
+ data = CreateEmptyIndexPydanticModel (
163
+ from_index = 'quay.io/namespace/index_image:latest' ,
164
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
165
+ )
166
+ request = RequestCreateEmptyIndex .from_json_replacement (data )
156
167
db .session .add (request )
157
168
158
169
for i in range (total_requests ):
159
170
request_class = random .choice ((RequestAdd , RequestRm , RequestCreateEmptyIndex ))
160
171
if request_class == RequestAdd :
161
- data = {
162
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
163
- ' bundles' : [f'quay.io/namespace/bundle:{ i } ' ],
164
- ' from_index' : f'quay.io/namespace/repo:{ i } ' ,
165
- }
166
- request = RequestAdd .from_json (data )
172
+ data = AddPydanticModel (
173
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
174
+ bundles = [f'quay.io/namespace/bundle:{ i } ' ],
175
+ from_index = f'quay.io/namespace/repo:{ i } ' ,
176
+ )
177
+ request = RequestAdd .from_json_replacement (data )
167
178
elif request_class == RequestRm :
168
- data = {
169
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
170
- ' operators' : [f'operator-{ i } ' ],
171
- ' from_index' : f'quay.io/namespace/repo:{ i } ' ,
172
- }
173
- request = RequestRm .from_json (data )
179
+ data = RmPydanticModel (
180
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
181
+ operators = [f'operator-{ i } ' ],
182
+ from_index = f'quay.io/namespace/repo:{ i } ' ,
183
+ )
184
+ request = RequestRm .from_json_replacement (data )
174
185
elif request_class == RequestCreateEmptyIndex :
175
- data = {
176
- ' from_index' : f'quay.io/namespace/index_image:{ i } ' ,
177
- ' binary_image' : 'quay.io/namespace/binary_image:latest' ,
178
- }
179
- request = RequestCreateEmptyIndex .from_json (data )
186
+ data = CreateEmptyIndexPydanticModel (
187
+ from_index = f'quay.io/namespace/index_image:{ i } ' ,
188
+ binary_image = 'quay.io/namespace/binary_image:latest' ,
189
+ )
190
+ request = RequestCreateEmptyIndex .from_json_replacement (data )
180
191
181
192
if i % 5 == 0 :
182
193
# Simulate failed request
0 commit comments