~hudson-openstack/glance/milestone-proposed

« back to all changes in this revision

Viewing changes to tests/functional/test_curl_api.py

  • Committer: Tarmac
  • Author(s): Brian Waldon, Yuriy Taraday, Justin Shepherd, Ewan Mellor, Thierry Carrez
  • Date: 2011-06-28 19:42:20 UTC
  • mfrom: (139.9.1 d2-merge)
  • Revision ID: tarmac-20110628194220-rhxw4nwelxeolztc
Merge diablo-2 development work

Show diffs side-by-side

added added

removed removed

Lines of Context:
773
773
        with tempfile.NamedTemporaryFile() as test_data_file:
774
774
            test_data_file.write("XXX")
775
775
            test_data_file.flush()
776
 
            cmd = ("curl -i -X POST --upload-file %s "
 
776
            cmd = ("curl -i -X POST --upload-file %s -H 'Expect: ' "
777
777
                   "http://0.0.0.0:%d/v1/images") % (test_data_file.name,
778
778
                                                  api_port)
779
779
 
1117
1117
        self.assertEqual(int(images[0]['id']), 2)
1118
1118
 
1119
1119
        self.stop_servers()
 
1120
 
 
1121
    def test_ordered_images(self):
 
1122
        """
 
1123
        Set up three test images and ensure each query param filter works
 
1124
        """
 
1125
        self.cleanup()
 
1126
        self.start_servers()
 
1127
 
 
1128
        api_port = self.api_port
 
1129
        registry_port = self.registry_port
 
1130
 
 
1131
        # 0. GET /images
 
1132
        # Verify no public images
 
1133
        cmd = "curl http://0.0.0.0:%d/v1/images" % api_port
 
1134
 
 
1135
        exitcode, out, err = execute(cmd)
 
1136
 
 
1137
        self.assertEqual(0, exitcode)
 
1138
        self.assertEqual('{"images": []}', out.strip())
 
1139
 
 
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
 
1150
 
 
1151
        exitcode, out, err = execute(cmd)
 
1152
        self.assertEqual(0, exitcode)
 
1153
 
 
1154
        lines = out.split("\r\n")
 
1155
        status_line = lines[0]
 
1156
 
 
1157
        self.assertEqual("HTTP/1.1 201 Created", status_line)
 
1158
 
 
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
 
1168
 
 
1169
        exitcode, out, err = execute(cmd)
 
1170
        self.assertEqual(0, exitcode)
 
1171
 
 
1172
        lines = out.split("\r\n")
 
1173
        status_line = lines[0]
 
1174
 
 
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
 
1185
 
 
1186
        exitcode, out, err = execute(cmd)
 
1187
        self.assertEqual(0, exitcode)
 
1188
 
 
1189
        lines = out.split("\r\n")
 
1190
        status_line = lines[0]
 
1191
 
 
1192
        self.assertEqual("HTTP/1.1 201 Created", status_line)
 
1193
 
 
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
 
1197
 
 
1198
        exitcode, out, err = execute(cmd)
 
1199
 
 
1200
        self.assertEqual(0, exitcode)
 
1201
        images = json.loads(out.strip())['images']
 
1202
 
 
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)
 
1207
 
 
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)
 
1211
 
 
1212
        exitcode, out, err = execute(cmd)
 
1213
 
 
1214
        self.assertEqual(0, exitcode)
 
1215
        images = json.loads(out.strip())['images']
 
1216
 
 
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)
 
1221
 
 
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)
 
1225
 
 
1226
        exitcode, out, err = execute(cmd)
 
1227
 
 
1228
        self.assertEqual(0, exitcode)
 
1229
        images = json.loads(out.strip())['images']
 
1230
 
 
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)