Skip to content

Commit

Permalink
refactor tests and get_permission logic from review
Browse files Browse the repository at this point in the history
  • Loading branch information
tushar5526 committed Nov 16, 2023
1 parent c6879fb commit d169e96
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
7 changes: 5 additions & 2 deletions api/projects/permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def has_permission(self, request, view):
if view.action == "create" and request.user.belongs_to(
int(request.data.get("organisation"))
):
organisation = Organisation.objects.get(
organisation = Organisation.objects.select_related("subscription").get(
id=int(request.data.get("organisation"))
)

Expand All @@ -49,7 +49,10 @@ def has_permission(self, request, view):
total_projects_created = Project.objects.filter(
organisation=organisation
).count()
if subscription_metadata.projects and total_projects_created >= subscription_metadata.projects:
if (
subscription_metadata.projects
and total_projects_created >= subscription_metadata.projects
):
return False
if organisation.restrict_project_create_to_admin:
return request.user.is_organisation_admin(organisation.pk)
Expand Down
11 changes: 7 additions & 4 deletions api/projects/tests/test_permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,7 @@ def test_regular_user_has_no_destroy_permission(self):

@pytest.mark.django_db
def test_free_plan_has_only_fixed_projects_permission():
# Given
organisation = Organisation.objects.create(name="Test organisation")

user = FFAdminUser.objects.create(email="[email protected]")
Expand All @@ -387,13 +388,15 @@ def test_free_plan_has_only_fixed_projects_permission():

project_permissions = ProjectPermissions()

mock_view.action = "create"
mock_view.detail = False
mock_request.data = {"name": "Test", "organisation": organisation.id}
mock_request.user = user
mock_view = mock.MagicMock(action="create", detail=False)
mock_request = mock.MagicMock(
data={"name": "Test", "organisation": organisation.id}, user=user
)

# When
for i in range(MAX_PROJECTS_IN_FREE_PLAN):
assert project_permissions.has_permission(mock_request, mock_view)
Project.objects.create(name=f"Test project{i}", organisation=organisation)

# Then - free projects limit should be exhausted
assert not project_permissions.has_permission(mock_request, mock_view)

0 comments on commit d169e96

Please sign in to comment.