示例#1
0
def test_process_syncmap():
    from ldap2pg.validators import syncmap

    assert [] == syncmap(None)

    rule = dict(grant=dict(privilege='rol', role='alice'))
    fixtures = [
        # Canonical case.
        [rule],
        # full map dict (ldap2pg 2 format).
        dict(__all__=dict(__all__=[rule])),
        # Squeeze inner list.
        dict(__all__=dict(__all__=rule)),
        # Squeeze also schema.
        dict(__all__=rule),
        # Squeeze also database.
        rule,
    ]

    for raw in fixtures:
        v = syncmap(copy.deepcopy(raw))

        assert isinstance(v, list)
        assert 1 == len(v)
        assert 'grant' in v[0]
        m = v[0]['grant'][0].as_dict()
        assert ['__all__'] == m['databases']
        assert ['__all__'] == m['schemas']
示例#2
0
def test_process_syncmap_bad():
    from ldap2pg.validators import syncmap

    raw = dict(ldap=dict(base='dc=unit', attribute='cn'))
    with pytest.raises(ValueError):
        syncmap(raw)

    bad_fixtures = [
        'string_value',
        [None],
    ]
    for raw in bad_fixtures:
        with pytest.raises(ValueError):
            syncmap(raw)
示例#3
0
def test_process_syncmap_legacy():
    from ldap2pg.validators import syncmap

    grant = dict(privilege='rol', role='alice')
    fixtures = [
        dict(db=dict(schema=dict(grant=grant))),
        dict(db=dict(grant=dict(schema='schema', **grant))),
        dict(grant=dict(database='db', schema='schema', **grant)),
    ]

    for raw in fixtures:
        v = syncmap(copy.deepcopy(raw))

        assert isinstance(v, list)
        assert 1 == len(v)
        assert 'grant' in v[0]
        m = v[0]['grant'][0].as_dict()
        assert ['db'] == m['databases']
        assert ['schema'] == m['schemas']