blob: d5b19dcd5ab1cda563e8249a1c6410281a0de27d [file] [log] [blame]
mbligh37eceaa2008-12-15 22:56:37 +00001#!/usr/bin/python
2#
3# Copyright Gregory P. Smith, Google Inc 2008
4# Released under the GPL v2
5
6"""Tests for server.frontend."""
7
8from cStringIO import StringIO
9import os, sys, unittest
10import common
11from autotest_lib.client.common_lib import global_config
12from autotest_lib.client.common_lib import utils
13from autotest_lib.client.common_lib.test_utils import mock
14from autotest_lib.frontend.afe import rpc_client_lib
15from autotest_lib.server import frontend
16
17GLOBAL_CONFIG = global_config.global_config
18
19
20class BaseRpcClientTest(unittest.TestCase):
21 def setUp(self):
22 self.god = mock.mock_god()
23 self.god.mock_up(rpc_client_lib, 'rpc_client_lib')
24 self.god.stub_function(utils, 'send_email')
mblighed1b0212009-11-21 01:46:39 +000025 self._saved_environ = dict(os.environ)
26 if 'AUTOTEST_WEB' in os.environ:
27 del os.environ['AUTOTEST_WEB']
mbligh37eceaa2008-12-15 22:56:37 +000028
29
30 def tearDown(self):
31 self.god.unstub_all()
mblighed1b0212009-11-21 01:46:39 +000032 os.environ.clear()
33 os.environ.update(self._saved_environ)
mbligh37eceaa2008-12-15 22:56:37 +000034
35
36class RpcClientTest(BaseRpcClientTest):
37 def test_init(self):
38 os.environ['LOGNAME'] = 'unittest-user'
39 GLOBAL_CONFIG.override_config_value('SERVER', 'hostname', 'test-host')
40 rpc_client_lib.get_proxy.expect_call(
41 'http://test-host/path',
42 headers={'AUTHORIZATION': 'unittest-user'})
mblighce3f5382009-06-15 21:23:21 +000043 frontend.RpcClient('/path', None, None, None, None, None)
mbligh37eceaa2008-12-15 22:56:37 +000044 self.god.check_playback()
45
46
47class AFETest(BaseRpcClientTest):
48 def test_result_notify(self):
49 class fake_job(object):
50 result = True
51 name = 'nameFoo'
52 id = 'idFoo'
53 results_platform_map = {'NORAD' : {'Seeking_Joshua': ['WOPR']}}
54 GLOBAL_CONFIG.override_config_value('SERVER', 'hostname', 'chess')
55 rpc_client_lib.get_proxy.expect_call(
Scott Zawalski347aaf42012-04-03 16:33:00 -040056 'http://chess/afe/server/noauth/rpc/',
mbligh37eceaa2008-12-15 22:56:37 +000057 headers={'AUTHORIZATION': 'david'})
58 self.god.stub_function(utils, 'send_email')
59 utils.send_email.expect_any_call()
60
61 my_afe = frontend.AFE(user='david')
62
63 fake_stdout = StringIO()
64 self.god.stub_with(sys, 'stdout', fake_stdout)
65 my_afe.result_notify(fake_job, 'userA', 'userB')
66 self.god.unstub(sys, 'stdout')
67 fake_stdout = fake_stdout.getvalue()
68
69 self.god.check_playback()
70
71 self.assert_('PASSED' in fake_stdout)
72 self.assert_('WOPR' in fake_stdout)
73 self.assert_('http://chess/tko/compose_query.cgi?' in fake_stdout)
74 self.assert_('columns=test' in fake_stdout)
75 self.assert_('rows=machine_group' in fake_stdout)
76 self.assert_("condition=tag~'idFoo-%25'" in fake_stdout)
77 self.assert_('title=Report' in fake_stdout)
78 self.assert_('Sending email' in fake_stdout)
79
80
81
82if __name__ == '__main__':
83 unittest.main()