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,

Roundup Issue Tracker: http://roundup-tracker.org/