xref: /aosp_15_r20/external/autotest/frontend/afe/json_rpc/serviceHandler_unittest.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1#!/usr/bin/python3
2
3import json
4import unittest
5
6from autotest_lib.frontend import setup_django_environment
7
8import common
9
10from . import serviceHandler
11
12
13class RpcMethodHolder(object):
14    """Fake rpc service for testing."""
15
16    @staticmethod
17    def service_1(x, y):
18        """Returns x + y"""
19        return x + y
20
21    @staticmethod
22    def service_2(path):
23        """Returns the parts of the path."""
24        return path.split('/')[-1]
25
26
27json_request1 = """
28{
29    "method": "service_1",
30    "params": [7, 9],
31    "id": null
32}
33"""
34
35expected_response1 = '{"error": null, "result": 16, "id": null}'
36
37
38json_request2 = """
39{
40    "method": "service_2",
41    "params": ["http://www.some.url.com/path/to/package.rpm"],
42    "id": null
43}
44"""
45
46expected_response2 = '{"error": null, "result": "package.rpm", "id": null}'
47
48json_request3 = """
49{
50    "method": "service_3",
51    "params": ["I wonder if this works"],
52    "id": null
53}
54"""
55
56
57class TestServiceHandler(unittest.TestCase):
58    """Tests ServiceHandler using a fake service."""
59
60    def setUp(self):
61        holder = RpcMethodHolder()
62        self.serviceHandler = serviceHandler.ServiceHandler(holder)
63
64
65    def test_handleRequest1(self):
66        response = self.serviceHandler.handleRequest(json_request1)
67        self.assertEquals(json.loads(response), json.loads(expected_response1))
68
69
70    def test_handleRequest2(self):
71        response = self.serviceHandler.handleRequest(json_request2)
72        self.assertEquals(json.loads(response), json.loads(expected_response2))
73
74
75    def test_handleRequest3(self):
76        response = self.serviceHandler.handleRequest(json_request3)
77        response_obj = eval(response.replace('null', 'None'))
78        self.assertNotEquals(response_obj['error'], 'None')
79
80
81if __name__ == "__main__":
82    unittest.main()
83