Mercurial > p > roundup > code
comparison test/rest_common.py @ 5686:eb51c0d9c9bf
Move @apiver version extraction code after the input is parsed for
json. Otherwise json input causes issues.
test 400 return code if ;version=1.1.
test for version param in accept header ;version=1
test version in type/vnd.subtype (vnd.json.test-v1)
and @apiver=1 query param.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 31 Mar 2019 21:46:23 -0400 |
| parents | e8ac82b8d074 |
| children | 4aae822e2cb4 |
comparison
equal
deleted
inserted
replaced
| 5685:4b4885f0c6ad | 5686:eb51c0d9c9bf |
|---|---|
| 713 body=b'{ "data": "Joe Doe 1" }' | 713 body=b'{ "data": "Joe Doe 1" }' |
| 714 env = { "CONTENT_TYPE": "application/json", | 714 env = { "CONTENT_TYPE": "application/json", |
| 715 "CONTENT_LENGTH": len(body), | 715 "CONTENT_LENGTH": len(body), |
| 716 "REQUEST_METHOD": "PUT" | 716 "REQUEST_METHOD": "PUT" |
| 717 } | 717 } |
| 718 headers={"accept": "application/json", | 718 headers={"accept": "application/json; version=1", |
| 719 "content-type": env['CONTENT_TYPE'], | 719 "content-type": env['CONTENT_TYPE'], |
| 720 "content-length": env['CONTENT_LENGTH'], | 720 "content-length": env['CONTENT_LENGTH'], |
| 721 "if-match": etag | 721 "if-match": etag |
| 722 } | 722 } |
| 723 self.headers=headers | 723 self.headers=headers |
| 736 self.assertEqual(self.server.client.response_code, 200) | 736 self.assertEqual(self.server.client.response_code, 200) |
| 737 results = self.server.get_element('user', self.joeid, self.empty_form) | 737 results = self.server.get_element('user', self.joeid, self.empty_form) |
| 738 self.assertEqual(self.dummy_client.response_code, 200) | 738 self.assertEqual(self.dummy_client.response_code, 200) |
| 739 self.assertEqual(results['data']['attributes']['realname'], | 739 self.assertEqual(results['data']['attributes']['realname'], |
| 740 'Joe Doe 1') | 740 'Joe Doe 1') |
| 741 | |
| 742 | |
| 743 # substitute the version with an unacceptable version | |
| 744 # and verify it returns 400 code. | |
| 745 self.headers["accept"] = "application/json; version=1.1" | |
| 746 body_file=BytesIO(body) # FieldStorage needs a file | |
| 747 form = client.BinaryFieldStorage(body_file, | |
| 748 headers=headers, | |
| 749 environ=env) | |
| 750 self.server.client.request.headers.get=self.get_header | |
| 751 results = self.server.dispatch('PUT', | |
| 752 "/rest/data/user/%s/realname"%self.joeid, | |
| 753 form) | |
| 754 self.assertEqual(self.server.client.response_code, 400) | |
| 741 del(self.headers) | 755 del(self.headers) |
| 742 | 756 |
| 743 # TEST #2 | 757 # TEST #2 |
| 744 # Set joe's 'realname' using json data. | 758 # Set joe's 'realname' using json data. |
| 745 # simulate: /rest/data/user/<id>/realname | 759 # simulate: /rest/data/user/<id>/realname |
| 783 # | 797 # |
| 784 # Also use GET on the uri via the dispatch to retrieve | 798 # Also use GET on the uri via the dispatch to retrieve |
| 785 # the results from the db. | 799 # the results from the db. |
| 786 etag = calculate_etag(self.db.user.getnode(self.joeid)) | 800 etag = calculate_etag(self.db.user.getnode(self.joeid)) |
| 787 headers={"if-match": etag, | 801 headers={"if-match": etag, |
| 788 "accept": "application/json", | 802 "accept": "application/vnd.json.test-v1+json", |
| 789 } | 803 } |
| 790 form = cgi.FieldStorage() | 804 form = cgi.FieldStorage() |
| 791 form.list = [ | 805 form.list = [ |
| 792 cgi.MiniFieldStorage('data', 'Joe Doe'), | 806 cgi.MiniFieldStorage('data', 'Joe Doe'), |
| 807 cgi.MiniFieldStorage('@apiver', '1'), | |
| 793 ] | 808 ] |
| 794 self.headers = headers | 809 self.headers = headers |
| 795 self.server.client.request.headers.get = self.get_header | 810 self.server.client.request.headers.get = self.get_header |
| 796 results = self.server.dispatch('PUT', | 811 results = self.server.dispatch('PUT', |
| 797 "/rest/data/user/%s/realname"%self.joeid, | 812 "/rest/data/user/%s/realname"%self.joeid, |
