Merge pull request #676 from taigaio/check-max-owner-memberships-when-creating-invitations

Checking max owner memberships when creating invitations
remotes/origin/issue/4795/notification_even_they_are_disabled
David Barragán Merino 2016-03-28 13:02:45 +02:00
commit 893275e101
2 changed files with 28 additions and 1 deletions

View File

@ -634,7 +634,7 @@ class MembershipViewSet(BlockedByProjectMixin, ModelCrudViewSet):
if "bulk_memberships" in data and isinstance(data["bulk_memberships"], list): if "bulk_memberships" in data and isinstance(data["bulk_memberships"], list):
members = len(data["bulk_memberships"]) members = len(data["bulk_memberships"])
(enough_slots, not_enough_slots_error) = users_service.has_available_slot_for_project( (enough_slots, not_enough_slots_error) = users_service.has_available_slot_for_project(
request.user, project.owner,
project=project, project=project,
members=members members=members
) )

View File

@ -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"] 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): def test_api_create_bulk_members_with_enough_memberships_private_project_slots_multiple_projects(client):
user = f.UserFactory.create(max_memberships_private_projects=6) user = f.UserFactory.create(max_memberships_private_projects=6)
project = f.ProjectFactory(owner=user, is_private=True) project = f.ProjectFactory(owner=user, is_private=True)