|
95 | 95 | if tests.DJANGO_VERSION >= (1, 6):
|
96 | 96 | from django.db.backends import FieldInfo
|
97 | 97 | from django.db.backends.signals import connection_created
|
| 98 | +from django.utils.safestring import SafeBytes, SafeText |
98 | 99 |
|
99 | 100 | import mysql.connector
|
100 | 101 |
|
@@ -315,3 +316,25 @@ def test__DATETIME_to_python(self):
|
315 | 316 | self.assertEqual(None,
|
316 | 317 | django_converter._DATETIME_to_python(value, dsc=None))
|
317 | 318 | settings.USE_TZ = False
|
| 319 | + |
| 320 | + |
| 321 | +class BugOra20106629(tests.MySQLConnectorTests): |
| 322 | + """CONNECTOR/PYTHON DJANGO BACKEND DOESN'T SUPPORT SAFETEXT""" |
| 323 | + def setUp(self): |
| 324 | + dbconfig = tests.get_mysql_config() |
| 325 | + self.conn = mysql.connector.connect(**dbconfig) |
| 326 | + self.cnx = DatabaseWrapper(settings.DATABASES['default']) |
| 327 | + self.cur = self.cnx.cursor() |
| 328 | + self.tbl = "BugOra20106629" |
| 329 | + self.cur.execute("DROP TABLE IF EXISTS {0}".format(self.tbl), ()) |
| 330 | + self.cur.execute("CREATE TABLE {0}(col1 TEXT, col2 BLOB)".format(self.tbl), ()) |
| 331 | + |
| 332 | + def teardown(self): |
| 333 | + self.cur.execute("DROP TABLE IF EXISTS {0}".format(self.tbl), ()) |
| 334 | + |
| 335 | + def test_safe_string(self): |
| 336 | + safe_text = SafeText("dummy & safe data <html> ") |
| 337 | + safe_bytes = SafeBytes(b"\x00\x00\x4c\x6e\x67\x39") |
| 338 | + self.cur.execute("INSERT INTO {0} VALUES(%s, %s)".format(self.tbl), (safe_text, safe_bytes)) |
| 339 | + self.cur.execute("SELECT * FROM {0}".format(self.tbl), ()) |
| 340 | + self.assertEqual(self.cur.fetchall(), [(safe_text, safe_bytes)]) |
0 commit comments