mirror of
https://github.com/ansible/awx.git
synced 2026-05-12 03:47:36 -02:30
Validate that user provides a valid organization when posting a project
This commit is contained in:
@@ -946,6 +946,12 @@ class ProjectSerializer(UnifiedJobTemplateSerializer, ProjectOptionsSerializer):
|
|||||||
args=(obj.last_update.pk,))
|
args=(obj.last_update.pk,))
|
||||||
return res
|
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):
|
class ProjectPlaybooksSerializer(ProjectSerializer):
|
||||||
|
|
||||||
|
|||||||
@@ -108,12 +108,19 @@ def test_create_project(post, organization, org_admin, org_member, admin, rando)
|
|||||||
'name': 'Project %d' % i,
|
'name': 'Project %d' % i,
|
||||||
'organization': organization.id,
|
'organization': organization.id,
|
||||||
}, u)
|
}, u)
|
||||||
|
print(result.data)
|
||||||
assert result.status_code == expected_status_codes[i]
|
assert result.status_code == expected_status_codes[i]
|
||||||
if expected_status_codes[i] == 201:
|
if expected_status_codes[i] == 201:
|
||||||
assert Project.objects.filter(name='Project %d' % i, organization=organization).exists()
|
assert Project.objects.filter(name='Project %d' % i, organization=organization).exists()
|
||||||
else:
|
else:
|
||||||
assert not Project.objects.filter(name='Project %d' % i, organization=organization).exists()
|
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
|
@pytest.mark.django_db
|
||||||
def test_create_project_through_org_link(post, organization, org_admin, org_member, admin, rando):
|
def test_create_project_through_org_link(post, organization, org_admin, org_member, admin, rando):
|
||||||
test_list = [rando, org_member, org_admin, admin]
|
test_list = [rando, org_member, org_admin, admin]
|
||||||
|
|||||||
Reference in New Issue
Block a user