示例#1
0
    def test_when_exten_changes_but_is_available(self, dao_get,
                                                 validate_extension_available):
        dao_get.return_value = Extension(exten='1000', context='default')

        extension = Extension(id=1, exten='1001', context='default')

        validator.validate_extension_available_for_edit(extension)

        dao_get.assert_called_once_with(extension.id)
        validate_extension_available.assert_called_once_with(extension)
示例#2
0
    def test_when_exten_does_not_change(self, dao_get,
                                        validate_extension_available):
        dao_get.return_value = Extension(exten='1000')

        extension = Extension(id=1, exten='1000')

        validator.validate_extension_available_for_edit(extension)

        dao_get.assert_called_once_with(extension.id)
        self.assertNotCalled(validate_extension_available)
示例#3
0
    def test_create_same_exten_and_context(self):
        exten = 'extension'
        context = 'toto'

        extension = Extension(exten=exten, context=context)

        extension_dao.create(extension)

        extension = Extension(exten=exten, context=context)

        self.assertRaises(ElementCreationError, extension_dao.create,
                          extension)
示例#4
0
    def test_list_extensions_with_two_extensions(self, mock_extension_services_search):
        extension1 = Extension(id=1, exten='1324', context='default')
        extension2 = Extension(id=2, exten='1325', context='default')

        expected_response = {'total': 2,
                             'items': [self.build_item(extension1),
                                       self.build_item(extension2)]}

        mock_extension_services_search.return_value = SearchResult(2, [extension1, extension2])

        response = self.app.get(BASE_URL)

        mock_extension_services_search.assert_any_call()
        self.assert_response_for_list(response, expected_response)
示例#5
0
    def test_commented_is_not_a_boolean(self):
        extension = Extension(exten='1000', context='default', commented='lol')

        self.assertRaisesRegexp(
            InvalidParametersError,
            'Invalid parameters: Commented must be a bool',
            validator.validate_invalid_parameters, extension)
示例#6
0
    def test_on_empty_extension_number(self):
        extension = Extension(context='toto')

        self.assertRaisesRegexp(InvalidParametersError,
                                'Invalid parameters: Exten required',
                                validator.validate_invalid_parameters,
                                extension)
def _create_extensions(channel, extensions):
    from xivo_dao.data_handler.extension import services as extension_services
    from xivo_dao.data_handler.extension.model import Extension

    for extinfo in extensions:
        extension = Extension(**extinfo)
        extension_services.create(extension)
示例#8
0
    def test_on_empty_context(self):
        extension = Extension(exten='1000')

        self.assertRaisesRegexp(InvalidParametersError,
                                'Invalid parameters: Context required',
                                validator.validate_invalid_parameters,
                                extension)
示例#9
0
    def test_is_extension_valid_for_context_range_when_extension_is_alphanumeric(self, context_ranges):
        extension = Extension(exten='ABC123',
                              context='default')

        self.assertRaises(InvalidParametersError,
                          context_services.is_extension_valid_for_context_range,
                          extension,
                          ContextRangeType.users)
示例#10
0
    def test_validate_context_exists_when_context_exists(self, find_by_name):
        find_by_name.return_value = Mock()

        extension = Extension(exten='1000', context='default')

        validator.validate_context_exists(extension)

        find_by_name.assert_called_once_with(extension.context)
