def test_generate_etag_with_encode_etag_true(self): """Testing WebAPIResource.generate_etag with encode_etag=True""" class TestObject(object): my_field = 'abc' request = RequestFactory().request() request.user = User() resource = WebAPIResource() obj = TestObject() with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') etag = resource.generate_etag(obj, ['my_field'], request, encode_etag=True) self.assertEqual(len(w), 1) self.assertIn('generate_etag is deprecated', six.text_type(w[0].message)) self.assertEqual( etag, encode_etag(':%s' % repr(resource.serialize_object(obj, request=request))))
def test_serialize_object_with_cache_copy(self): """Testing WebAPIResource.serialize_object always returns a copy of the cached data """ class TestObject(object): my_field = 'abc' request = RequestFactory().request() request.user = User() resource = WebAPIResource() resource.fields = { 'my_field': { 'type': six.text_type, } } obj = TestObject() # We check this three times, since prior to Djblets 2.0.20, we would # first return a copy of the newly-generated data, then the cached # copy of the original data, and then the cached copy again (which # would no longer be untouched). data = resource.serialize_object(obj, request=request) self.assertIn('my_field', data) del data['my_field'] data = resource.serialize_object(obj, request=request) self.assertIn('my_field', data) del data['my_field'] data = resource.serialize_object(obj, request=request) self.assertIn('my_field', data)
def test_are_cache_headers_current_with_old_etag(self): """Testing WebAPIResource.are_cache_headers_current with old ETag""" request = RequestFactory().request() request.META['HTTP_IF_NONE_MATCH'] = 'abc123' resource = WebAPIResource() self.assertFalse( resource.are_cache_headers_current(request, etag='def456'))
def test_are_cache_headers_current_with_old_etag(self): """Testing WebAPIResource.are_cache_headers_current with old ETag""" request = RequestFactory().request() request.META['HTTP_IF_NONE_MATCH'] = 'abc123' resource = WebAPIResource() self.assertFalse(resource.are_cache_headers_current(request, etag='def456'))
def test_are_cache_headers_current_with_current_etag(self): """Testing WebAPIResource.are_cache_headers_current with current ETag """ etag = 'abc123' request = RequestFactory().request() request.META['HTTP_IF_NONE_MATCH'] = etag resource = WebAPIResource() self.assertTrue(resource.are_cache_headers_current(request, etag=etag))
def test_are_cache_headers_current_with_old_last_modified(self): """Testing WebAPIResource.are_cache_headers_current with old last modified timestamp """ request = RequestFactory().request() request.META['HTTP_IF_MODIFIED_SINCE'] = \ 'Wed, 14 Jan 2015 13:49:10 GMT' resource = WebAPIResource() self.assertFalse(resource.are_cache_headers_current( request, last_modified='Wed, 14 Jan 2015 12:10:13 GMT'))
def test_are_cache_headers_current_with_current_last_modified(self): """Testing WebAPIResource.are_cache_headers_current with current last modified timestamp """ timestamp = 'Wed, 14 Jan 2015 13:49:10 GMT' request = RequestFactory().request() request.META['HTTP_IF_MODIFIED_SINCE'] = timestamp resource = WebAPIResource() self.assertTrue(resource.are_cache_headers_current( request, last_modified=timestamp))
def get_list(self, request, *args, **kwargs): """Returns the list of known extensions. Each extension in the list has been installed, but may not be enabled. """ return WebAPIResource.get_list(self, request, *args, **kwargs)
def test_generate_etag_with_encode_etag_true(self): """Testing WebAPIResource.generate_etag with encode_etag=True""" class TestObject(object): my_field = 'abc' request = RequestFactory().request() request.user = User() resource = WebAPIResource() with warnings.catch_warnings(record=True) as w: etag = resource.generate_etag(TestObject(), ['my_field'], request, encode_etag=True) self.assertEqual(len(w), 1) self.assertIn('generate_etag will stop generating', six.text_type(w[0].message)) self.assertEqual(etag, '416c0aecaf0b1e8ec64104349ba549c7534861f2')
def test_generate_etag_with_encode_etag_false(self): """Testing WebAPIResource.generate_etag with encode_etag=False""" class TestObject(object): my_field = 'abc' request = RequestFactory().request() request.user = User() resource = WebAPIResource() obj = TestObject() with warnings.catch_warnings(record=True) as w: etag = resource.generate_etag(obj, None, request, encode_etag=False) self.assertEqual(len(w), 0) self.assertEqual( etag, repr(resource.serialize_object(obj, request=request)))
def test_generate_etag_with_encode_etag_false(self): """Testing WebAPIResource.generate_etag with encode_etag=False""" class TestObject(object): my_field = 'abc' request = RequestFactory().request() request.user = User() resource = WebAPIResource() obj = TestObject() with warnings.catch_warnings(record=True) as w: etag = resource.generate_etag(obj, None, request, encode_etag=False) self.assertEqual(len(w), 0) self.assertEqual(etag, repr(resource.serialize_object(obj, request=request)))
def test_serialize_object_with_cache_copy(self): """Testing WebAPIResource.serialize_object always returns a copy of the cached data """ class TestObject(object): my_field = 'abc' request = RequestFactory().request() request.user = User() resource = WebAPIResource() resource.fields = { 'my_field': { 'type': StringFieldType, } } obj = TestObject() # We check this three times, since prior to Djblets 2.0.20, we would # first return a copy of the newly-generated data, then the cached # copy of the original data, and then the cached copy again (which # would no longer be untouched). data = resource.serialize_object(obj, request=request) self.assertIn('my_field', data) del data['my_field'] data = resource.serialize_object(obj, request=request) self.assertIn('my_field', data) del data['my_field'] data = resource.serialize_object(obj, request=request) self.assertIn('my_field', data)
def test_generate_etag_with_encode_etag_false(self): """Testing WebAPIResource.generate_etag with encode_etag=False""" class TestObject(object): my_field = 'abc' request = RequestFactory().request() request.user = User() resource = WebAPIResource() obj = TestObject() with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') etag = resource.generate_etag(obj, None, request, encode_etag=False) self.assertEqual(len(w), 1) self.assertIn('generate_etag is deprecated', six.text_type(w[0].message)) self.assertEqual( etag, repr(resource.serialize_object(obj, request=request)))