From ca1cc0f64ad18878a265ed7bec162a49ae63b267 Mon Sep 17 00:00:00 2001 From: Darko Poljak Date: Thu, 10 Aug 2017 19:08:44 +0200 Subject: [PATCH] object_id = '/' is invalid --- cdist/core/cdist_object.py | 12 +++++++----- cdist/test/cdist_object/__init__.py | 7 +++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/cdist/core/cdist_object.py b/cdist/core/cdist_object.py index 2d92aa41..8c7ce635 100644 --- a/cdist/core/cdist_object.py +++ b/cdist/core/cdist_object.py @@ -21,9 +21,7 @@ # # -import fnmatch import os -import collections import cdist import cdist.core @@ -142,9 +140,13 @@ class CdistObject(object): if '//' in self.object_id: raise IllegalObjectIdError( self.object_id, 'object_id may not contain //') - if self.object_id == '.': - raise IllegalObjectIdError( - self.object_id, 'object_id may not be a .') + + _invalid_object_ids = ('.', '/', ) + for ioid in _invalid_object_ids: + if self.object_id == ioid: + raise IllegalObjectIdError( + self.object_id, + 'object_id may not be a {}'.format(ioid)) # If no object_id and type is not singleton => error out if not self.object_id and not self.cdist_type.is_singleton: diff --git a/cdist/test/cdist_object/__init__.py b/cdist/test/cdist_object/__init__.py index d03c0642..a9c20cd3 100644 --- a/cdist/test/cdist_object/__init__.py +++ b/cdist/test/cdist_object/__init__.py @@ -147,6 +147,13 @@ class ObjectIdTestCase(test.CdistTestCase): core.CdistObject(cdist_type, self.object_base_path, OBJECT_MARKER_NAME, illegal_object_id) + def test_object_id_equals_slash(self): + cdist_type = core.CdistType(type_base_path, '__third') + illegal_object_id = '/' + with self.assertRaises(core.IllegalObjectIdError): + core.CdistObject(cdist_type, self.object_base_path, + OBJECT_MARKER_NAME, illegal_object_id) + def test_object_id_on_singleton_type(self): cdist_type = core.CdistType(type_base_path, '__test_singleton') illegal_object_id = 'object_id'