summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api/tests/test_new_fields.py
diff options
context:
space:
mode:
authorRaphael Collet <rco@odoo.com>2019-09-18 15:16:21 +0000
committerfw-bot <otis@odoo.com>2019-10-22 14:55:33 +0000
commit93ecdce5978757e0afadfcd6862491e0257047b8 (patch)
tree96123fd9d61fe445fac46a8764545c0b9859d5f0 /odoo/addons/test_new_api/tests/test_new_fields.py
parent8292b0473517b408cca14719933c3b2ff5822a54 (diff)
[FIX] models: using unknown fields makes CRUD methods crash
The basic ORM methods should not silently discard unknown fields, as they may be a sign of broken code. X-original-commit: 9595dd06a1d349b2fb84969374d57c32a5faab74
Diffstat (limited to 'odoo/addons/test_new_api/tests/test_new_fields.py')
-rw-r--r--odoo/addons/test_new_api/tests/test_new_fields.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/odoo/addons/test_new_api/tests/test_new_fields.py b/odoo/addons/test_new_api/tests/test_new_fields.py
index da078a00137..a7784cd97d1 100644
--- a/odoo/addons/test_new_api/tests/test_new_fields.py
+++ b/odoo/addons/test_new_api/tests/test_new_fields.py
@@ -61,6 +61,40 @@ class TestFields(common.TransactionCase):
record.priority = 4
self.assertEqual(record.priority, 5)
+ def test_05_unknown_fields(self):
+ """ test ORM operations with unknown fields """
+ cat = self.env['test_new_api.category'].create({'name': 'Foo'})
+
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.search([('zzz', '=', 42)])
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.search([], order='zzz')
+
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.read(['zzz'])
+
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.read_group([('zzz', '=', 42)], fields=['color'], groupby=['parent'])
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.read_group([], fields=['zzz'], groupby=['parent'])
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.read_group([], fields=['zzz:sum'], groupby=['parent'])
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.read_group([], fields=['color'], groupby=['zzz'])
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.read_group([], fields=['color'], groupby=['parent'], orderby='zzz')
+ # exception: accept '__count' as field to aggregate
+ cat.read_group([], fields=['__count'], groupby=['parent'])
+
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.create({'name': 'Foo', 'zzz': 42})
+
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.write({'zzz': 42})
+
+ with self.assertRaisesRegex(ValueError, 'Invalid field'):
+ cat.new({'name': 'Foo', 'zzz': 42})
+
def test_10_computed(self):
""" check definition of computed fields """
# by default function fields are not stored and readonly