def setUp(self): super(self.__class__, self).setUp() self.data = TestModel() self.data.save() # Register to the WSGIRequest signals to get the latest generated # request object. signals.entry_request_started.connect(self.fetch_request)
class MultiXMLTests(MainTests): def init_delegate(self): self.t1_data = TestModel() self.t1_data.save() self.t2_data = TestModel() self.t2_data.save() # XML field data to dynamically include in `expected` strings: self.test1_xml = '<test1>None</test1>' self.test2_xml = '<test2>None</test2>' def test_multixml(self): ## expected = b'<?xml version="1.0" encoding="utf-8"?>\n<response><resource><test1>None</test1><test2>None</test2></resource><resource><test1>None</test1><test2>None</test2></resource></response>' #PY3: Undetermined order of <testn> field elements expected = '<?xml version="1.0" encoding="utf-8"?>\n<response><resource>%s%s</resource><resource>%s%s</resource></response>' result = self.client.get('/api/entries.xml', HTTP_AUTHORIZATION=self.auth_string).content ## self.assertEqual(expected, result) self.assertIn(result, [ # Try all <testn> field orderings (expected % add(*xml)).encode('ascii') # result is bytes for xml in product(permutations((self.test1_xml, self.test2_xml)), repeat=2)]) def test_singlexml(self): obj = TestModel.objects.all()[0] ## expected = b'<?xml version="1.0" encoding="utf-8"?>\n<response><test1>None</test1><test2>None</test2></response>' #PY3: Undetermined order of <testn> field elements expected = '<?xml version="1.0" encoding="utf-8"?>\n<response>%s%s</response>' result = self.client.get('/api/entry-%d.xml' % (obj.pk,), HTTP_AUTHORIZATION=self.auth_string).content ## self.assertEqual(expected, result) self.assertIn(result, [ # Try all <testn> field orderings (expected % xml).encode('ascii') # result is bytes for xml in permutations((self.test1_xml, self.test2_xml))])
def init_delegate(self): self.t1_data = TestModel() self.t1_data.save() self.t2_data = TestModel() self.t2_data.save() # XML field data to dynamically include in `expected` strings: self.test1_xml = '<test1>None</test1>' self.test2_xml = '<test2>None</test2>'
class Issue36RegressionTests(MainTests): """ This testcase addresses #36 in django-piston where request.FILES is passed empty to the handler if the request.method is PUT. """ def fetch_request(self, sender, request, *args, **kwargs): self.request = request def setUp(self): super(self.__class__, self).setUp() self.data = TestModel() self.data.save() # Register to the WSGIRequest signals to get the latest generated # request object. signals.entry_request_started.connect(self.fetch_request) def tearDown(self): super(self.__class__, self).tearDown() self.data.delete() signals.entry_request_started.disconnect(self.fetch_request) def test_simple(self): # First try it with POST to see if it works there if True: fp = open(__file__, 'r') try: response = self.client.post( '/api/entries.xml', {'file': fp}, HTTP_AUTHORIZATION=self.auth_string) self.assertEquals( 1, len(self.request.FILES), 'request.FILES on POST is empty when it should contain 1 file' ) finally: fp.close() if not hasattr(self.client, 'put'): import warnings warnings.warn( 'Issue36RegressionTest partially requires Django 1.1 or newer. Skipped.' ) return # ... and then with PUT fp = open(__file__, 'r') try: response = self.client.put('/api/entry-%d.xml' % self.data.pk, {'file': fp}, HTTP_AUTHORIZATION=self.auth_string) self.assertEquals( 1, len(self.request.FILES), 'request.FILES on PUT is empty when it should contain 1 file') finally: fp.close()
class Issue36RegressionTests(MainTests): """ This testcase addresses #36 in django-piston where request.FILES is passed empty to the handler if the request.method is PUT. """ def fetch_request(self, sender, request, *args, **kwargs): self.request = request def setUp(self): super(self.__class__, self).setUp() self.data = TestModel() self.data.save() # Register to the WSGIRequest signals to get the latest generated # request object. signals.entry_request_started.connect(self.fetch_request) def tearDown(self): super(self.__class__, self).tearDown() self.data.delete() signals.entry_request_started.disconnect(self.fetch_request) def test_simple(self): # First try it with POST to see if it works there if True: fp = open(__file__, "r") try: response = self.client.post("/api/entries.xml", {"file": fp}, HTTP_AUTHORIZATION=self.auth_string) self.assertEquals( 1, len(self.request.FILES), "request.FILES on POST is empty when it should contain 1 file" ) finally: fp.close() if not hasattr(self.client, "put"): import warnings warnings.warn("Issue36RegressionTest partially requires Django 1.1 or newer. Skipped.") return # ... and then with PUT fp = open(__file__, "r") try: response = self.client.put( "/api/entry-%d.xml" % self.data.pk, {"file": fp}, HTTP_AUTHORIZATION=self.auth_string ) self.assertEquals(1, len(self.request.FILES), "request.FILES on PUT is empty when it should contain 1 file") finally: fp.close()
class MultiXMLTests(MainTests): def init_delegate(self): self.t1_data = TestModel() self.t1_data.save() self.t2_data = TestModel() self.t2_data.save() def test_multixml(self): expected = '<?xml version="1.0" encoding="utf-8"?>\n<response><resource><test1>None</test1><test2>None</test2></resource><resource><test1>None</test1><test2>None</test2></resource></response>' result = self.client.get("/api/entries.xml", HTTP_AUTHORIZATION=self.auth_string).content self.assertEquals(expected, result) def test_singlexml(self): obj = TestModel.objects.all()[0] expected = '<?xml version="1.0" encoding="utf-8"?>\n<response><test1>None</test1><test2>None</test2></response>' result = self.client.get("/api/entry-%d.xml" % (obj.pk,), HTTP_AUTHORIZATION=self.auth_string).content self.assertEquals(expected, result)
class MultiXMLTests(MainTests): def init_delegate(self): self.t1_data = TestModel() self.t1_data.save() self.t2_data = TestModel() self.t2_data.save() def test_multixml(self): expected = '<?xml version="1.0" encoding="utf-8"?>\n<response><resource><test1>None</test1><test2>None</test2></resource><resource><test1>None</test1><test2>None</test2></resource></response>' result = self.client.get('/api/entries.xml', HTTP_AUTHORIZATION=self.auth_string).content self.assertEquals(expected, result) def test_singlexml(self): obj = TestModel.objects.all()[0] expected = '<?xml version="1.0" encoding="utf-8"?>\n<response><test1>None</test1><test2>None</test2></response>' result = self.client.get('/api/entry-%d.xml' % (obj.pk, ), HTTP_AUTHORIZATION=self.auth_string).content self.assertEquals(expected, result)
def init_delegate(self): self.t1_data = TestModel() self.t1_data.save() self.t2_data = TestModel() self.t2_data.save()