1 #!/usr/bin/env python 2 3 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 4 # Use of this source code is governed by a BSD-style license that can be 5 # found in the LICENSE file. 6 7 import common 8 import network_identity_machine 9 10 import logging 11 import mox 12 import unittest 13 14 import at_transceiver 15 import global_state 16 import modem_configuration 17 import task_loop 18 19 class NetworkIdentityMachineUnittest(unittest.TestCase): 20 """ Test fixture for NetworkIdentityMachine class. """ 21 22 def setUp(self): 23 self._mox = mox.Mox() 24 self._modem_conf = modem_configuration.ModemConfiguration() 25 self._task_loop = self._mox.CreateMock(task_loop.TaskLoop) 26 self._transceiver = self._mox.CreateMock(at_transceiver.ATTransceiver) 27 28 self._machine = network_identity_machine.NetworkIdentityMachine( 29 global_state.GlobalState(), 30 self._transceiver, 31 self._modem_conf) 32 33 # Mock out the task_loop 34 self._machine._task_loop = self._task_loop 35 36 def test_read_sim_imsi(self): 37 """ Test the imsi encoding in read_sim_imsi. """ 38 39 self._machine._mcc = '123' 40 self._machine._mnc = '456' 41 self._machine._misn = '123456789' 42 expected_response = '081932541632547698' 43 44 self._task_loop.post_task_after_delay( 45 self._transceiver.process_wardmodem_response, 0, 46 'wm_response_sim_info_success', expected_response) 47 self._task_loop.post_task_after_delay( 48 self._transceiver.process_wardmodem_response, 0, 49 'wm_response_ok') 50 51 self._mox.ReplayAll() 52 self._machine.read_sim_imsi(9) 53 self._mox.VerifyAll() 54 55 def test_check_length_and_respond_successful(self): 56 """ Test _check_length_and_respond. """ 57 response1 = 'blahblah' 58 response2_clipped = 'moomoo' 59 response2 = response2_clipped + '2' 60 self._task_loop.post_task_after_delay( 61 self._transceiver.process_wardmodem_response, 0, 62 'wm_response_sim_info_success', response1) 63 self._task_loop.post_task_after_delay( 64 self._transceiver.process_wardmodem_response, 0, 65 'wm_response_ok') 66 self._task_loop.post_task_after_delay( 67 self._transceiver.process_wardmodem_response, 0, 68 'wm_response_sim_info_success', response2_clipped) 69 self._task_loop.post_task_after_delay( 70 self._transceiver.process_wardmodem_response, 0, 71 'wm_response_ok') 72 73 self._mox.ReplayAll() 74 self._machine._check_length_and_respond(response1, '4') 75 self._machine._check_length_and_respond(response2, '3') 76 self._mox.VerifyAll() 77 78 79 def test_check_length_and_respond_failure(self): 80 """ Test _check_length_and_respond. """ 81 response = 'BOOoooo..' 82 83 self._task_loop.post_task_after_delay( 84 self._transceiver.process_wardmodem_response, 0, 85 'wm_response_sim_info_error_too_long') 86 self._task_loop.post_task_after_delay( 87 self._transceiver.process_wardmodem_response, 0, 88 'wm_response_ok') 89 90 self._mox.ReplayAll() 91 self._machine._check_length_and_respond(response, '24') 92 self._mox.VerifyAll() 93 94 95 if __name__ == '__main__': 96 logging.basicConfig(level=logging.DEBUG) 97 unittest.main() 98