1117
1117
self.assertEqual(int(images[0]['id']), 2)
1119
1119
self.stop_servers()
1121
def test_ordered_images(self):
1123
Set up three test images and ensure each query param filter works
1126
self.start_servers()
1128
api_port = self.api_port
1129
registry_port = self.registry_port
1132
# Verify no public images
1133
cmd = "curl http://0.0.0.0:%d/v1/images" % api_port
1135
exitcode, out, err = execute(cmd)
1137
self.assertEqual(0, exitcode)
1138
self.assertEqual('{"images": []}', out.strip())
1140
# 1. POST /images with three public images with various attributes
1141
cmd = ("curl -i -X POST "
1142
"-H 'Expect: ' " # Necessary otherwise sends 100 Continue
1143
"-H 'X-Image-Meta-Name: Image1' "
1144
"-H 'X-Image-Meta-Status: active' "
1145
"-H 'X-Image-Meta-Container-Format: ovf' "
1146
"-H 'X-Image-Meta-Disk-Format: vdi' "
1147
"-H 'X-Image-Meta-Size: 19' "
1148
"-H 'X-Image-Meta-Is-Public: True' "
1149
"http://0.0.0.0:%d/v1/images") % api_port
1151
exitcode, out, err = execute(cmd)
1152
self.assertEqual(0, exitcode)
1154
lines = out.split("\r\n")
1155
status_line = lines[0]
1157
self.assertEqual("HTTP/1.1 201 Created", status_line)
1159
cmd = ("curl -i -X POST "
1160
"-H 'Expect: ' " # Necessary otherwise sends 100 Continue
1161
"-H 'X-Image-Meta-Name: ASDF' "
1162
"-H 'X-Image-Meta-Status: active' "
1163
"-H 'X-Image-Meta-Container-Format: bare' "
1164
"-H 'X-Image-Meta-Disk-Format: iso' "
1165
"-H 'X-Image-Meta-Size: 2' "
1166
"-H 'X-Image-Meta-Is-Public: True' "
1167
"http://0.0.0.0:%d/v1/images") % api_port
1169
exitcode, out, err = execute(cmd)
1170
self.assertEqual(0, exitcode)
1172
lines = out.split("\r\n")
1173
status_line = lines[0]
1175
self.assertEqual("HTTP/1.1 201 Created", status_line)
1176
cmd = ("curl -i -X POST "
1177
"-H 'Expect: ' " # Necessary otherwise sends 100 Continue
1178
"-H 'X-Image-Meta-Name: XYZ' "
1179
"-H 'X-Image-Meta-Status: saving' "
1180
"-H 'X-Image-Meta-Container-Format: ami' "
1181
"-H 'X-Image-Meta-Disk-Format: ami' "
1182
"-H 'X-Image-Meta-Size: 5' "
1183
"-H 'X-Image-Meta-Is-Public: True' "
1184
"http://0.0.0.0:%d/v1/images") % api_port
1186
exitcode, out, err = execute(cmd)
1187
self.assertEqual(0, exitcode)
1189
lines = out.split("\r\n")
1190
status_line = lines[0]
1192
self.assertEqual("HTTP/1.1 201 Created", status_line)
1194
# 2. GET /images with no query params
1195
# Verify three public images sorted by created_at desc
1196
cmd = "curl http://0.0.0.0:%d/v1/images" % api_port
1198
exitcode, out, err = execute(cmd)
1200
self.assertEqual(0, exitcode)
1201
images = json.loads(out.strip())['images']
1203
self.assertEqual(len(images), 3)
1204
self.assertEqual(images[0]['id'], 3)
1205
self.assertEqual(images[1]['id'], 2)
1206
self.assertEqual(images[2]['id'], 1)
1208
# 3. GET /images sorted by name asc
1209
params = 'sort_key=name&sort_dir=asc'
1210
cmd = "curl 'http://0.0.0.0:%d/v1/images?%s'" % (api_port, params)
1212
exitcode, out, err = execute(cmd)
1214
self.assertEqual(0, exitcode)
1215
images = json.loads(out.strip())['images']
1217
self.assertEqual(len(images), 3)
1218
self.assertEqual(images[0]['id'], 2)
1219
self.assertEqual(images[1]['id'], 1)
1220
self.assertEqual(images[2]['id'], 3)
1222
# 4. GET /images sorted by size desc
1223
params = 'sort_key=size&sort_dir=desc'
1224
cmd = "curl 'http://0.0.0.0:%d/v1/images?%s'" % (api_port, params)
1226
exitcode, out, err = execute(cmd)
1228
self.assertEqual(0, exitcode)
1229
images = json.loads(out.strip())['images']
1231
self.assertEqual(len(images), 3)
1232
self.assertEqual(images[0]['id'], 1)
1233
self.assertEqual(images[1]['id'], 3)
1234
self.assertEqual(images[2]['id'], 2)