83 lines
2.7 KiB
Python
Executable file
83 lines
2.7 KiB
Python
Executable file
#!/usr/bin/python
|
|
#
|
|
# Copyright Gregory P. Smith, Google Inc 2008
|
|
# Released under the GPL v2
|
|
|
|
"""Tests for server.frontend."""
|
|
|
|
from cStringIO import StringIO
|
|
import os, sys, unittest
|
|
import common
|
|
from autotest_lib.client.common_lib import global_config
|
|
from autotest_lib.client.common_lib import utils
|
|
from autotest_lib.client.common_lib.test_utils import mock
|
|
from autotest_lib.frontend.afe import rpc_client_lib
|
|
from autotest_lib.server import frontend
|
|
|
|
GLOBAL_CONFIG = global_config.global_config
|
|
|
|
|
|
class BaseRpcClientTest(unittest.TestCase):
|
|
def setUp(self):
|
|
self.god = mock.mock_god()
|
|
self.god.mock_up(rpc_client_lib, 'rpc_client_lib')
|
|
self.god.stub_function(utils, 'send_email')
|
|
self._saved_environ = dict(os.environ)
|
|
if 'AUTOTEST_WEB' in os.environ:
|
|
del os.environ['AUTOTEST_WEB']
|
|
|
|
|
|
def tearDown(self):
|
|
self.god.unstub_all()
|
|
os.environ.clear()
|
|
os.environ.update(self._saved_environ)
|
|
|
|
|
|
class RpcClientTest(BaseRpcClientTest):
|
|
def test_init(self):
|
|
os.environ['LOGNAME'] = 'unittest-user'
|
|
GLOBAL_CONFIG.override_config_value('SERVER', 'hostname', 'test-host')
|
|
rpc_client_lib.get_proxy.expect_call(
|
|
'http://test-host/path',
|
|
headers={'AUTHORIZATION': 'unittest-user'})
|
|
frontend.RpcClient('/path', None, None, None, None, None)
|
|
self.god.check_playback()
|
|
|
|
|
|
class AFETest(BaseRpcClientTest):
|
|
def test_result_notify(self):
|
|
class fake_job(object):
|
|
result = True
|
|
name = 'nameFoo'
|
|
id = 'idFoo'
|
|
results_platform_map = {'NORAD' : {'Seeking_Joshua': ['WOPR']}}
|
|
GLOBAL_CONFIG.override_config_value('SERVER', 'hostname', 'chess')
|
|
rpc_client_lib.get_proxy.expect_call(
|
|
'http://chess/afe/server/noauth/rpc/',
|
|
headers={'AUTHORIZATION': 'david'})
|
|
self.god.stub_function(utils, 'send_email')
|
|
utils.send_email.expect_any_call()
|
|
|
|
my_afe = frontend.AFE(user='david')
|
|
|
|
fake_stdout = StringIO()
|
|
self.god.stub_with(sys, 'stdout', fake_stdout)
|
|
my_afe.result_notify(fake_job, 'userA', 'userB')
|
|
self.god.unstub(sys, 'stdout')
|
|
fake_stdout = fake_stdout.getvalue()
|
|
|
|
self.god.check_playback()
|
|
|
|
self.assert_('PASSED' in fake_stdout)
|
|
self.assert_('WOPR' in fake_stdout)
|
|
self.assert_('http://chess/tko/compose_query.cgi?' in fake_stdout)
|
|
self.assert_('columns=test' in fake_stdout)
|
|
self.assert_('rows=machine_group' in fake_stdout)
|
|
self.assert_("condition=tag~'idFoo-%25'" in fake_stdout)
|
|
self.assert_('title=Report' in fake_stdout)
|
|
self.assert_('Sending email' in fake_stdout)
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|