object_id = '/' is invalid
This commit is contained in:
		
					parent
					
						
							
								260303dd14
							
						
					
				
			
			
				commit
				
					
						ca1cc0f64a
					
				
			
		
					 2 changed files with 14 additions and 5 deletions
				
			
		| 
						 | 
					@ -21,9 +21,7 @@
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import fnmatch
 | 
					 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
import collections
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cdist
 | 
					import cdist
 | 
				
			||||||
import cdist.core
 | 
					import cdist.core
 | 
				
			||||||
| 
						 | 
					@ -142,9 +140,13 @@ class CdistObject(object):
 | 
				
			||||||
            if '//' in self.object_id:
 | 
					            if '//' in self.object_id:
 | 
				
			||||||
                raise IllegalObjectIdError(
 | 
					                raise IllegalObjectIdError(
 | 
				
			||||||
                        self.object_id, 'object_id may not contain //')
 | 
					                        self.object_id, 'object_id may not contain //')
 | 
				
			||||||
            if self.object_id == '.':
 | 
					
 | 
				
			||||||
                raise IllegalObjectIdError(
 | 
					            _invalid_object_ids = ('.', '/', )
 | 
				
			||||||
                        self.object_id, 'object_id may not be a .')
 | 
					            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 no object_id and type is not singleton => error out
 | 
				
			||||||
        if not self.object_id and not self.cdist_type.is_singleton:
 | 
					        if not self.object_id and not self.cdist_type.is_singleton:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -147,6 +147,13 @@ class ObjectIdTestCase(test.CdistTestCase):
 | 
				
			||||||
            core.CdistObject(cdist_type, self.object_base_path,
 | 
					            core.CdistObject(cdist_type, self.object_base_path,
 | 
				
			||||||
                             OBJECT_MARKER_NAME, illegal_object_id)
 | 
					                             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):
 | 
					    def test_object_id_on_singleton_type(self):
 | 
				
			||||||
        cdist_type = core.CdistType(type_base_path, '__test_singleton')
 | 
					        cdist_type = core.CdistType(type_base_path, '__test_singleton')
 | 
				
			||||||
        illegal_object_id = 'object_id'
 | 
					        illegal_object_id = 'object_id'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue