30 lines
887 B
Python
30 lines
887 B
Python
|
import pytest
|
||
|
|
||
|
from data.text import match_mysql, match_like
|
||
|
from data.database import Repository
|
||
|
from test.fixtures import *
|
||
|
|
||
|
@pytest.mark.parametrize('input', [
|
||
|
('hello world'),
|
||
|
('hello \' world'),
|
||
|
('hello " world'),
|
||
|
('hello ` world'),
|
||
|
])
|
||
|
def test_mysql_text_escaping(input):
|
||
|
query, values = Repository.select().where(match_mysql(Repository.description, input)).sql()
|
||
|
assert input not in query
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize('input, expected', [
|
||
|
('hello world', 'hello world'),
|
||
|
('hello \'world', 'hello world'),
|
||
|
('hello "world', 'hello world'),
|
||
|
('hello `world', 'hello world'),
|
||
|
('hello !world', 'hello !!world'),
|
||
|
('hello %world', 'hello !%world'),
|
||
|
])
|
||
|
def test_postgres_text_escaping(input, expected):
|
||
|
query, values = Repository.select().where(match_like(Repository.description, input)).sql()
|
||
|
assert input not in query
|
||
|
assert values[0] == '%' + expected + '%'
|