def test_query(self): def callback(request, uri, response_headers, expected_body, expected_skip, expected_limit, expected_sort, response_body): content_type = request.headers.get('Content-Type').split(';', 1)[0] self.assertEqual(content_type, 'application/json') self.assertEqual(request.querystring['skip'][0], str(expected_skip)) if expected_limit is not None: self.assertEqual(request.querystring['limit'][0], str(expected_limit)) if expected_sort is not None: self.assertEqual(request.querystring['sort'][0], str(expected_sort)) self.assertEqual(request.body, expected_body) response_headers[ 'content-type'] = 'application/json; charset=utf-8' return [200, response_headers, response_body] object_ids = [str(ObjectId()) for _ in range(5)] docs = [{ '_id': object_ids[i], 'storage_dir': f'/{object_ids[i]}', 'uuid': uuid.uuid4() } for i in range(len(object_ids))] # test bare query httpretty.register_uri(httpretty.POST, 'http://127.0.0.1/v1/_query', body=partial(callback, expected_body=b'{}', expected_skip=0, expected_limit=None, expected_sort=None, response_body=json_dumps( docs[:2]))) ret = self.client.query() self.assertListEqual(ret, docs[:2]) for obj_id in object_ids[:2]: # test the storage dir cache self.assertEqual(self.client.get_storage_dir(obj_id), f'/{obj_id}') with pytest.raises(requests.exceptions.ConnectionError): _ = self.client.get_storage_dir(object_ids[2]) # test query httpretty.register_uri(httpretty.POST, 'http://127.0.0.1/v1/_query', body=partial(callback, expected_body=b'{"name":"hint"}', expected_skip=1, expected_limit=99, expected_sort='-start_time', response_body=json_dumps( docs[2:4]))) ret = self.client.query(filter={'name': 'hint'}, sort='-start_time', skip=1, limit=99) self.assertListEqual(ret, docs[2:4])
def callback(request, uri, response_headers): content_type = request.headers.get('Content-Type').split(';', 1)[0] self.assertEqual(content_type, 'application/json') fields = json_loads(request.body) self.assertDictEqual(fields, {'status': 'COMPLETED'}) response_headers[ 'content-type'] = 'application/json; charset=utf-8' return [200, response_headers, json_dumps(doc_fields)]
def callback(request, uri, response_headers): content_type = request.headers.get('Content-Type').split(';', 1)[0] self.assertEqual(content_type, 'application/json') fields = json_loads(request.body) self.assertDictEqual(fields, doc_fields) o = {'_id': object_id} o.update(doc_fields) response_headers[ 'content-type'] = 'application/json; charset=utf-8' return [200, response_headers, json_dumps(o)]
def callback(request, uri, response_headers): response_headers[ 'content-type'] = 'application/json; charset=utf-8' counter[0] += 1 return [200, response_headers, json_dumps(doc_fields)]
def callback(request, uri, response_headers): self.assertEqual(request.body, b'') response_headers[ 'content-type'] = 'application/json; charset=utf-8' return [200, response_headers, json_dumps([object_id])]
def callback(request, uri, response_headers): response_headers[ 'content-type'] = 'application/json; charset=utf-8' o = {'_id': object_id} o.update(doc_fields) return [200, response_headers, json_dumps(o)]