Launchpad automatic translations update.
[odoo/odoo.git] / tests / test_xmlrpc.py
1 # -*- coding: utf-8 -*-
2 # Run with one of these commands:
3 #    > OPENERP_ADDONS_PATH='../../addons/trunk' OPENERP_PORT=8069 \
4 #      OPENERP_DATABASE=yy PYTHONPATH=. python tests/test_xmlrpc.py
5 #    > OPENERP_ADDONS_PATH='../../addons/trunk' OPENERP_PORT=8069 \
6 #      OPENERP_DATABASE=yy nosetests tests/test_xmlrpc.py
7 #    > OPENERP_ADDONS_PATH='../../../addons/trunk' OPENERP_PORT=8069 \
8 #      OPENERP_DATABASE=yy PYTHONPATH=../:. unit2 test_xmlrpc
9 import os
10 import time
11 import unittest2
12 import xmlrpclib
13
14 import openerp
15
16 ADDONS_PATH = os.environ['OPENERP_ADDONS_PATH']
17 PORT = int(os.environ['OPENERP_PORT'])
18 DB = os.environ['OPENERP_DATABASE']
19
20 HOST = '127.0.0.1'
21
22 ADMIN_USER = 'admin'
23 ADMIN_USER_ID = 1
24 ADMIN_PASSWORD = 'admin'
25
26 common_proxy_60 = None
27 db_proxy_60 = None
28 object_proxy_60 = None
29
30 def setUpModule():
31     """
32     Start the OpenERP server similary to the openerp-server script and
33     setup some xmlrpclib proxies.
34     """
35     openerp.tools.config['addons_path'] = ADDONS_PATH
36     openerp.tools.config['xmlrpc_port'] = PORT
37     openerp.service.start_services()
38
39     global common_proxy_60
40     global db_proxy_60
41     global object_proxy_60
42
43     # Use the old (pre 6.1) API.
44     url = 'http://%s:%d/xmlrpc/' % (HOST, PORT)
45     common_proxy_60 = xmlrpclib.ServerProxy(url + 'common')
46     db_proxy_60 = xmlrpclib.ServerProxy(url + 'db')
47     object_proxy_60 = xmlrpclib.ServerProxy(url + 'object')
48
49 def tearDownModule():
50     """ Shutdown the OpenERP server similarly to a single ctrl-c. """
51     openerp.service.stop_services()
52
53 class test_xmlrpc(unittest2.TestCase):
54
55     def test_xmlrpc_create_database_polling(self):
56         """
57         Simulate a OpenERP client requesting the creation of a database and
58         polling the server until the creation is complete.
59         """
60         progress_id = db_proxy_60.create(ADMIN_PASSWORD, DB, True, False,
61             ADMIN_PASSWORD)
62         while True:
63             time.sleep(1)
64             progress, users = db_proxy_60.get_progress(ADMIN_PASSWORD,
65                 progress_id)
66             if progress == 1.0:
67                 break
68
69     def test_xmlrpc_login(self):
70         """ Try to login on the common service. """
71         uid = common_proxy_60.login(DB, ADMIN_USER, ADMIN_PASSWORD)
72         assert uid == ADMIN_USER_ID
73
74     def test_xmlrpc_ir_model_search(self):
75         """ Try a search on the object service. """
76         ids = object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD,
77             'ir.model', 'search', [])
78         assert ids
79         ids = object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD,
80             'ir.model', 'search', [], {})
81         assert ids
82
83 if __name__ == '__main__':
84     unittest2.main()
85