Example #1
0
def test_generate_attr_UNION():
    attr_val1 = utils.generate_attr(attr_type=ATTR.UNION(
        union=[ATTR.STR(), ATTR.INT()]))
    attr_val2 = utils.generate_attr(attr_type=ATTR.UNION(union=[
        ATTR.LIST(list=[ATTR.STR()], min=1),
        ATTR.TYPED_DICT(dict={'foo': ATTR.FLOAT()})
    ]))
    assert type(attr_val1) in [str, int]
    assert (type(attr_val2) == list and type(attr_val2[0]) == str) or (
        type(attr_val2) == dict and type(attr_val2['foo']) == float)
Example #2
0
def test_generate_attr_LOCALES(preserve_state):
    with preserve_state(config, 'Config'):
        config.Config.locales = ['ar_AE', 'en_AE']
        config.Config.locale = 'ar_AE'
        attr_val = utils.generate_attr(attr_type=ATTR.LOCALES())

        assert attr_val in ['ar_AE', 'en_AE']
Example #3
0
def test_generate_attr_LOCALE(preserve_state):
    with preserve_state(config, 'Config'):
        config.Config.locales = ['ar_AE', 'en_AE']
        config.Config.locale = 'ar_AE'
        attr_val = utils.generate_attr(attr_type=ATTR.LOCALE())

        assert len(attr_val.keys()) == 2
        assert set(attr_val.keys()) == {'ar_AE', 'en_AE'}
Example #4
0
def test_generate_attr_TYPED_DICT():
    attr_val = utils.generate_attr(attr_type=ATTR.TYPED_DICT(dict={
        'foo': ATTR.INT(),
        'bar': ATTR.STR(),
    }))
    assert len(attr_val.keys()) == 2
    assert set(attr_val.keys()) == {'foo', 'bar'}
    assert type(attr_val['foo']) == int
    assert type(attr_val['bar']) == str
Example #5
0
def test_generate_attr_COUNTER(preserve_state):
    with preserve_state(config, 'Config'):
        attr_val = utils.generate_attr(attr_type=ATTR.COUNTER(
            pattern='C-$__values:0/$__values:1-$__counters.test_counter',
            values=[
                lambda skip_events, env, query, doc: 10,
                lambda skip_events, env, query, doc: 20,
            ],
        ))
        assert attr_val == 'C-10/20-42'
Example #6
0
def test_generate_attr_FILE_no_args():
    attr_val = utils.generate_attr(attr_type=ATTR.FILE())
    assert type(attr_val) == dict
    assert set(k for k in attr_val.keys()) == {
        'name',
        'lastModified',
        'type',
        'size',
        'content',
    }
    assert attr_val['type'] == 'text/plain'
    assert attr_val['name'].endswith('.txt')
Example #7
0
def _compile_anon_user():
    from nawah.utils import generate_attr

    anon_doc = {
        '_id': ObjectId('f00000000000000000000011'),
        'name': {
            Config.locale: '__ANON'
        },
        'groups': [],
        'privileges': Config.anon_privileges,
        'locale': Config.locale,
    }
    for attr in Config.user_attrs.keys():
        anon_doc[attr] = generate_attr(attr_type=Config.user_attrs[attr])
    for auth_attr in Config.user_attrs.keys():
        anon_doc[f'{auth_attr}_hash'] = Config.anon_token
    return anon_doc
Example #8
0
def test_generate_attr_URI_WEB_allowed_domains_strict():
    attr_val = utils.generate_attr(attr_type=ATTR.URI_WEB(
        allowed_domains=['foo.com', 'bar.net', 'baz.ae'], strict=True))
    assert attr_val.startswith('https://foo.com/') or attr_val.startswith(
        'https://bar.net/') or attr_val.startswith('https://baz.ae/')
Example #9
0
def test_generate_attr_LITERAL():
    attr_val = utils.generate_attr(attr_type=ATTR.LITERAL(
        literal=['abc', 321, False, 12.34, 'foo', 'bar', 'baz']))
    assert attr_val in ['abc', 321, False, 12.34, 'foo', 'bar', 'baz']
Example #10
0
def test_generate_attr_TIME_ranges_dynamic_start_end_negative():
    attr_val = utils.generate_attr(attr_type=ATTR.TIME(
        ranges=[['-2h', '+5h']]))
    assert attr_val.split('.')[0] == (
        datetime.datetime.utcnow() +
        datetime.timedelta(hours=-2)).isoformat().split('T')[1].split('.')[0]
Example #11
0
def test_generate_attr_URI_WEB_no_args():
    attr_val = utils.generate_attr(attr_type=ATTR.URI_WEB())
    assert re.match(r'^https?:\/\/(?:[\w\-\_]+\.)(?:\.?[\w]{2,})+([\?\/].*)?$',
                    attr_val) != None
