Initial import from Docker volume
This commit is contained in:
197
tests/test_routes.py
Executable file
197
tests/test_routes.py
Executable file
@@ -0,0 +1,197 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of this
|
||||
# repository contains the full copyright notices and license terms.
|
||||
|
||||
import base64
|
||||
import json
|
||||
import unittest
|
||||
|
||||
from trytond.pool import Pool
|
||||
from trytond.protocols.wrappers import Response
|
||||
from trytond.tests.test_tryton import DB_NAME, Client, activate_module, drop_db
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.wsgi import app
|
||||
|
||||
|
||||
class RoutesTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
drop_db()
|
||||
activate_module(['ir', 'res'], 'fr')
|
||||
pool = Pool(DB_NAME)
|
||||
with Transaction().start(DB_NAME, 0):
|
||||
User = pool.get('res.user')
|
||||
admin, = User.search([('login', '=', 'admin')])
|
||||
admin.password = 'password'
|
||||
admin.save()
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
super().tearDownClass()
|
||||
drop_db()
|
||||
|
||||
@property
|
||||
def auth_headers(self):
|
||||
return {
|
||||
'Authorization': (
|
||||
'Basic ' + base64.b64encode(b'admin:password').decode()),
|
||||
}
|
||||
|
||||
def data_url(self, model):
|
||||
return '/%(database)s/data/%(model)s' % {
|
||||
'database': DB_NAME,
|
||||
'model': model,
|
||||
}
|
||||
|
||||
def test_data_no_field(self):
|
||||
"Test GET data without field"
|
||||
c = Client(app, Response)
|
||||
|
||||
response = c.get(self.data_url('res.user'), headers=self.auth_headers)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.data, b'\r\n\r\n')
|
||||
|
||||
def test_data_one_field(self):
|
||||
"Test GET data with one field"
|
||||
c = Client(app, Response)
|
||||
|
||||
response = c.get(
|
||||
self.data_url('res.user'), headers=self.auth_headers,
|
||||
query_string=[('f', 'name')])
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.data, b'Nom\r\nAdministrator\r\n')
|
||||
|
||||
def test_data_multiple_fields(self):
|
||||
"Test GET data with multiple fields"
|
||||
c = Client(app, Response)
|
||||
|
||||
response = c.get(
|
||||
self.data_url('res.user'), headers=self.auth_headers,
|
||||
query_string=[('f', 'name'), ('f', 'login')])
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(
|
||||
response.data, b'Nom,Identifiant\r\nAdministrator,admin\r\n')
|
||||
|
||||
def test_data_language(self):
|
||||
"Test GET data with language"
|
||||
c = Client(app, Response)
|
||||
|
||||
response = c.get(
|
||||
self.data_url('ir.lang'), headers=self.auth_headers,
|
||||
query_string=[
|
||||
('f', 'name'),
|
||||
('l', 'fr'),
|
||||
('d', json.dumps([('code', '=', 'fr')])),
|
||||
])
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.data, 'Nom\r\nFrançais\r\n'.encode('utf-8'))
|
||||
|
||||
def test_data_size(self):
|
||||
"Test GET data with size limit"
|
||||
c = Client(app, Response)
|
||||
|
||||
response = c.get(
|
||||
self.data_url('ir.lang'), headers=self.auth_headers,
|
||||
query_string=[
|
||||
('f', 'name'),
|
||||
('s', 5),
|
||||
])
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(len(response.data.splitlines()), 5 + 1)
|
||||
|
||||
def test_data_page(self):
|
||||
"Test GET data with page"
|
||||
c = Client(app, Response)
|
||||
|
||||
response0 = c.get(
|
||||
self.data_url('ir.lang'), headers=self.auth_headers,
|
||||
query_string=[
|
||||
('f', 'name'),
|
||||
('s', 5),
|
||||
('p', 0)
|
||||
])
|
||||
response1 = c.get(
|
||||
self.data_url('ir.lang'), headers=self.auth_headers,
|
||||
query_string=[
|
||||
('f', 'name'),
|
||||
('s', 5),
|
||||
('p', 1)
|
||||
])
|
||||
|
||||
self.assertEqual(response0.status_code, 200)
|
||||
self.assertEqual(response1.status_code, 200)
|
||||
self.assertNotEqual(response0.data, response1.data)
|
||||
|
||||
def test_data_encoding(self):
|
||||
"Test GET data with encoding"
|
||||
c = Client(app, Response)
|
||||
|
||||
response = c.get(
|
||||
self.data_url('ir.lang'), headers=self.auth_headers,
|
||||
query_string=[
|
||||
('f', 'name'),
|
||||
('l', 'fr'),
|
||||
('d', json.dumps([('code', '=', 'fr')])),
|
||||
('enc', 'latin1'),
|
||||
])
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(
|
||||
response.data, 'Nom\r\nFrançais\r\n'.encode('latin1'))
|
||||
|
||||
def test_data_delimiter(self):
|
||||
"Test GET data with delimiter"
|
||||
c = Client(app, Response)
|
||||
|
||||
response = c.get(
|
||||
self.data_url('res.user'), headers=self.auth_headers,
|
||||
query_string=[('f', 'name'), ('f', 'login'), ('dl', '|')])
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(
|
||||
response.data, b'Nom|Identifiant\r\nAdministrator|admin\r\n')
|
||||
|
||||
def test_data_quotechar(self):
|
||||
"Test GET data with quotechar"
|
||||
c = Client(app, Response)
|
||||
|
||||
response = c.get(
|
||||
self.data_url('res.user'), headers=self.auth_headers,
|
||||
query_string=[
|
||||
('f', 'name'), ('f', 'login'), ('dl', 'n'), ('qc', '*')])
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(
|
||||
response.data,
|
||||
b'Nomn*Identifiant*\r\n*Administrator*n*admin*\r\n')
|
||||
|
||||
def test_data_no_header(self):
|
||||
"Test GET data without header"
|
||||
c = Client(app, Response)
|
||||
|
||||
response = c.get(
|
||||
self.data_url('res.user'), headers=self.auth_headers,
|
||||
query_string=[('f', 'name'), ('h', 0)])
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.data, b'Administrator\r\n')
|
||||
|
||||
def test_data_locale_format(self):
|
||||
"Test GET data in locale format"
|
||||
c = Client(app, Response)
|
||||
|
||||
response_std = c.get(
|
||||
self.data_url('res.user'), headers=self.auth_headers,
|
||||
query_string=[('f', 'create_date')])
|
||||
response_locale = c.get(
|
||||
self.data_url('res.user'), headers=self.auth_headers,
|
||||
query_string=[('f', 'create_date'), ('loc', 1)])
|
||||
|
||||
self.assertEqual(response_std.status_code, 200)
|
||||
self.assertEqual(response_locale.status_code, 200)
|
||||
self.assertNotEqual(response_std.data, response_locale.data)
|
||||
Reference in New Issue
Block a user