feat: add NetBox plugin store
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import unittest
|
||||
|
||||
import _bootstrap # noqa: F401
|
||||
|
||||
from netbox_plugin_store.access import has_store_access
|
||||
from netbox_plugin_store.navigation import menu
|
||||
|
||||
|
||||
PERMISSION = "netbox_plugin_store.manage_plugin"
|
||||
|
||||
|
||||
class NetBoxUser:
|
||||
"""NetBox 4.6 users deliberately have no is_staff attribute."""
|
||||
|
||||
def __init__(self, *, authenticated=True, superuser=False, permissions=()):
|
||||
self.is_authenticated = authenticated
|
||||
self.is_superuser = superuser
|
||||
self.permissions = set(permissions)
|
||||
|
||||
def has_perm(self, permission_name):
|
||||
return permission_name in self.permissions
|
||||
|
||||
|
||||
class AccessCompatibilityTests(unittest.TestCase):
|
||||
def test_permission_user_without_is_staff_is_authorized(self):
|
||||
user = NetBoxUser(permissions=(PERMISSION,))
|
||||
self.assertTrue(has_store_access(user, PERMISSION))
|
||||
|
||||
def test_unauthenticated_and_unprivileged_users_are_rejected(self):
|
||||
self.assertFalse(
|
||||
has_store_access(NetBoxUser(authenticated=False, permissions=(PERMISSION,)), PERMISSION)
|
||||
)
|
||||
self.assertFalse(has_store_access(NetBoxUser(), PERMISSION))
|
||||
|
||||
def test_superuser_is_authorized_without_explicit_permission(self):
|
||||
self.assertTrue(has_store_access(NetBoxUser(superuser=True), PERMISSION))
|
||||
|
||||
|
||||
class NavigationCompatibilityTests(unittest.TestCase):
|
||||
def test_menu_uses_permission_not_staff_only(self):
|
||||
items = [item for _label, group_items in menu.groups for item in group_items]
|
||||
self.assertEqual(len(items), 3)
|
||||
for item in items:
|
||||
self.assertTrue(item.auth_required)
|
||||
self.assertFalse(item.staff_only)
|
||||
self.assertEqual(item.permissions, [PERMISSION])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user