Beispiel #1
0
    def setUp(self):
        self.line_dao = Mock()
        self.extension_dao = Mock()
        self.line_extension_dao = Mock()
        self.device_dao = Mock(DeviceDao)
        self.service = LineDeviceUpdater(self.line_dao,
                                         self.extension_dao,
                                         self.line_extension_dao,
                                         self.device_dao)

        self.device = Device(id=sentinel.device_id)

        self.device_dao.get_registrar.return_value = sentinel.registrar
Beispiel #2
0
class TestLineDeviceUpdater(unittest.TestCase):

    def setUp(self):
        self.line_dao = Mock()
        self.extension_dao = Mock()
        self.line_extension_dao = Mock()
        self.device_dao = Mock(DeviceDao)
        self.service = LineDeviceUpdater(self.line_dao,
                                         self.extension_dao,
                                         self.line_extension_dao,
                                         self.device_dao)

        self.device = Device(id=sentinel.device_id)

        self.device_dao.get_registrar.return_value = sentinel.registrar

    def build_line(self, **kwargs):
        parameters = {'id': sentinel.line_id,
                      'device_id': sentinel.device_id,
                      'configregistrar': 'registrar'}
        parameters.update(kwargs)
        line = Line(**parameters)
        self.line_dao.find_all_by_device_id.return_value = [line]
        return line

    def build_extension(self, **kwargs):
        parameters = {'id': sentinel.extension_id}
        parameters.update(kwargs)
        extension = Extension(**parameters)
        self.extension_dao.get.return_value = extension
        return extension

    def build_line_extension(self, line, extension):
        line_extension = LineExtension(line_id=line.id,
                                       extension_id=extension.id)

        self.line_extension_dao.find_by_line_id.return_value = line_extension
        return line_extension

    def test_given_no_lines_then_lines_on_device_are_emptied(self):
        self.line_dao.find_all_by_device_id.return_value = []

        self.service.update(self.device)

        self.device_dao.update_lines.assert_called_once_with(self.device, [])

    def test_given_no_lines_then_resets_device_to_autoprov(self):
        self.line_dao.find_all_by_device_id.return_value = []

        self.service.update(self.device)

        self.device_dao.reset_autoprov.assert_called_once_with(self.device)

    def test_given_unknown_line_protocol_then_does_not_update_lines(self):
        self.build_line(protocol='foobar')

        self.service.update(self.device)

        self.device_dao.update_lines.assert_called_once_with(self.device, [])

    def test_given_sccp_line_then_updates_lines_using_sccp_converter(self):
        line = self.build_line(protocol='sccp')
        expected_converter = LineSCCPConverter(sentinel.registrar)

        self.service.update(self.device)

        self.device_dao.update_lines.assert_called_once_with(self.device, [expected_converter])

        self.device_dao.get_registrar.assert_called_once_with(line.configregistrar)
        self.line_dao.find_all_by_device_id.assert_called_once_with(line.device_id)

    def test_given_sip_line_without_extension_then_does_not_update_lines(self):
        self.build_line(protocol='sip')
        self.line_extension_dao.find_by_line_id.return_value = None

        self.service.update(self.device)

        self.device_dao.update_lines.assert_called_once_with(self.device, [])

    def test_given_sip_line_with_extension_then_updates_lines_using_sip_converter(self):
        line = self.build_line(protocol='sip')
        extension = self.build_extension()
        self.build_line_extension(line, extension)

        expected_converter = LineSIPConverter(sentinel.registrar, line, extension)

        self.service.update(self.device)

        self.device_dao.update_lines.assert_called_once_with(self.device, [expected_converter])

        self.device_dao.get_registrar.assert_called_once_with(line.configregistrar)
        self.line_dao.find_all_by_device_id.assert_called_once_with(line.device_id)
        self.line_extension_dao.find_by_line_id.assert_called_once_with(line.id)
        self.extension_dao.get.assert_called_once_with(extension.id)