seitime-frappe/frappe/tests/test_search.py
Charles-Henri Decultot dab491e55f Doctype links in foreign language (#5745)
* Doctype search in foreign language

* List comprehension slightly faster

* Remove obsolete comment

* Remove trailing whitespace

* Test case for address and contact query

* Refactor search and add tests

* Travis test debug

* Remove debug print

* Search limit removal for untranslated docs and tests refactor

* Remove old comments

* Test modification for Travis

* remove unused import

* Correct Role doctype
2018-08-24 15:23:20 +05:30

52 lines
1.8 KiB
Python

# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
import unittest
import frappe
from frappe.desk.search import search_link
from frappe.desk.search import search_widget
class TestSearch(unittest.TestCase):
def test_search_field_sanitizer(self):
# pass
search_link('DocType', 'User', query=None, filters=None, page_length=20, searchfield='name')
result = frappe.response['results'][0]
self.assertTrue('User' in result['value'])
#raise exception on injection
self.assertRaises(frappe.DataError,
search_link, 'DocType', 'Customer', query=None, filters=None,
page_length=20, searchfield='1=1')
self.assertRaises(frappe.DataError,
search_link, 'DocType', 'Customer', query=None, filters=None,
page_length=20, searchfield='select * from tabSessions) --')
self.assertRaises(frappe.DataError,
search_link, 'DocType', 'Customer', query=None, filters=None,
page_length=20, searchfield='name or (select * from tabSessions)')
self.assertRaises(frappe.DataError,
search_link, 'DocType', 'Customer', query=None, filters=None,
page_length=20, searchfield='*')
self.assertRaises(frappe.DataError,
search_link, 'DocType', 'Customer', query=None, filters=None,
page_length=20, searchfield=';')
self.assertRaises(frappe.DataError,
search_link, 'DocType', 'Customer', query=None, filters=None,
page_length=20, searchfield=';')
#Search for the word "pay", part of the word "pays" (country) in french.
def test_link_search_in_foreign_language(self):
frappe.local.lang = 'fr'
search_widget(doctype="DocType", txt="pay", page_length=20)
output = frappe.response["values"]
result = [['found' for x in y if x=="Country"] for y in output]
self.assertTrue(['found'] in result)
def tearDown(self):
frappe.local.lang = 'en'