Fix node assignment validation

Both "id" and "roles" fields are required for assignment, but they
weren't marked as required in JSON Schema. Since now it's fixed.

Change-Id: I44b6f76e5fdaa798bb899fad3c54d8d833df3184
Closes-Bug: #1397016
This commit is contained in:
Igor Kalnitsky 2014-12-01 15:01:23 +02:00
parent 58e5f47457
commit 2e026bfbee
2 changed files with 30 additions and 12 deletions

View File

@ -31,7 +31,8 @@ assignment_format_schema = {
'type': 'array',
'items': {'type': 'string'}
}
}
},
'required': ['id', 'roles'],
}
}

View File

@ -17,7 +17,10 @@ from nailgun.errors import errors
from nailgun.test.base import BaseUnitTest
class TestAssignmentValidator(BaseUnitTest):
class TestNodeAssignmentValidator(BaseUnitTest):
validator = NodeAssignmentValidator
def setUp(self):
self.models = {
'settings': {
@ -29,7 +32,7 @@ class TestAssignmentValidator(BaseUnitTest):
}
}
def test_check_roles_requirement(self):
def test_check_roles_requirement_equal(self):
roles = ['test']
roles_metadata = {
'test': {
@ -42,10 +45,10 @@ class TestAssignmentValidator(BaseUnitTest):
}
}
NodeAssignmentValidator.check_roles_requirement(roles,
roles_metadata,
self.models)
self.validator.check_roles_requirement(
roles, roles_metadata, self.models)
def test_check_roles_requirement_not_equal(self):
roles = ['test']
roles_metadata = {
'test': {
@ -58,9 +61,8 @@ class TestAssignmentValidator(BaseUnitTest):
}
}
NodeAssignmentValidator.check_roles_requirement(roles,
roles_metadata,
self.models)
self.validator.check_roles_requirement(
roles, roles_metadata, self.models)
def test_check_roles_requirement_failed(self):
roles = ['test']
@ -78,6 +80,21 @@ class TestAssignmentValidator(BaseUnitTest):
}
}
NodeAssignmentValidator.check_roles_requirement(roles,
roles_metadata,
self.models)
self.validator.check_roles_requirement(
roles, roles_metadata, self.models)
def test_validate_collection_update_schema_requirements(self):
self.assertRaises(
errors.InvalidData,
self.validator.validate_collection_update,
'[{}]')
self.assertRaises(
errors.InvalidData,
self.validator.validate_collection_update,
'[{"id": 1}]')
self.assertRaises(
errors.InvalidData,
self.validator.validate_collection_update,
'[{"roles": []}]')