Example #12
0
def test_generate_attr_TIME_ranges_datetime_end():
    attr_val = utils.generate_attr(attr_type=ATTR.TIME(
        ranges=[['+1h', '22:00:00']]))
    assert attr_val == '21:59:00'
Example #13
0
def test_generate_attr_TIME_ranges_datetime_start():
    attr_val = utils.generate_attr(attr_type=ATTR.TIME(
        ranges=[['18:00:00', '+2h']]))
    assert attr_val == '18:00:00'
Example #14
0
def test_generate_attr_DATETIME_ranges_dynamic_start_end_negative():
    attr_val = utils.generate_attr(attr_type=ATTR.DATETIME(
        ranges=[['-5d', '+52w']]))
    assert attr_val.split('.')[0] == (
        datetime.datetime.utcnow() +
        datetime.timedelta(days=-5)).isoformat().split('.')[0]
Example #15
0
def test_generate_attr_INT_no_args():
    attr_val = utils.generate_attr(attr_type=ATTR.INT())
    assert type(attr_val) == int
Example #16
0
def test_generate_attr_DATETIME_no_args():
    attr_val = utils.generate_attr(attr_type=ATTR.DATETIME())
    assert attr_val.split(
        '.')[0] == datetime.datetime.utcnow().isoformat().split('.')[0]
Example #17
0
def test_generate_attr_DATETIME_ranges_datetime_start():
    attr_val = utils.generate_attr(attr_type=ATTR.DATETIME(
        ranges=[['2020-10-20T00:00:00', '+104w']]))
    assert attr_val == '2020-10-20T00:00:00'
Example #18
0
def test_generate_attr_INT_ranges():
    attr_val = utils.generate_attr(attr_type=ATTR.INT(ranges=[[0, 10]]))
    assert type(attr_val) == int
    assert attr_val in range(0, 10)
Example #19
0
def test_generate_attr_IP():
    attr_val = utils.generate_attr(attr_type=ATTR.IP())
    assert (re.match(
        r'^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$',
        attr_val,
    ) != None)
Example #20
0
def test_generate_attr_LIST_multiple_types():
    attr_val = utils.generate_attr(
        attr_type=ATTR.LIST(list=[ATTR.STR(), ATTR.INT()], min=2))
    assert len(attr_val) == 2
    assert sum(1 for j in attr_val if type(j) in [int, str]) == 2
Example #21
0
def test_generate_attr_LIST_min():
    attr_val = utils.generate_attr(
        attr_type=ATTR.LIST(list=[ATTR.STR()], min=2))
    assert len(attr_val) == 2
    assert set(type(j) for j in attr_val) == {str}
Example #22
0
def test_generate_attr_LIST_no_args():
    attr_val = utils.generate_attr(attr_type=ATTR.LIST(list=[ATTR.STR()]))
    assert len(attr_val) == 0
Example #23
0
def test_generate_attr_DATE_ranges_dynamic_start_end():
    attr_val = utils.generate_attr(attr_type=ATTR.DATE(
        ranges=[['+2d', '+52w']]))
    assert attr_val == (datetime.datetime.utcnow() +
                        datetime.timedelta(days=2)).isoformat().split('T')[0]
Example #24
0
def test_generate_attr_PHONE_no_args():
    attr_val = utils.generate_attr(attr_type=ATTR.PHONE())
    assert re.match(r'^\+[0-9]+$', attr_val) != None
Example #25
0
def test_generate_attr_DATETIME_ranges_datetime_end():
    attr_val = utils.generate_attr(attr_type=ATTR.DATETIME(
        ranges=[['+1d', '2020-10-20T00:00:00']]))
    assert attr_val == '2020-10-19T00:00:00'
Example #26
0
def test_generate_attr_PHONE_codes():
    attr_val = utils.generate_attr(attr_type=ATTR.PHONE(
        codes=['123', '45', '6']))
    assert re.match(r'^\+(123|45|6)[0-9]+$', attr_val) != None
Example #27
0
def test_generate_attr_ANY():
    utils.generate_attr(attr_type=ATTR.ANY())
Example #28
0
def test_generate_attr_STR_no_args():
    attr_val = utils.generate_attr(attr_type=ATTR.STR())
    assert type(attr_val) == str
Example #29
0
def test_generate_attr_KV_DICT_no_args():
    attr_val = utils.generate_attr(
        attr_type=ATTR.KV_DICT(key=ATTR.STR(), val=ATTR.INT()))
    assert len(attr_val.keys()) == 0
Example #30
0
def test_generate_attr_STR_pattern(caplog):
    attr_val = utils.generate_attr(attr_type=ATTR.STR(pattern='^[0-9]+$'))
    # [DOC] Assert warning was logged of existence of pattern Attr Type Arg
    assert caplog.records[0].levelname == 'WARNING'