示例#11
0
    def test_build_line_for_device_with_a_sip_line_with_proxy_backup(
            self, config_manager, find_by_line_id, extension_dao_get):
        username = '******'
        secret = 'password'
        exten = '1250'
        context = 'default'
        display_name = 'Francis Dagobert'
        callerid = '"%s" <%s>' % (display_name, exten)
        proxy_ip = '10.39.5.1'
        registrar_ip = proxy_ip
        proxy_backup = '10.39.5.2'
        configregistrar = 'default'

        line = LineSIP(id=1,
                       device_slot=1,
                       context=context,
                       username=username,
                       name=username,
                       secret=secret,
                       callerid=callerid,
                       configregistrar=configregistrar)
        device = Device(id=self.device_id)

        provd_base_config = {"raw_config": {}}

        config_registrar_dict = self._give_me_a_provd_configregistrar(
            proxy_ip, proxy_backup)
        config_manager().get.side_effect = (provd_base_config,
                                            config_registrar_dict)
        find_by_line_id.return_value = LineExtension(line_id=line.id,
                                                     extension_id=3)
        extension_dao_get.return_value = Extension(exten=exten,
                                                   context=context)

        expected_arg = {
            "raw_config": {
                "sip_lines": {
                    "1": {
                        'username': username,
                        'auth_username': username,
                        'display_name': display_name,
                        'number': exten,
                        'password': secret,
                        'proxy_ip': proxy_ip,
                        'registrar_ip': registrar_ip,
                        'backup_registrar_ip': proxy_backup,
                        'backup_proxy_ip': proxy_backup
                    }
                }
            }
        }

        device_services.build_line_for_device(device, line)

        config_manager().get.assert_any_call(self.device_id)
        config_manager().get.assert_any_call(configregistrar)
        config_manager().update.assert_called_with(expected_arg)
示例#12
0
    def test_validate_extension_in_range_when_extension_inside_of_range(
            self, is_extension_valid_for_context):
        is_extension_valid_for_context.return_value = True

        extension = Extension(exten='1000', context='default')

        validator.validate_extension_in_range(extension)

        is_extension_valid_for_context.assert_called_once_with(extension)
示例#13
0
    def test_find_by_exten_context(self, find_by_exten_context):
        expected = Extension(exten='1000', context='default')

        find_by_exten_context.return_value = expected

        result = extension_services.find_by_exten_context(expected.exten, expected.context)

        find_by_exten_context.assert_called_once_with(expected.exten, expected.context)
        assert_that(result, equal_to(expected))
示例#14
0
    def test_validate_context_exists_when_context_does_not_exist(
            self, find_by_name):
        find_by_name.return_value = None

        extension = Extension(exten='1000', context='default')

        self.assertRaises(NonexistentParametersError,
                          validator.validate_context_exists, extension)

        find_by_name.assert_called_once_with(extension.context)
示例#15
0
    def test_validate_extension_in_range_when_extension_outside_of_range(
            self, is_extension_valid_for_context):
        is_extension_valid_for_context.return_value = False

        extension = Extension(exten='9999', context='default')

        self.assertRaises(InvalidParametersError,
                          validator.validate_extension_in_range, extension)

        is_extension_valid_for_context.assert_called_once_with(extension)
示例#16
0
    def test_edit_extension_with_error_from_dao(self, Session):
        session = Mock()
        session.commit.side_effect = SQLAlchemyError()
        Session.return_value = session

        extension = Extension(exten='extension', context='context')

        self.assertRaises(ElementEditionError, extension_dao.edit, extension)
        session.begin.assert_called_once_with()
        session.rollback.assert_called_once_with()
示例#17
0
    def test_validate_extension_available_when_extension_does_not_exist(
            self, find_by_exten_context):
        find_by_exten_context.return_value = None

        extension = Extension(exten='1000', context='default')

        validator.validate_extension_available(extension)

        find_by_exten_context.assert_called_once_with(extension.exten,
                                                      extension.context)
示例#18
0
    def test_create_with_error_from_dao(self, validate_create, extension_dao_create, extension_notifier_created):
        exten = '1000'
        context = 'toto'

        extension = Extension(exten=exten,
                              context=context)

        error = Exception("message")
        extension_dao_create.side_effect = ElementCreationError(error, '')

        self.assertRaises(ElementCreationError, extension_services.create, extension)
示例#19
0
    def test_validate_extension_available_when_extension_exists(
            self, find_by_exten_context):
        find_by_exten_context.return_value = Mock(Extension)

        extension = Extension(exten='1000', context='default')

        self.assertRaises(ElementAlreadyExistsError,
                          validator.validate_extension_available, extension)

        find_by_exten_context.assert_called_once_with(extension.exten,
                                                      extension.context)
