예제 #1
0
def build_validator():
    return ValidationGroup(
        common=[
            RequiredFields('firstname'),
            Optional(
                'mobile_phone_number',
                RegexField.compile('mobile_phone_number',
                                   MOBILE_PHONE_NUMBER_REGEX)),
            Optional('caller_id',
                     RegexField.compile('caller_id', CALLER_ID_REGEX)),
            Optional('username',
                     RegexField.compile('username', USERNAME_PASSWORD_REGEX)),
            Optional('password',
                     RegexField.compile('password', USERNAME_PASSWORD_REGEX)),
            Optional(
                'call_permission_password',
                RegexField.compile('call_permission_password',
                                   CALL_PERMISSION_PASSWORD_REGEX)),
            Optional(
                'ring_seconds',
                NumberRange('ring_seconds', minimum=0, maximum=60, step=5)),
            Optional('simultaneous_calls',
                     NumberRange('simultaneous_calls', minimum=1, maximum=20)),
            Optional('language', RegexField.compile('language',
                                                    LANGUAGE_REGEX)),
            Optional(
                'entity_id',
                ResourceExists('entity_id', entity_db.entity_id_exists,
                               'Entity'))
        ],
        delete=[
            NoVoicemailAssociated(user_voicemail_dao),
            NoLineAssociated(user_line_dao)
        ],
        create=[
            Optional(
                'email',
                UniqueField('email',
                            lambda email: user_dao.find_by(email=email),
                            'User'))
        ],
        edit=[
            RequiredFields('call_transfer_enabled', 'call_record_enabled',
                           'online_call_record_enabled', 'supervision_enabled',
                           'ring_seconds', 'simultaneous_calls', 'caller_id',
                           'enabled'),
            Optional('email', UniqueFieldChanged('email', user_dao, 'User')),
        ])
예제 #2
0
class TestRequiredFields(unittest.TestCase):

    def setUp(self):
        self.validator = RequiredFields()

    def test_given_missing_fields_when_validating_then_raises_error(self):
        model = Mock(NewModel)
        model.missing_parameters.return_value = ['foobar']

        assert_that(calling(self.validator.validate).with_args(model),
                    raises(InputError))

    def test_given_no_missing_fields_when_validating_then_passes(self):
        model = Mock(NewModel)
        model.missing_parameters.return_value = []

        self.validator.validate(model)
예제 #3
0
class TestRequiredFields(unittest.TestCase):

    def setUp(self):
        self.validator = RequiredFields('field1', 'field2')
        self.model = Mock()

    def test_given_required_fields_are_none_when_validating_then_raises_error(self):
        self.model.field1 = None
        self.model.field2 = None

        self.assertRaises(InputError, self.validator.validate, self.model)

    def test_given_required_fields_have_a_value_when_validating_then_validation_passes(self):
        self.model.field1 = 'value1'
        self.model.field2 = 'value2'

        self.validator.validate(self.model)
예제 #4
0
def build_validator():
    return ValidationGroup(
        common=[
            RequiredFields('interface'),
            RegexField.compile('interface', INTERFACE_REGEX),
        ],
        create=[UniqueField('interface', find_by_interface, 'CustomEndpoint')],
        edit=[UniqueFieldChanged('interface', dao, 'CustomEndpoint')])
예제 #5
0
def build_validator(device_dao):
    return ValidationGroup(common=[
        RequiredFields('context'),
        FindResource('context', context_dao.find, 'Context'),
    ],
                           create=[
                               Optional('provisioning_code',
                                        ProvCodeAvailable(line_dao)),
                               Optional('position',
                                        NumberRange('position', minimum=1)),
                               Optional(
                                   'registrar',
                                   MemberOfSequence('registrar',
                                                    device_dao.registrars,
                                                    'Registrar')),
                           ],
                           edit=[
                               ProvCodeChanged(line_dao),
                               RequiredFields('provisioning_code', 'position'),
                               NumberRange('position', minimum=1),
                               MemberOfSequence('registrar',
                                                device_dao.registrars,
                                                'Registrar'),
                           ])
예제 #6
0
def build_validator():
    return ValidationGroup(common=[
        RequiredFields('exten', 'context'),
        GetResource('context', context_dao.get, 'Context'),
        ExtensionRangeValidator(context_dao),
    ],
                           create=[
                               ExtenAvailableOnCreateValidator(extension_dao),
                           ],
                           edit=[
                               ExtenAvailabelOnUpdateValidator(extension_dao),
                           ],
                           delete=[
                               ExtensionAssociationValidator(
                                   extension_dao, line_extension_dao)
                           ])
예제 #7
0
def build_validator():
    return ValidationGroup(
        common=[
            Optional(
                'name',
                RegexField.compile(
                    'name', NAME_REGEX,
                    "username must only use alphanumeric characters")),
            Optional('secret', RegexField.compile('secret', SECRET_REGEX))
        ],
        create=[
            Optional(
                'name',
                UniqueField('name', lambda v: dao.find_by(name=v),
                            'SIPEndpoint'),
                RegexField.compile('name', NAME_REGEX)),
            Optional('secret', RegexField.compile('secret', SECRET_REGEX)),
        ],
        edit=[
            RequiredFields('name', 'secret', 'type', 'host'),
            UsernameChanged('name', lambda v: dao.find_by(name=v), dao.get),
        ])
예제 #8
0
def build_validator():
    return ValidationGroup(
        common=[
            Optional('name', RegexField.compile('name', NAME_REGEX)),
            Optional('password', RegexField.compile('password',
                                                    PASSWORD_REGEX)),
            Optional('extensions',
                     RegexFieldList.compile('extensions', EXTENSION_REGEX)),
        ],
        create=[
            RequiredFields('name'),
            Optional(
                'name',
                UniqueField(
                    'name',
                    lambda name: call_permission_dao.find_by(name=name),
                    'CallPermission'))
        ],
        edit=[
            Optional(
                'name',
                UniqueFieldChanged('name', call_permission_dao,
                                   'CallPermission'))
        ])
예제 #9
0
 def setUp(self):
     self.validator = RequiredFields()
예제 #10
0
 def setUp(self):
     self.validator = RequiredFields('field1', 'field2')
     self.model = Mock()