Files
odoo_source/openerp/tests/test_db_cursor.py
T
Vo Minh Thu a3cef23827 [MERGE] Make sure we pass only lists, tuples or dicts to Cursor.execute().
This fixes a call in the login code where a single untupled string was passed.
Psycopg does not see the problem: it iterates over the string, and as long as
the string length matches the number of needed parameters, everything seems
fine. Yeah for dynamic typing and SQL queries.

bzr revid: vmt@openerp.com-20121016125408-q537r71k5cisyxs0
2012-10-16 14:54:08 +02:00

33 lines
954 B
Python

# -*- coding: utf-8 -*-
import unittest2
import openerp
from openerp.tools.misc import mute_logger
import common
DB = common.DB
ADMIN_USER_ID = common.ADMIN_USER_ID
def cursor():
return openerp.modules.registry.RegistryManager.get(DB).db.cursor()
class test_cr_execute(unittest2.TestCase):
""" Try cr.execute with wrong parameters """
@mute_logger('openerp.sql_db')
def test_execute_bad_params(self):
"""
Try to use iterable but non-list or int params in query parameters.
"""
cr = cursor()
with self.assertRaises(ValueError):
cr.execute("SELECT id FROM res_users WHERE login=%s", 'admin')
with self.assertRaises(ValueError):
cr.execute("SELECT id FROM res_users WHERE id=%s", 1)
with self.assertRaises(ValueError):
cr.execute("SELECT id FROM res_users WHERE id=%s", '1')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: