示例#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)
示例#2
0
async def test_validate_attr_DICT_nested_dict_invalid():
	with pytest.raises(InvalidAttrException):
		await validate_attr(
			attr_name='test_validate_attr_DICT',
			attr_type=ATTR.KV_DICT(
				key=ATTR.STR(), val=ATTR.KV_DICT(key=ATTR.STR(), val=ATTR.INT())
			),
			attr_val={
				'key1': 'value',
				'key2': 2,
			},
			mode='create',
		)
示例#3
0
async def test_validate_attr_DICT_nested_dict():
	dict_attr_val = {
		'key1': {'child_key': 1},
		'key2': {'child_key': 2},
	}
	attr_val = await validate_attr(
		attr_name='test_validate_attr_DICT',
		attr_type=ATTR.KV_DICT(
			key=ATTR.STR(), val=ATTR.KV_DICT(key=ATTR.STR(), val=ATTR.INT())
		),
		attr_val=dict_attr_val,
		mode='create',
	)
	assert attr_val == dict_attr_val
示例#4
0
async def test_validate_attr_DICT_None():
	with pytest.raises(InvalidAttrException):
		await validate_attr(
			attr_name='test_validate_attr_DICT',
			attr_type=ATTR.TYPED_DICT(dict={'key': ATTR.STR()}),
			attr_val=None,
			mode='create',
		)
示例#5
0
async def test_validate_attr_STR_str():
    attr_val = await validate_attr(
        attr_name='test_validate_attr_STR',
        attr_type=ATTR.STR(),
        attr_val='test_validate_attr_STR',
        mode='create',
    )
    assert attr_val == 'test_validate_attr_STR'
示例#6
0
async def test_validate_attr_STR_None():
    with pytest.raises(InvalidAttrException):
        await validate_attr(
            attr_name='test_validate_attr_STR',
            attr_type=ATTR.STR(),
            attr_val=None,
            mode='create',
        )
示例#7
0
async def test_validate_attr_UNION_None_allow_none():
    attr_val = await validate_attr(
        attr_name='test_validate_attr_UNION',
        attr_type=ATTR.UNION(union=[ATTR.STR(), ATTR.INT()]),
        attr_val=None,
        mode='update',
    )
    assert attr_val == None
示例#8
0
async def test_validate_attr_STR_pattern_str():
    attr_val = await validate_attr(
        attr_name='test_validate_attr_STR',
        attr_type=ATTR.STR(pattern=r'[a-zA-Z_]+'),
        attr_val='test_validate_attr_STR',
        mode='create',
    )
    assert attr_val == 'test_validate_attr_STR'
示例#9
0
async def test_validate_attr_STR_None_allow_none():
    attr_val = await validate_attr(
        attr_name='test_validate_attr_STR',
        attr_type=ATTR.STR(),
        attr_val=None,
        mode='update',
    )
    assert attr_val == None
示例#10
0
async def test_validate_attr_DICT_min_req_max_dict_invalid():
	with pytest.raises(InvalidAttrException):
		await validate_attr(
			attr_name='test_validate_attr_DICT',
			attr_type=ATTR.KV_DICT(key=ATTR.STR(), val=ATTR.INT(), min=3, max=4, req=['key3']),
			attr_val={'key1': '4', 'key2': 3, 'key3': 0, 'key4': 5, 'key5': 2},
			mode='create',
		)
示例#11
0
async def test_validate_attr_DICT_None_allow_none():
	attr_val = await validate_attr(
		attr_name='test_validate_attr_DICT',
		attr_type=ATTR.KV_DICT(key=ATTR.STR(), val=ATTR.INT()),
		attr_val=None,
		mode='update',
	)
	assert attr_val == None
示例#12
0
async def test_validate_attr_LIST_nested_list_invalid():
    with pytest.raises(InvalidAttrException):
        await validate_attr(
            attr_name='test_validate_attr_LIST',
            attr_type=ATTR.LIST(list=[ATTR.LIST(list=[ATTR.STR()])]),
            attr_val=['str', 'str', ['str']],
            mode='create',
        )
示例#13
0
async def test_validate_attr_UNION_None():
    with pytest.raises(InvalidAttrException):
        await validate_attr(
            attr_name='test_validate_attr_UNION',
            attr_type=ATTR.UNION(union=[ATTR.STR(), ATTR.INT()]),
            attr_val=None,
            mode='create',
        )
示例#14
0
async def test_validate_attr_LIST_int():
    with pytest.raises(InvalidAttrException):
        await validate_attr(
            attr_name='test_validate_attr_LIST',
            attr_type=ATTR.LIST(list=[ATTR.STR()]),
            attr_val=1,
            mode='create',
        )
示例#15
0
async def test_validate_attr_LIST_None_allow_none():
    attr_val = await validate_attr(
        attr_name='test_validate_attr_LIST',
        attr_type=ATTR.LIST(list=[ATTR.STR()]),
        attr_val=None,
        mode='update',
    )
    assert attr_val == None
示例#16
0
async def test_validate_doc_valid():
	attrs = {
		'attr_str': ATTR.STR(),
		'attr_int': ATTR.INT(),
	}
	doc = {'attr_str': 'str', 'attr_int': '42'}
	await utils.validate_doc(mode='create', doc=doc, attrs=attrs)
	assert doc == {'attr_str': 'str', 'attr_int': 42}
示例#17
0
async def test_validate_doc_allow_update_valid_none():
	attrs = {
		'attr_str': ATTR.STR(),
		'attr_int': ATTR.INT(),
	}
	doc = {'attr_str': 'str', 'attr_int': None}
	await utils.validate_doc(doc=doc, attrs=attrs, mode='update')
	assert doc == {'attr_str': 'str', 'attr_int': None}
示例#18
0
async def test_validate_doc_invalid_none():
	attrs = {
		'attr_str': ATTR.STR(),
		'attr_int': ATTR.INT(),
	}
	doc = {'attr_str': 'str', 'attr_int': None}
	with pytest.raises(MissingAttrException):
		await utils.validate_doc(mode='create', doc=doc, attrs=attrs)
示例#19
0
async def test_validate_attr_DICT_req_dict():
	attr_val = await validate_attr(
		attr_name='test_validate_attr_DICT',
		attr_type=ATTR.KV_DICT(key=ATTR.STR(), val=ATTR.INT(), req=['key3']),
		attr_val={'key1': '4', 'key2': 1, 'key3': 0},
		mode='create',
	)
	assert attr_val == {'key1': 4, 'key2': 1, 'key3': 0}
示例#20
0
async def test_validate_attr_STR_pattern_str_invalid():
    with pytest.raises(InvalidAttrException):
        await validate_attr(
            attr_name='test_validate_attr_STR',
            attr_type=ATTR.STR(pattern=r'[a-z_]+'),
            attr_val='test_validate_attr_STR',
            mode='create',
        )
示例#21
0
async def test_validate_attr_DICT_min_req_max_dict():
	attr_val = await validate_attr(
		attr_name='test_validate_attr_DICT',
		attr_type=ATTR.KV_DICT(key=ATTR.STR(), val=ATTR.INT(), min=3, max=4, req=['key3']),
		attr_val={'key1': '4', 'key2': 3, 'key3': 0, 'key4': 5},
		mode='create',
	)
	assert attr_val == {'key1': 4, 'key2': 3, 'key3': 0, 'key4': 5}
示例#22
0
async def test_validate_attr_DICT_None_allow_none():
	attr_val = await validate_attr(
		attr_name='test_validate_attr_DICT',
		attr_type=ATTR.TYPED_DICT(dict={'key': ATTR.STR()}),
		attr_val=None,
		mode='update',
	)
	assert attr_val == None
示例#23
0
async def test_validate_attr_UNION_int():
    attr_val = await validate_attr(
        attr_name='test_validate_attr_UNION',
        attr_type=ATTR.UNION(union=[ATTR.STR(), ATTR.INT()]),
        attr_val=1,
        mode='create',
    )
    assert attr_val == 1
示例#24
0
async def test_validate_attr_DICT_None():
	with pytest.raises(InvalidAttrException):
		await validate_attr(
			attr_name='test_validate_attr_DICT',
			attr_type=ATTR.KV_DICT(key=ATTR.STR(), val=ATTR.ANY()),
			attr_val=None,
			mode='create',
		)
示例#25
0
async def test_validate_attr_LIST_nested_list():
    list_attr_val = [['str'], ['str', 'str'], ['str']]
    attr_val = await validate_attr(
        attr_name='test_validate_attr_LIST',
        attr_type=ATTR.LIST(list=[ATTR.LIST(list=[ATTR.STR()])]),
        attr_val=list_attr_val,
        mode='create',
    )
    assert attr_val == list_attr_val
示例#26
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
示例#27
0
def test_update_attr_values_default_list():
    attr = ATTR.LIST(list=[ATTR.STR()])
    _update_attr_values(
        attr=ATTR.TYPED_DICT(dict={'attr': attr}),
        value='default',
        value_path='attr:0',
        value_val='test_update_attr_values',
    )
    assert attr._args['list'][0]._default == 'test_update_attr_values'
示例#28
0
def test_update_attr_values_default_dict():
    attr = ATTR.TYPED_DICT(dict={'key': ATTR.STR()})
    _update_attr_values(
        attr=ATTR.TYPED_DICT(dict={'attr': attr}),
        value='default',
        value_path='attr.key',
        value_val='test_update_attr_values',
    )
    assert attr._args['dict']['key']._default == 'test_update_attr_values'
示例#29
0
async def test_validate_attr_BOOL_default_int_allow_none():
	attr_type = ATTR.STR()
	attr_type._default = 'test_validate_attr_BOOL'
	attr_val = await validate_attr(
		attr_name='test_validate_attr_BOOL',
		attr_type=attr_type,
		attr_val=1,
		mode='update',
	)
	assert attr_val == None
示例#30
0
async def test_validate_attr_DICT_nested_list_dict_invalid():
	with pytest.raises(InvalidAttrException):
		await validate_attr(
			attr_name='test_validate_attr_DICT',
			attr_type=ATTR.KV_DICT(key=ATTR.STR(), val=ATTR.LIST(list=[ATTR.INT()])),
			attr_val={
				'key1': ['a'],
			},
			mode='create',
		)