Ensure meta.strict does not bypass constructor check
This commit is contained in:
parent
2bfb195ad6
commit
ddbcc8e84b
@ -70,9 +70,9 @@ class BaseDocument(object):
|
|||||||
|
|
||||||
signals.pre_init.send(self.__class__, document=self, values=values)
|
signals.pre_init.send(self.__class__, document=self, values=values)
|
||||||
|
|
||||||
# Check if there are undefined fields supplied, if so raise an
|
# Check if there are undefined fields supplied to the constructor,
|
||||||
# Exception.
|
# if so raise an Exception.
|
||||||
if not self._dynamic and self._meta.get('strict', True):
|
if not self._dynamic and (self._meta.get('strict', True) or _created):
|
||||||
for var in values.keys():
|
for var in values.keys():
|
||||||
if var not in self._fields.keys() + ['id', 'pk', '_cls', '_text_score']:
|
if var not in self._fields.keys() + ['id', 'pk', '_cls', '_text_score']:
|
||||||
msg = (
|
msg = (
|
||||||
|
@ -3171,6 +3171,21 @@ class FieldTest(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertRaises(FieldDoesNotExist, test)
|
self.assertRaises(FieldDoesNotExist, test)
|
||||||
|
|
||||||
|
def test_undefined_field_exception_with_strict(self):
|
||||||
|
"""Tests if a `FieldDoesNotExist` exception is raised when trying to
|
||||||
|
instanciate a document with a field that's not defined,
|
||||||
|
even when strict is set to False.
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Doc(Document):
|
||||||
|
foo = StringField(db_field='f')
|
||||||
|
meta = {'strict': False}
|
||||||
|
|
||||||
|
def test():
|
||||||
|
Doc(bar='test')
|
||||||
|
|
||||||
|
self.assertRaises(FieldDoesNotExist, test)
|
||||||
|
|
||||||
|
|
||||||
class EmbeddedDocumentListFieldTestCase(unittest.TestCase):
|
class EmbeddedDocumentListFieldTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user