|
84 | 84 | if tests.DJANGO_VERSION >= (1, 6):
|
85 | 85 | from django.db.backends import FieldInfo
|
86 | 86 | from django.db.backends.signals import connection_created
|
| 87 | +from django.utils.safestring import SafeBytes, SafeText |
87 | 88 |
|
88 | 89 | import mysql.connector
|
89 | 90 | from mysql.connector.django.base import (DatabaseWrapper, DatabaseOperations,
|
@@ -298,3 +299,25 @@ def test__DATETIME_to_python(self):
|
298 | 299 | self.assertEqual(None,
|
299 | 300 | django_converter._DATETIME_to_python(value, dsc=None))
|
300 | 301 | settings.USE_TZ = False
|
| 302 | + |
| 303 | + |
| 304 | +class BugOra20106629(tests.MySQLConnectorTests): |
| 305 | + """CONNECTOR/PYTHON DJANGO BACKEND DOESN'T SUPPORT SAFETEXT""" |
| 306 | + def setUp(self): |
| 307 | + dbconfig = tests.get_mysql_config() |
| 308 | + self.conn = mysql.connector.connect(**dbconfig) |
| 309 | + self.cnx = DatabaseWrapper(settings.DATABASES['default']) |
| 310 | + self.cur = self.cnx.cursor() |
| 311 | + self.tbl = "BugOra20106629" |
| 312 | + self.cur.execute("DROP TABLE IF EXISTS {0}".format(self.tbl), ()) |
| 313 | + self.cur.execute("CREATE TABLE {0}(col1 TEXT, col2 BLOB)".format(self.tbl), ()) |
| 314 | + |
| 315 | + def teardown(self): |
| 316 | + self.cur.execute("DROP TABLE IF EXISTS {0}".format(self.tbl), ()) |
| 317 | + |
| 318 | + def test_safe_string(self): |
| 319 | + safe_text = SafeText("dummy & safe data <html> ") |
| 320 | + safe_bytes = SafeBytes(b"\x00\x00\x4c\x6e\x67\x39") |
| 321 | + self.cur.execute("INSERT INTO {0} VALUES(%s, %s)".format(self.tbl), (safe_text, safe_bytes)) |
| 322 | + self.cur.execute("SELECT * FROM {0}".format(self.tbl), ()) |
| 323 | + self.assertEqual(self.cur.fetchall(), [(safe_text, safe_bytes)]) |
0 commit comments