Example #1
0
    def validate(self, data):
        if hasattr(self, 'initial_data'):
            validate_unknown_fields(self.initial_data, self.fields)

        repository = data.pop('repository',
                              None)  # not an actual field on publication
        repository_version = data.get('repository_version')
        if not repository and not repository_version:
            raise serializers.ValidationError(
                _("Either the 'repository' or 'repository_version' need to be specified"
                  ))
        elif not repository and repository_version:
            return data
        elif repository and not repository_version:
            version = models.RepositoryVersion.latest(repository)
            if version:
                new_data = {'repository_version': version}
                new_data.update(data)
                return new_data
            else:
                raise serializers.ValidationError(detail=_(
                    'Repository has no version available to create Publication from'
                ))
        raise serializers.ValidationError(
            _("Either the 'repository' or 'repository_version' need to be specified "
              "but not both."))
Example #2
0
 def test_validate_no_unknown_fields(self):
     """
     Test where the `initial_data` is equal to `defined_fields`.
     """
     initial_data = {'field1': 1, 'field2': 2}
     defined_fields = {'field1': 1, 'field2': 2}
     try:
         validate_unknown_fields(initial_data, defined_fields)
     except serializers.ValidationError:
         self.fail("validate_unknown_fields() failed improperly.")
Example #3
0
 def test_validate_no_unknown_fields(self):
     """
     Test where the `initial_data` is equal to `defined_fields`.
     """
     initial_data = {'field1': 1, 'field2': 2}
     defined_fields = {'field1': 1, 'field2': 2}
     try:
         validate_unknown_fields(initial_data, defined_fields)
     except serializers.ValidationError:
         self.fail("validate_unknown_fields() failed improperly.")
Example #4
0
 def test_ignored_fields_no_side_effects(self):
     """
     Test ignored fields in initial data don't cause side effects
     """
     # there's just the `csrfmiddlewaretoken` in the ignored_fields
     initial_data = {'field1': 1, 'csrfmiddlewaretoken': 2}
     defined_fields = {'field1': 1}
     try:
         validate_unknown_fields(initial_data, defined_fields)
     except serializers.ValidationError:
         self.fail("validate_unknown_fields() failed improperly.")
Example #5
0
 def test_ignored_fields_no_side_effects(self):
     """
     Test ignored fields in initial data don't cause side effects
     """
     # there's just the `csrfmiddlewaretoken` in the ignored_fields
     initial_data = {"field1": 1, "csrfmiddlewaretoken": 2}
     defined_fields = {"field1": 1}
     try:
         validate_unknown_fields(initial_data, defined_fields)
     except serializers.ValidationError:
         self.fail("validate_unknown_fields() failed improperly.")
Example #6
0
    def test_validate_no_unknown_fields_no_side_effects(self):
        """
        Test validation success where the `initial_data` is equal to `defined_fields`
        and that `initial_data` and `defined_fields` are not mutated.
        """
        initial_data = {'field1': 1, 'field2': 2}
        defined_fields = {'field1': 1, 'field2': 2}
        try:
            validate_unknown_fields(initial_data, defined_fields)
        except serializers.ValidationError:
            self.fail("validate_unknown_fields() failed improperly.")

        self.assertEqual(initial_data, {'field1': 1, 'field2': 2})
        self.assertEqual(defined_fields, {'field1': 1, 'field2': 2})
Example #7
0
    def test_validate_no_unknown_fields_no_side_effects(self):
        """
        Test validation success where the `initial_data` is equal to `defined_fields`
        and that `initial_data` and `defined_fields` are not mutated.
        """
        initial_data = {'field1': 1, 'field2': 2}
        defined_fields = {'field1': 1, 'field2': 2}
        try:
            validate_unknown_fields(initial_data, defined_fields)
        except serializers.ValidationError:
            self.fail("validate_unknown_fields() failed improperly.")

        self.assertEqual(initial_data, {'field1': 1, 'field2': 2})
        self.assertEqual(defined_fields, {'field1': 1, 'field2': 2})
Example #8
0
    def validate(self, data):
        if hasattr(self, 'initial_data'):
            validate_unknown_fields(self.initial_data, self.fields)

        repository = data.pop('repository', None)
        repository_version = data.get('repository_version')
        if not repository and not repository_version:
            raise serializers.ValidationError(
                _("Either the 'repository' or 'repository_version' need to be specified"))
        elif not repository and repository_version:
            return data
        elif repository and not repository_version:
            version = models.RepositoryVersion.latest(repository)
            if version:
                new_data = {'repository_version': version}
                new_data.update(data)
                return new_data
            else:
                raise serializers.ValidationError(
                    detail=_('Repository has no version available to publish'))
        raise serializers.ValidationError(
            _("Either the 'repository' or 'repository_version' need to be specified "
              "but not both.")
        )