Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2012-09-23 03:29:01 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2012-09-23 03:29:01 (GMT)
commitbc8f1b20e1ab93ecb2fa4c4e0e97bf43e50b4ee7 (patch)
tree35a66051b0d592bd5ef1e7806528426259834d40
parent1404afc3041512afcfb7ce5b566f04e63abc95f9 (diff)
Test property permissions
-rwxr-xr-xtests/units/volume.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/units/volume.py b/tests/units/volume.py
index 3ee98aa..a7eefe3 100755
--- a/tests/units/volume.py
+++ b/tests/units/volume.py
@@ -13,6 +13,7 @@ src_root = abspath(dirname(__file__))
from __init__ import tests
+import active_document as ad
from active_document import env, volume, document, SingleVolume, \
Request, Response, Document, active_property, \
BlobProperty, NotFound, Redirect
@@ -608,6 +609,27 @@ class VolumeTest(tests.Test):
],
events)
+ def test_PermissionsNoWrite(self):
+
+ class TestDocument(Document):
+
+ @active_property(slot=1, default='', permissions=ad.ACCESS_READ)
+ def prop(self, value):
+ pass
+
+ @active_property(BlobProperty, permissions=ad.ACCESS_READ)
+ def blob(self, value):
+ return value
+
+ self.volume = SingleVolume(tests.tmpdir, [TestDocument])
+ guid = self.call('POST', document='testdocument', content={})
+
+ self.assertRaises(ad.Forbidden, self.call, 'POST', document='testdocument', content={'prop': 'value'})
+ self.assertRaises(ad.Forbidden, self.call, 'PUT', document='testdocument', guid=guid, content={'prop': 'value'})
+ self.assertRaises(ad.Forbidden, self.call, 'PUT', document='testdocument', guid=guid, content={'blob': 'value'})
+ self.assertRaises(ad.Forbidden, self.call, 'PUT', document='testdocument', guid=guid, prop='prop', content='value')
+ self.assertRaises(ad.Forbidden, self.call, 'PUT', document='testdocument', guid=guid, prop='blob', content='value')
+
def call(self, method, document=None, guid=None, prop=None,
accept_language=None, **kwargs):