示例#20
0
    def test_delete(self, validate_delete, extension_dao_delete, extension_notifier_deleted):
        exten = 'extension'
        context = 'toto'
        extension = Extension(id=1,
                              exten=exten,
                              context=context)

        extension_services.delete(extension)

        validate_delete.assert_called_once_with(extension)
        extension_dao_delete.assert_called_once_with(extension)
        extension_notifier_deleted.assert_called_once_with(extension)
示例#21
0
    def test_edit(self, validate_edit, extension_dao_edit, extension_notifier_edited):
        exten = '1000'
        context = 'toto'

        extension = Extension(id=1,
                              exten=exten,
                              context=context)

        extension_dao_edit.return_value = extension

        extension_services.edit(extension)

        validate_edit.assert_called_once_with(extension)
        extension_dao_edit.assert_called_once_with(extension)
        extension_notifier_edited.assert_called_once_with(extension)
示例#22
0
    def test_create(self, validate_create, extension_dao_create, extension_notifier_created):
        exten = '1000'
        context = 'toto'

        extension = Extension(exten=exten,
                              context=context)

        extension_dao_create.return_value = extension

        result = extension_services.create(extension)

        assert_that(result, equal_to(extension))
        validate_create.assert_called_once_with(extension)
        extension_dao_create.assert_called_once_with(extension)
        extension_notifier_created.assert_called_once_with(extension)
示例#23
0
    def test_is_extension_valid_for_context_range(self,
                                                  is_extension_included_in_ranges,
                                                  find_all_specific_context_ranges):
        extension = Extension(exten='1000',
                              context='default')

        context_range = find_all_specific_context_ranges.return_value = Mock()
        is_extension_included_in_ranges.return_value = True

        result = context_services.is_extension_valid_for_context_range(extension, ContextRangeType.users)

        find_all_specific_context_ranges.assert_called_once_with(extension.context, ContextRangeType.users)
        is_extension_included_in_ranges.assert_called_once_with('1000', context_range)

        assert_that(result, equal_to(True))
示例#24
0
    def test_create(self):
        exten = 'extension'
        context = 'toto'
        commented = True

        extension = Extension(exten=exten,
                              context=context,
                              commented=commented)

        created_extension = extension_dao.create(extension)

        row = self.session.query(ExtensionSchema).filter(
            ExtensionSchema.id == created_extension.id).first()

        assert_that(row.id, equal_to(created_extension.id))
        assert_that(row.exten, equal_to(exten))
        assert_that(row.context, equal_to(context))
        assert_that(row.commented, equal_to(1))
        assert_that(row.type, equal_to('user'))
        assert_that(row.typeval, equal_to('0'))
示例#25
0
    def test_edit(self):
        exten = 'extension'
        context = 'toto'
        commented = True

        extension = Extension(id=self.existing_extension.id,
                              exten=exten,
                              context=context,
                              commented=commented)

        extension_dao.edit(extension)

        row = self.session.query(ExtensionSchema).get(extension.id)

        assert_that(row.id, equal_to(extension.id))
        assert_that(row.exten, equal_to(exten))
        assert_that(row.context, equal_to(context))
        assert_that(row.commented, equal_to(1))
        assert_that(row.type, equal_to('user'))
        assert_that(row.typeval, equal_to('0'))
示例#26
0
    def test_missing_parameters_when_extension_has_no_parameters(self):
        extension = Extension()

        self.assertRaises(MissingParametersError,
                          validator.validate_missing_parameters, extension)
示例#27
0
 def setUp(self):
     super(TestResources, self).setUp()
     self.extension = Extension(id=1, exten='1234', context='default')
示例#28
0
    def test_missing_parameters_when_extension_has_minimal_parameters(self):
        extension = Extension(exten='1000', context='default')

        validator.validate_missing_parameters(extension)
示例#29
0
 def prepare_extension(self, **kwargs):
     extension_row = self.add_extension(**kwargs)
     return Extension(id=extension_row.id,
                      exten=extension_row.exten,
                      context=extension_row.context,
                      commented=bool(extension_row.commented))