Browse Source

HUE-9096 [doc] Test update and prettify printing Permission objects

Romain 6 years ago
parent
commit
17262a313c

+ 2 - 2
desktop/core/src/desktop/api2.py

@@ -655,10 +655,10 @@ def share_document_link(request):
   """
   Globally activate of de-activate access to a document for logged-in users.
 
-  Example of input: {"uuid": "xxxx", "data": "read" / "write" / "off"}
+  Example of input: {"uuid": "xxxx", "perm": "read" / "write" / "off"}
   """
   uuid = request.POST.get('uuid')
-  perm = request.POST.get('data')
+  perm = request.POST.get('perm')
 
   if not uuid or not perm:
     raise PopupException(_('share_document_link requires uuid and permission data'))

+ 7 - 6
desktop/core/src/desktop/api2_tests.py

@@ -93,13 +93,13 @@ class TestDocumentApiSharingPermissions(object):
         'data': json.dumps(permissions)
     })
 
-  def share_link_doc(self, doc, perm, is_on=False, client=None):
+  def share_link_doc(self, doc, perm, client=None):
     if client is None:
       client = self.client
 
     return client.post("/desktop/api2/doc/share/link", {
         'uuid': json.dumps(doc.uuid),
-        'data': json.dumps({'name': 'link_%s' % perm, 'is_link_on': is_on})
+        'perm': json.dumps(perm)
     })
 
   def test_update_permissions(self):
@@ -437,12 +437,13 @@ class TestDocumentApiSharingPermissions(object):
     assert_false(doc.can_write(self.user_not_me))
 
     # Share by read link
-    response = self.share_link_doc(doc, perm='read', is_on=True)
+    response = self.share_link_doc(doc, perm='read')
 
     assert_equal(0, json.loads(response.content)['status'], response.content)
 
     assert_true(doc.can_read(self.user))
     assert_true(doc.can_write(self.user))
+
     assert_true(doc.can_read(self.user_not_me))
     assert_false(doc.can_write(self.user_not_me))
 
@@ -459,7 +460,7 @@ class TestDocumentApiSharingPermissions(object):
     assert_equal(0, json.loads(response.content)['status'], response.content)
 
     # Un-share
-    response = self.share_link_doc(doc, perm='read', is_on=False)
+    response = self.share_link_doc(doc, perm='off')
 
     assert_equal(0, json.loads(response.content)['status'], response.content)
 
@@ -481,7 +482,7 @@ class TestDocumentApiSharingPermissions(object):
     assert_equal(-1, json.loads(response.content)['status'], response.content)
 
     # Share by write link
-    response = self.share_link_doc(doc, perm='write', is_on=True)
+    response = self.share_link_doc(doc, perm='write')
 
     assert_equal(0, json.loads(response.content)['status'], response.content)
 
@@ -503,7 +504,7 @@ class TestDocumentApiSharingPermissions(object):
     assert_equal(0, json.loads(response.content)['status'], response.content)
 
     # Un-share
-    response = self.share_link_doc(doc, perm='write', is_on=False)
+    response = self.share_link_doc(doc, perm='off')
 
     assert_equal(0, json.loads(response.content)['status'], response.content)
 

+ 11 - 5
desktop/core/src/desktop/document2_tests.py

@@ -1094,8 +1094,10 @@ class TestDocument2Permissions(object):
 
       assert_true(doc.get_permissions('read'))
       assert_false(doc.get_permissions('write'))
-      assert_false(doc.get_permission('read').users.all())  # There is no doc listing via links, only direct access
-      assert_false(doc.get_permission('read').groups.all())
+      assert_false(doc.get_permission('link_read').users.all())
+      assert_false(doc.get_permission('link_read').groups.all())
+      assert_false(doc.get_permission('read'))  # There is no doc listing via links, only direct access
+      assert_false(doc.get_permission('write'))
 
       doc.share(self.user, name=Document2Permission.LINK_READ_PERM, is_link_on=False)
 
@@ -1181,7 +1183,7 @@ class TestDocument2Permissions(object):
       assert_true(doc.can_read(self.user_not_me))
       assert_true(doc.can_write(self.user_not_me))
 
-      assert_equal(0, doc.get_permissions('read').count())
+      assert_equal(1, doc.get_permissions('read').count())
       assert_equal(2, doc.get_permissions('write').count())
 
       # Not shared
@@ -1193,8 +1195,12 @@ class TestDocument2Permissions(object):
       assert_false(doc.can_read(self.user_not_me))
       assert_false(doc.can_write(self.user_not_me))
 
-      assert_equal(0, doc.get_permissions('read').count())
-      assert_equal(0, doc.get_permissions('write').count())
+      assert_equal(1, doc.get_permissions('read').count())  # 1 READ but empty people
+      assert_false(doc.get_permissions('read')[0].users.all())
+      assert_false(doc.get_permissions('read')[0].groups.all())
+      assert_equal(1, doc.get_permissions('write').count())  # 1 WRITE but empty people
+      assert_false(doc.get_permissions('write')[0].users.all())
+      assert_false(doc.get_permissions('write')[0].groups.all())
     finally:
       doc.delete()
 

+ 1 - 1
desktop/core/src/desktop/js/doc/hueDocument.js

@@ -164,7 +164,7 @@ class HueDocument {
       '/desktop/api2/doc/share/link',
       {
         uuid: JSON.stringify(self.fileEntry.definition().uuid),
-        data: JSON.stringify(perm)
+        perm: JSON.stringify(perm)
       },
       response => {
         if (response != null) {

+ 10 - 5
desktop/core/src/desktop/models.py

@@ -1391,13 +1391,13 @@ class Document2(models.Model):
 
   def share_link(self, user, perm='read'):
     if perm == 'read':
-      doc = doc.share(user, name=Document2Permission.LINK_READ_PERM, is_link_on=True)
+      self.share(user, name=Document2Permission.LINK_READ_PERM, is_link_on=True)
     elif perm == 'write':
-      doc = doc.share(user, name=Document2Permission.LINK_WRITE_PERM, is_link_on=True)
+      self.share(user, name=Document2Permission.LINK_WRITE_PERM, is_link_on=True)
     else:
-      doc = doc.share(user, name=Document2Permission.LINK_READ_PERM, is_link_on=False)
-      doc = doc.share(user, name=Document2Permission.LINK_WRITE_PERM, is_link_on=False)
-    return doc
+      self.share(user, name=Document2Permission.LINK_READ_PERM, is_link_on=False)
+      self.share(user, name=Document2Permission.LINK_WRITE_PERM, is_link_on=False)
+    return self
 
   def update_permission(self, user, name='read', users=None, groups=None, is_link_on=False):
     # Check if user has access to grant permissions
@@ -1606,6 +1606,11 @@ class Document2Permission(models.Model):
   class Meta(object):
     unique_together = ('doc', 'perms')
 
+  def __str__(self):
+    return force_unicode('Document: %s, Name: %s, Users: %s, Groups: %s, is_link_on: %s') % (
+      self.doc, self.perms, self.users, self.groups, self.is_link_on
+    )
+
   def to_dict(self):
     return {
       self.perms: {