Exemplo n.º 1
0
class CheckEntry(Document):
    check_actor = StringField(required=True)
    check_action = StringField()
    status = StringField(required=True, enum=['PASS', 'FAIL'])
    summary = StringField(required=True)
    params = ArrayField(items=StringField(),
                        unique_items=True,
                        additional_items=False)
Exemplo n.º 2
0
    class Task(Document):
        class Options(object):
            title = 'Task'
            description = 'A task.'
            definition_id = 'task'

        name = StringField(required=True, min_length=5)
        type = StringField(required=True, enum=['TYPE_1', 'TYPE_2'])
        resources = ArrayField(DocumentField(Resource))
        created_at = DateTimeField(name='created-at', required=True)
        author = DocumentField(User)
Exemplo n.º 3
0
 class User(Document):
     login = StringField()
     friends = ArrayField(
         Var({
             'db_role': db_role_friends_field,
             'request_role': request_role_friends_field,
         }))
Exemplo n.º 4
0
    class Child(Base):
        class Options(object):
            definition_id = 'child'
            title = 'Child'

        b = StringField()
        c = DocumentField(RECURSIVE_REFERENCE_CONSTANT)
Exemplo n.º 5
0
    class Base(Document):
        class Options(object):
            inheritance_mode = ALL_OF
            definition_id = 'base'
            title = 'Base'

        a = StringField()
Exemplo n.º 6
0
 class Letters(Document):
     z = StringField()
     x = StringField()
     a = StringField()
     b = StringField()
     c = StringField()
     y = StringField()
     d = StringField()
     e = StringField()
Exemplo n.º 7
0
def test_array_field():
    f = ArrayField(items=())
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    assert list(e.value.steps) == [FieldStep(f), AttributeStep('items')]

    f = ArrayField(items=(
        Var({'role_x': StringField()}),
        Var({'role_x': IntField()}),
    ))
    role = 'role_y'
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema(role='role_y')
    assert list(e.value.steps) == [
        FieldStep(f, role=role),
        AttributeStep('items', role=role)
    ]

    f = ArrayField(items=(None, None))
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    assert list(
        e.value.steps) == [FieldStep(f),
                           AttributeStep('items'),
                           ItemStep(0)]

    f = ArrayField(items=object())
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    assert list(e.value.steps) == [FieldStep(f), AttributeStep('items')]

    f = ArrayField(additional_items=object())
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    assert list(
        e.value.steps) == [FieldStep(f),
                           AttributeStep('additional_items')]

    f = ArrayField(items=FieldStub())
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    e = e.value
    assert e.message == FieldStub.ERROR_MESSAGE
    assert list(e.steps) == [FieldStep(f), AttributeStep('items')]

    f = ArrayField(items=(FieldStub(), ))
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    e = e.value
    assert e.message == FieldStub.ERROR_MESSAGE
    assert list(e.steps) == [FieldStep(f), AttributeStep('items'), ItemStep(0)]

    f = ArrayField(additional_items=FieldStub())
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    e = e.value
    assert e.message == FieldStub.ERROR_MESSAGE
    assert list(e.steps) == [FieldStep(f), AttributeStep('additional_items')]
Exemplo n.º 8
0
def test_error():
    db_role_friends_field = ArrayField((StringField(), None))
    request_role_friends_field = ArrayField(StringField())

    class User(Document):
        login = StringField()
        friends = ArrayField(
            Var({
                'db_role': db_role_friends_field,
                'request_role': request_role_friends_field,
            }))

    class Users(Document):
        users = ArrayField(DocumentField(User))

    Users.get_schema()

    role = 'db_role'
    with pytest.raises(SchemaGenerationException) as e:
        Users.get_schema(role=role)
    e = e.value

    assert list(e.steps) == [
        DocumentStep(Users, role=role),
        FieldStep(Users._backend, role=role),
        AttributeStep('properties', role=role),
        ItemStep('users', role=role),
        FieldStep(Users.users, role=role),
        AttributeStep('items', role=role),
        FieldStep(Users.users.items, role=role),
        DocumentStep(User, role=role),
        FieldStep(User._backend, role=role),
        AttributeStep('properties', role=role),
        ItemStep('friends', role=role),
        FieldStep(User.friends, role=role),
        AttributeStep('items', role=role),
        FieldStep(db_role_friends_field, role=role),
        AttributeStep('items', role=role),
        ItemStep(1, role=role)
    ]
    assert e.message == 'None is not resolvable'
    assert ("Steps: Users -> DocumentBackend.properties['users'] -> "
            "ArrayField.items -> DocumentField -> User -> "
            "DocumentBackend.properties['friends'] -> ArrayField.items -> "
            "ArrayField.items[1]") in str(e)
class CommonJobDocument(Document):
    name = StringField(description="Name of the job.")
    n_iterations = NumberField(
        minimum=0,
        multiple=1,
        description="Configure the number of time the job should be repeated before executing the next job.",
    )
    reset_before_job_start = BooleanField(
        description="Configures the reset of LR1110 strategy for this job. If set to true, the LR1110 is reset before executing this job. If set to false, it is not reset before executing this job."
    )
Exemplo n.º 10
0
def test_exceptions():
    f_1 = StringField()
    f_2 = StringField()

    # test __eq__ and __ne__
    assert FieldStep(f_1) == FieldStep(f_1)
    assert FieldStep(f_1, role='role_1') != FieldStep(f_1)
    assert FieldStep(f_1) != FieldStep(f_2)
    assert FieldStep(f_1) != AttributeStep('fields')
    assert not (FieldStep(f_1) == AttributeStep('fields'))

    # test __repr__
    r = repr(FieldStep(f_1, role='role_1'))
    assert repr(f_1) in r
    assert 'role_1' in r

    message = 'Something went wrong'
    e = SchemaGenerationException(message)
    assert str(e) == message

    step = FieldStep(f_1)
    e.steps.appendleft(step)
    assert str(e) == '{0}\nSteps: {1}'.format(message, step)
