Skip to content

Commit

Permalink
CDD-2432 Implement Middleware - Adds permission models tests clean up
Browse files Browse the repository at this point in the history
  • Loading branch information
mxrman committed Feb 25, 2025
1 parent 92020cc commit 3cb46c5
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 13 deletions.
10 changes: 6 additions & 4 deletions metrics/data/models/rbac_models/rbac_permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,7 @@ def clean(self):
self._validate_theme_selection()
self._validate_subtheme_selection()
self._validate_topic_selection()

rbac_permissions = self._get_existing_permissions()
if rbac_permissions.exists():
raise AdminFormDuplicatePermissionError
self._check_rbac_permissions_exist()

def save(self, *args, **kwargs):
self.clean()
Expand All @@ -160,3 +157,8 @@ def _validate_topic_selection(self):
def _get_existing_permissions(self) -> RBACPermissionQuerySet:
"""Validates that there are no duplicate permissions with the same fields."""
return RBACPermission.objects.get_existing_permissions(self)

def _check_rbac_permissions_exist(self):
rbac_permissions = self._get_existing_permissions()
if rbac_permissions.exists():
raise AdminFormDuplicatePermissionError
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import contextlib
import datetime
from typing import List

import factory
from metrics.data.models.rbac_models import (
Expand All @@ -21,7 +20,7 @@ class Meta:
def create_record(
cls,
name: str = "default",
permissions: List[RBACPermission] = [],
permissions: list[RBACPermission] = [],
**kwargs,
):

Expand Down
12 changes: 6 additions & 6 deletions tests/factories/metrics/rbac_models/rbac_permission.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ def create_record(
name: str = "all_infectious_respiratory_data",
theme_name: str = "infectious_disease",
sub_theme_name: str = "respiratory",
topic_name: str = None,
metric_name: str = None,
geography_name: str = None,
geography_type_name: str = None,
stratum_name: str = None,
age_name: str = None,
topic_name: str | None = None,
metric_name: str | None = None,
geography_name: str | None = None,
geography_type_name: str | None = None,
stratum_name: str | None = None,
age_name: str | None = None,
**kwargs,
):
theme, _ = Theme.objects.get_or_create(name=theme_name)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def test_get_existing_permissions_returns_no_queryset(self):
# Given
permission = RBACPermissionFactory.create_record()

_ = RBACPermissionFactory.create_record(
RBACPermissionFactory.create_record(
name="permission_2",
theme_name="extreme_event",
sub_theme_name="weather_alert",
Expand Down

0 comments on commit 3cb46c5

Please sign in to comment.