Validate that user provides a valid organization when posting a project

This commit is contained in:
Akita Noek 2016-03-24 11:03:42 -04:00
parent eccb50a253
commit 6653a1e747
2 changed files with 13 additions and 0 deletions

View File

@ -946,6 +946,12 @@ class ProjectSerializer(UnifiedJobTemplateSerializer, ProjectOptionsSerializer):
args=(obj.last_update.pk,))
return res
def validate(self, attrs):
if 'organization' not in attrs or type(attrs['organization']) is not Organization:
raise serializers.ValidationError('Missing organization')
return super(ProjectSerializer, self).validate(attrs)
class ProjectPlaybooksSerializer(ProjectSerializer):

View File

@ -108,12 +108,19 @@ def test_create_project(post, organization, org_admin, org_member, admin, rando)
'name': 'Project %d' % i,
'organization': organization.id,
}, u)
print(result.data)
assert result.status_code == expected_status_codes[i]
if expected_status_codes[i] == 201:
assert Project.objects.filter(name='Project %d' % i, organization=organization).exists()
else:
assert not Project.objects.filter(name='Project %d' % i, organization=organization).exists()
@pytest.mark.django_db
def test_cant_create_project_without_org(post, organization, org_admin, org_member, admin, rando):
assert post(reverse('api:project_list'), { 'name': 'Project foo', }, admin).status_code == 400
assert post(reverse('api:project_list'), { 'name': 'Project foo', 'organization': None}, admin).status_code == 400
@pytest.mark.django_db
def test_create_project_through_org_link(post, organization, org_admin, org_member, admin, rando):
test_list = [rando, org_member, org_admin, admin]