Exemplo n.º 11
0
class StringList(Document):
    value = ArrayField(items=StringField(), additional_items=False)
Exemplo n.º 12
0
class TypeStringList(Document):
    value = ArrayField(items=StringField(),
                       unique_items=True,
                       additional_items=False)
Exemplo n.º 13
0
    class A(Document):
        class Options(object):
            id = 'http://example.com/schema/'

        id = StringField()
        b = DocumentField('B')
Exemplo n.º 14
0
def test_dict_field():
    f = DictField(properties={'a': object()})
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    e = e.value
    assert 'not resolvable' in e.message
    assert list(
        e.steps) == [FieldStep(f),
                     AttributeStep('properties'),
                     ItemStep('a')]

    f = DictField(pattern_properties={'a.*': object()})
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    e = e.value
    assert 'not resolvable' in e.message
    assert list(e.steps) == [
        FieldStep(f),
        AttributeStep('pattern_properties'),
        ItemStep('a.*')
    ]

    f = DictField(additional_properties=object())
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    e = e.value
    assert 'not a BaseField or a bool' in e.message
    assert list(
        e.steps) == [FieldStep(f),
                     AttributeStep('additional_properties')]

    f = DictField(properties={'a': FieldStub()})
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    e = e.value
    assert e.message == FieldStub.ERROR_MESSAGE
    assert list(
        e.steps) == [FieldStep(f),
                     AttributeStep('properties'),
                     ItemStep('a')]

    f = DictField(pattern_properties={'a.*': FieldStub()})
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    e = e.value
    assert e.message == FieldStub.ERROR_MESSAGE
    assert list(e.steps) == [
        FieldStep(f),
        AttributeStep('pattern_properties'),
        ItemStep('a.*')
    ]

    f = DictField(additional_properties=FieldStub())
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    e = e.value
    assert e.message == FieldStub.ERROR_MESSAGE
    assert list(
        e.steps) == [FieldStep(f),
                     AttributeStep('additional_properties')]

    for kwarg_value in (object(), Var({'role_x': object()})):
        for kwarg in ('properties', 'pattern_properties'):
            f = DictField(**{kwarg: kwarg_value})
            with pytest.raises(SchemaGenerationException) as e:
                f.get_schema(role='role_x')
            e = e.value
            assert 'not a dict' in e.message
            assert list(e.steps) == [
                FieldStep(f, role='role_x'),
                AttributeStep(kwarg, role='role_x')
            ]

        f = DictField(additional_properties=kwarg_value)
        with pytest.raises(SchemaGenerationException) as e:
            f.get_schema(role='role_x')
        e = e.value
        assert 'not a BaseField or a bool' in e.message
        assert list(e.steps) == [
            FieldStep(f, role='role_x'),
            AttributeStep('additional_properties', role='role_x')
        ]

    f = DictField(pattern_properties={'((((': StringField()})
    with pytest.raises(SchemaGenerationException) as e:
        f.get_schema()
    e = e.value
    assert 'unbalanced parenthesis' in e.message
    assert list(e.steps) == [FieldStep(f), AttributeStep('pattern_properties')]
Exemplo n.º 15
0
class Message(Document):
    value = StringField()
Exemplo n.º 16
0
 class C(Document):
     name = StringField()
     c = DocumentField('C')
Exemplo n.º 17
0
class Error(Document):
    context = StringField()
    value = StringField()
Exemplo n.º 18
0
    class D(Document):
        class Options(object):
            id = '#hash'

        id = StringField()
Exemplo n.º 19
0
class BaseTypeString(Document):
    value = StringField()
Exemplo n.º 20
0
class TypePortScan(Document):
    shallow_scan = BooleanField(required=False)
    port_range = StringField(required=False)
    force_nmap = BooleanField(required=False)
Exemplo n.º 21
0
    class Button(Base):
        class Options(object):
            definition_id = 'button'
            title = 'Button'

        on_click = StringField(required=True)
Exemplo n.º 22
0
    class Shape(Base):
        class Options(object):
            definition_id = 'shape'
            title = 'Shape'

        color = StringField(required=True)
Exemplo n.º 23
0
class OptionalContainerName(Document):
    value = StringField(
        pattern='^([a-zA-Z0-9][a-zA-Z0-9_.-]+|)$',
        required=False,
        description='Valid container name. Same pattern used by Docker.')
Exemplo n.º 24
0
 class A(Document):
     name = StringField()
     b = DocumentField('B', as_ref=True)
Exemplo n.º 25
0
class ContainerName(Document):
    value = StringField(
        pattern='^[a-zA-Z0-9][a-zA-Z0-9_.-]+$',
        required=True,
        description='Valid container name. Same pattern used by Docker.')
Exemplo n.º 26
0
 class X(Document):
     name = StringField()
Exemplo n.º 27
0
class PortData(Document):
    name = StringField(required=True)
    product = StringField()
Exemplo n.º 28
0
 class X(Document):
     with Scope('role_1') as s_1:
         s_1.name = StringField()
     with Scope('role_2') as s_2:
         s_2.name = StringField()
Exemplo n.º 29
0
class String(Document):
    value = StringField()
Exemplo n.º 30
0
class CommonJobDocument(Document):
    name = StringField()
    n_iterations = NumberField(minimum=0, multiple=1)
    reset_before_job_start = BooleanField()