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