From cab5543d448bc2012b7ccd7fde513ef153063d5a Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Mon, 28 Mar 2016 12:19:43 +0200 Subject: [PATCH] Checking max owner memberships when creating invitations --- taiga/projects/api.py | 2 +- tests/integration/test_memberships.py | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/taiga/projects/api.py b/taiga/projects/api.py index ee8aa50d..a3fdbbeb 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -634,7 +634,7 @@ class MembershipViewSet(BlockedByProjectMixin, ModelCrudViewSet): if "bulk_memberships" in data and isinstance(data["bulk_memberships"], list): members = len(data["bulk_memberships"]) (enough_slots, not_enough_slots_error) = users_service.has_available_slot_for_project( - request.user, + project.owner, project=project, members=members ) diff --git a/tests/integration/test_memberships.py b/tests/integration/test_memberships.py index 3b9df18c..229ed205 100644 --- a/tests/integration/test_memberships.py +++ b/tests/integration/test_memberships.py @@ -77,6 +77,33 @@ def test_api_create_bulk_members_without_enough_memberships_private_project_slot assert "reached the limit of memberships for private" in response.data["_error_message"] + +def test_api_create_bulk_members_for_admin_without_enough_memberships_private_project_slots_one_project(client): + owner = f.UserFactory.create(max_memberships_private_projects=3) + user = f.UserFactory.create() + project = f.ProjectFactory(owner=owner, is_private=True) + role = f.RoleFactory(project=project, name="Test") + f.MembershipFactory(project=project, user=user, is_admin=True) + + url = reverse("memberships-bulk-create") + + data = { + "project_id": project.id, + "bulk_memberships": [ + {"role_id": role.pk, "email": "test1@test.com"}, + {"role_id": role.pk, "email": "test2@test.com"}, + {"role_id": role.pk, "email": "test3@test.com"}, + {"role_id": role.pk, "email": "test4@test.com"}, + ] + } + client.login(user) + response = client.json.post(url, json.dumps(data)) + + assert response.status_code == 400 + assert "reached the limit of memberships for private" in response.data["_error_message"] + + + def test_api_create_bulk_members_with_enough_memberships_private_project_slots_multiple_projects(client): user = f.UserFactory.create(max_memberships_private_projects=6) project = f.ProjectFactory(owner=user, is_private=True)