test: check default user permission overlap validation

This commit is contained in:
Mangesh-Khairnar 2019-04-16 23:36:08 +05:30
parent 9079e7965e
commit 229c0d9a96
2 changed files with 31 additions and 20 deletions

View file

@ -8,17 +8,28 @@ import frappe
import unittest
class TestUserPermission(unittest.TestCase):
def test_default_user_permission(self):
user = create_user('test_bulk_creation_update@example.com')
param = get_params(user, 'User', user.name, True)
add_user_permissions(param)
#create a duplicate entry with default
perm_user = create_user('test_perm@example.com')
param = get_params(user, 'User', perm_user.name, True)
self.assertRaises(frappe.ValidationError, add_user_permissions, param)
def test_apply_to_all(self):
''' Create User permission for User having access to all applicable Doctypes'''
user = get_user()
param = get_params(user, apply = 1)
user = create_user('test_bulk_creation_update@example.com')
param = get_params(user, 'User', user.name)
created = add_user_permissions(param)
self.assertEquals(created, 1)
def test_for_applicable_on_update_from_apply_to_all(self):
''' Update User Permission from all to some applicable Doctypes'''
user = get_user()
param = get_params(user, applicable = ["Chat Room", "Chat Message"])
user = create_user('test_bulk_creation_update@example.com')
param = get_params(user, 'User', user.name , applicable = ["Chat Room", "Chat Message"])
create = add_user_permissions(param)
frappe.db.commit()
@ -33,8 +44,8 @@ class TestUserPermission(unittest.TestCase):
def test_for_apply_to_all_on_update_from_applicable(self):
''' Update User Permission from some to all applicable Doctypes'''
user = get_user()
param = get_params(user, apply = 1)
user = create_user('test_bulk_creation_update@example.com')
param = get_params(user, 'User', user.name)
created = add_user_permissions(param)
created_apply_to_all = frappe.db.exists("User Permission", get_exists_param(user))
removed_applicable_first = frappe.db.exists("User Permission", get_exists_param(user, applicable = "Chat Room"))
@ -46,26 +57,26 @@ class TestUserPermission(unittest.TestCase):
self.assertIsNone(removed_applicable_second)
self.assertEquals(created, 1)
def get_user():
if frappe.db.exists('User', 'test_bulk_creation_update@example.com'):
return frappe.get_doc('User', 'test_bulk_creation_update@example.com')
def create_user(user):
if frappe.db.exists('User', user):
return frappe.get_doc('User', user)
else:
user = frappe.new_doc('User')
user.email = 'test_bulk_creation_update@example.com'
user.first_name = 'Test_Bulk_Creation'
user.email = user
user.first_name = user.split("@")[0]
user.add_roles("System Manager")
return user
def get_params(user, apply = None , applicable = None):
def get_params(user, doctype, docname, is_default=False, applicable=None):
''' Return param to insert '''
param = {
"user": user.name,
"doctype":"User",
"docname":user.name
"doctype":doctype,
"docname":docname,
"is_default": is_default,
"apply_to_all_doctypes": 1,
"applicable_doctypes": []
}
if apply:
param.update({"apply_to_all_doctypes": 1})
param.update({"applicable_doctypes": []})
if applicable:
param.update({"apply_to_all_doctypes": 0})
param.update({"applicable_doctypes": applicable})
@ -82,4 +93,4 @@ def get_exists_param(user, applicable = None):
param.update({"applicable_for": applicable})
else:
param.update({"apply_to_all_doctypes": 1})
return param
return param

View file

@ -14,7 +14,7 @@ from frappe.desk.form.linked_with import get_linked_doctypes
class UserPermission(Document):
def validate(self):
self.validate_user_permission()
self.validate_permission_overlap()
self.validate_default_permission()
def on_update(self):
frappe.cache().delete_value('user_permissions')
@ -38,7 +38,7 @@ class UserPermission(Document):
if duplicate_exists:
frappe.throw(_("User permission already exists"), frappe.DuplicateEntryError)
def validate_permission_overlap(self):
def validate_default_permission(self):
''' validate user permission overlap for default value of a particular doctype '''
overlap_exists = []
if self.is_default: