def test_post_muti_resource(self): """ 批量创建 :return: """ res = self.post('/tag', json=[ { u"name": u'muti_create1' }, { u"name": u'muti_create2' }, { u"name": u'muti_create3' }, { u"name": u'not_found_1' }, ]) assert res.status_code == 201 assert len(loads(res.data)) == 4 assert len( loads( self.req.get('/tag', query_string={ 'name': "%muti_create%", }).data)['items']) == 3 assert self.session.query(self.Tag).count() == 4 assert len(loads(self.req.get('/tag').data)['items']) == 4
def test_put_one_resource(self): """ 单个修改 :return: """ old_res = self.post('/tag', json={u"name": u'one_update1'}) assert old_res.status_code == 201 assert isinstance(loads(old_res.data), dict) old_items = loads( self.req.get('/tag', query_string={ 'name': "%one_update%", }).data)['items'] assert len(old_items) == 1 old_item = old_items[0] new_item = dict(old_item) new_item['name'] += '_update' res = self.put('/tag', json=new_item) assert res.status_code == 200 assert isinstance(loads(res.data), dict) now_items = loads( self.req.get('/tag', query_string={ 'name': "%one_update%", }).data)['items'] assert now_items for item in now_items: assert item['name'].endswith('_update')
def test_put_existing_resource(self): """Send HTTP PUT for an existing resource (should be updated).""" self.post_response() response = self.req.put('/tag/1', headers={"Content-Type": 'application/json'}, data=dumps({u'name': u'Jeff Knupp2'})) assert response.status_code == 200 response = self.get_response('/tag/1', 200) assert loads(response.data)[u'name'] == u'Jeff Knupp2' assert loads(response.data)[u'id'] == 1
def test_post(self): """Test simple HTTP POST""" response = self.post_response() assert loads(response.data) == { 'id': 1, 'name': 'Jeff Knupp', }
def handle_read(self): if self.content_len is None: self.read_buffer += self.recv(8192) try: if not self.parse_http_request(self.read_buffer): # Failed to parse headers. Wait for next portion. return except ParsingHTTPError as err: self._readable = False self.send_http_error(err.code, err.message) return except Exception as err: self.log_message('Exception: %s', err) self._readable = False self.send_http_error(500, 'Internal Server Error') return else: self.data += self.recv(8192) if len(self.data) < self.content_len: return elif len(self.data) > self.content_len: self.data = self.data[:self.content_len] self._readable = False request = None try: request = loads(self.data, [JsonRpcNotification, JsonRpcRequest], encoding=self.server.encoding) method = self.server.interface(self.server, request, self) method() except Exception, err: self.on_error(request, err)
def handle(self): ''' Handles an Json-RPC request. ''' self.command = None self.requestline = '' self.request_version = self.default_request_version self.close_connection = 1 try: self.raw_requestline = self.rfile.readline() if not self.raw_requestline: return if not self.parse_request(): return if self.command != 'POST': self.send_error(501, 'Unsupported method (%r)' % self.command) return data = self.rfile.read(int(self.headers.get('content-length', 0))) except socket.timeout: self.send_error(408, 'Request timed out') return request = None try: request = loads(data, [JsonRpcNotification, JsonRpcRequest], encoding=self.server.encoding) method = self.server.interface(self.server, request, self) method() except Exception, err: self.on_error(request, err)
def post_response(self): """Return the response generated from a generic POST request. Do basic validation on the response.""" response = self.req.post('/tag', headers={"Content-Type": 'application/json'}, data=dumps({u'name': u'Jeff Knupp'})) assert response.status_code == 201 assert loads(response.data)[u'name'] == u'Jeff Knupp' return response
def test_put_new_resource(self): """Send HTTP PUT for a resource which doesn't exist (should be created).""" response = self.req.put('/tag/2', headers={"Content-Type": 'application/json'}, data=dumps({ u'id': 2, u'name': u'Jeff Knupp' })) assert response.status_code == 201 assert loads(response.data)['name'] == u'Jeff Knupp'
def http_response(self, request, response): ''' Processes the given Json-RPC response. ''' if response.code == 200: message = loads(response.read(), [JsonRpcResponse], encoding=self.context.client.encoding) if request.id != message.id: raise JsonRpcResponseError(data={'id': message.id}) return message.result raise JsonRpcProtocolError(response.code, response.msg, data={'exception': response.read()})
def ctx_select(cls, session, query): result = {} a = query.sqlaq() if a: q = 'select dataset.address,tag.name,dataset.value from context dataset inner join tag on tag.id=dataset.tag where dataset.id in (select dataset.id from context dataset inner join tag on tag.id=dataset.tag where (%s)) and (%s)'%(query.sqlq(), a) else: q = 'select dataset.address,tag.name,dataset.value from context dataset inner join tag on tag.id=dataset.tag where dataset.id in (select dataset.id from context dataset inner join tag on tag.id=dataset.tag where (%s))'%(query.sqlq()) for address,k,v in session.database.execute(q, query.sqld()+query.sqlad()): if address not in result: result[address] = {} result[address][k] = base.loads(v) # XXX return result
def test_put_muti_resource(self): """ 批量修改 :return: """ old_res = self.post('/tag', json=[ { u"name": u'muti_update1' }, { u"name": u'muti_update2' }, { u"name": u'muti_update3' }, ]) assert old_res.status_code == 201 assert len(loads(old_res.data)) == 3 old_items = loads( self.req.get('/tag', query_string={ 'name': "%muti_update%", }).data)['items'] assert len(old_items) == 3 new_items = [] for item in old_items: new_dict = dict(item) new_dict['name'] += '_update' new_items.append(new_dict) res = self.put('/tag', json=new_items) assert res.status_code == 200 assert len(loads(res.data)) == 3 now_items = loads( self.req.get('/tag', query_string={ 'name': "%muti_update%", }).data)['items'] assert now_items for item in now_items: assert item['name'].endswith('_update')
def test_get_sub_collection_and_data_not_change(self): """ 测试获取子资源,并且确认子资源未更改 :return: """ result = loads(self.get('/Track/@CollectionKeyAttributeTestCase_name/PlaylistCollection').data) assert len(result['items']) == result['total'] == 3 self.assertListItemEqual(result['items'], [ { u'PlaylistId': 1, u'Name': u'Music' }, { u'PlaylistId': 17, u'Name': u'Heavy Metal Classic' }, { u'PlaylistId': 12, u'Name': u'Classical' }, ])
def test_get_expanded_resource(self): """Does GETing a resource return the 'Link' header field?""" response = self.get_response('/tracks/1', 200, params={'_expand': 1}) assert 'Album' in loads(response.data)
def test_get_object_attribute(self): """Test simple HTTP GET""" response = self.get_response('/tracks/347', 200) response = self.get_response('/tracks/347/Genre', 200) assert loads(response.data)[u'Name'] == 'Rock'
def test_get_with_sort(self): """Test simple HTTP GET""" response = self.get_response('/artists', 200, params={'_sort': 'Name'}) assert loads(response.data)[u'items'][0]['Name'] == 'A Cor Do Som'
def test_get_with_like_filter(self): """Test simple HTTP GET""" response = self.get_response('/artists', 200, params={'Name': '%AC%DC%'}) assert len(loads(response.data)[u'items']) == 1
def test_get_with_limit(self): """Test simple HTTP GET""" response = self.get_response('/artists', 200, params={'_num': 10}) assert len(loads(response.data)[u'items']) == 10
def test_get(self): """Test simple HTTP GET""" response = self.get_response('/artists', 200) assert len(loads(response.data)[u'items']) == 275 assert loads(response.data)[u'total'] == 275