def test_grants_needs(users, roles):
    user = users[0]
    role = roles[0]
    grant1 = Grant(user, "manage")
    grant2 = Grant(role, "view")
    dict_ = {"subject": "sysrole", "id": "system", "level": "view"}
    grant3 = Grant.from_dict(dict_)
    grants = Grants([grant1, grant2, grant3])

    assert len(grants.needs("view")) == 3
def test_grants_dump(users, roles):
    user = users[0]
    role = roles[0]
    grant1 = Grant(user, "manage")
    grant2 = Grant(role, "view")
    dict_ = {"subject": "sysrole", "id": "system", "level": "view"}
    grant3 = Grant.from_dict(dict_)
    grants = Grants([grant1, grant2, grant3])

    dump = grants.dump()
    assert len(dump) == 3
    assert grant1.to_dict() in dump
    assert grant2.to_dict() in dump
    assert grant3.to_dict() in dump