Files
tryton/trytond/tests/test_protocols.py
T

96 lines
3.0 KiB
Python
Raw Normal View History

2014-12-02 12:54:01 +01:00
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
2014-06-07 23:54:44 +02:00
import unittest
import json
import datetime
from decimal import Decimal
2016-05-10 10:19:22 +02:00
from trytond.protocols.jsonrpc import JSONEncoder, JSONDecoder, JSONRequest
from trytond.protocols.xmlrpc import client, XMLRequest
2014-06-07 23:54:44 +02:00
class JSONTestCase(unittest.TestCase):
'Test JSON'
2016-05-10 10:19:22 +02:00
def test_json_request(self):
req = JSONRequest.from_values(
data=b'{"method": "method", "params": ["foo", "bar"]}',
content_type='text/json',
)
self.assertEqual(req.parsed_data,
{'method': 'method', 'params': ['foo', 'bar']})
self.assertEqual(req.rpc_method, 'method')
self.assertEqual(req.rpc_params, ['foo', 'bar'])
2016-05-10 10:19:22 +02:00
2014-06-07 23:54:44 +02:00
def dumps_loads(self, value):
self.assertEqual(json.loads(
json.dumps(value, cls=JSONEncoder),
object_hook=JSONDecoder()), value)
def test_datetime(self):
'Test datetime'
self.dumps_loads(datetime.datetime.now())
def test_date(self):
'Test date'
self.dumps_loads(datetime.date.today())
def test_time(self):
'Test time'
self.dumps_loads(datetime.datetime.now().time())
2015-03-16 19:28:34 +01:00
def test_bytes(self):
'Test bytes'
self.dumps_loads(bytes(b'foo'))
self.dumps_loads(bytearray(b'foo'))
2014-06-07 23:54:44 +02:00
def test_decimal(self):
'Test Decimal'
self.dumps_loads(Decimal('3.141592653589793'))
class XMLTestCase(unittest.TestCase):
'Test XML'
2016-05-10 10:19:22 +02:00
def test_xml_request(self):
req = XMLRequest.from_values(
data=b"<?xml version='1.0'?>\n<methodCall>\n<methodName>method</methodName>\n<params>\n<param>\n<value><string>foo</string></value>\n</param>\n<param>\n<value><string>bar</string></value>\n</param>\n</params>\n</methodCall>\n",
content_type='text/xml')
self.assertEqual(req.parsed_data, (('foo', 'bar'), 'method'))
self.assertEqual(req.rpc_method, 'method')
self.assertEqual(req.rpc_params, ('foo', 'bar'))
2016-05-10 10:19:22 +02:00
2014-06-07 23:54:44 +02:00
def dumps_loads(self, value):
2019-03-09 00:12:23 +01:00
s = client.dumps((value,), allow_none=True)
2016-02-07 16:46:16 +01:00
result, _ = client.loads(s)
2014-06-07 23:54:44 +02:00
result, = result
self.assertEqual(value, result)
def test_decimal(self):
'Test Decimal'
self.dumps_loads(Decimal('3.141592653589793'))
2015-03-16 19:28:34 +01:00
def test_bytes(self):
'Test bytes'
self.dumps_loads(bytes(b'foo'))
self.dumps_loads(bytearray(b'foo'))
2014-06-07 23:54:44 +02:00
def test_date(self):
'Test date'
self.dumps_loads(datetime.date.today())
def test_time(self):
'Test time'
self.dumps_loads(datetime.datetime.now().time())
2014-06-13 19:09:22 +02:00
def test_none(self):
'Test None'
self.dumps_loads(None)
2014-06-07 23:54:44 +02:00
def suite():
suite_ = unittest.TestSuite()
suite_.addTests(unittest.TestLoader().loadTestsFromTestCase(JSONTestCase))
suite_.addTests(unittest.TestLoader().loadTestsFromTestCase(XMLTestCase))
return suite_