def setup_function():
    """ 这个文件下的每个测试运行之前,都会执行这个函数 """
    clean_all()
Exemple #2
0
def test_get_user_with_permission_and_group_by_id():
    with get_session_local() as session:
        # simple
        user = generate_user()
        role = generate_role()
        permission1 = generate_permission()
        permission2 = generate_permission()
        session.add_all((user, role, permission1, permission2))
        session.flush()

        session.add_all((generate_user2role(user.id, role.id),
                         generate_permission2role(permission1.id, role.id),
                         generate_permission2role(permission2.id, role.id)))
        session.commit()

        user = get_user_with_permission_and_group_by_id(session, user.id)
        assert user is not None
        assert user.permission_set == {permission1.name, permission2.name}
        assert user.role_set == {role.name}

    clean_all()
    with get_session_local() as session:
        # more group and permission
        user = generate_user()
        role1 = generate_role()
        role2 = generate_role()
        permission1 = generate_permission()
        permission2 = generate_permission()
        permission3 = generate_permission()
        session.add_all(
            (user, role1, role2, permission1, permission2, permission3))
        session.flush()

        session.add_all((generate_user2role(user.id, role1.id),
                         generate_user2role(user.id, role2.id),
                         generate_permission2role(permission1.id, role1.id),
                         generate_permission2role(permission2.id, role1.id),
                         generate_permission2role(permission3.id, role2.id)))
        session.commit()

        user = get_user_with_permission_and_group_by_id(session, user.id)
        assert user is not None
        assert user.permission_set == {
            permission1.name, permission2.name, permission3.name
        }
        assert user.role_set == {role1.name, role2.name}

    clean_all()
    with get_session_local() as session:
        # has group, no permission
        user = generate_user()
        role1 = generate_role()
        role2 = generate_role()
        session.add_all((user, role1, role2))
        session.flush()

        session.add_all((
            generate_user2role(user.id, role1.id),
            generate_user2role(user.id, role2.id),
        ))
        session.commit()

        user = get_user_with_permission_and_group_by_id(session, user.id)
        assert user is not None
        assert len(user.permission_set) == 0
        assert user.role_set == {role1.name, role2.name}

    clean_all()
    with get_session_local() as session:
        # no group, no permission
        user = generate_user()
        session.add(user)
        session.commit()

        user = get_user_with_permission_and_group_by_id(session, user.id)
        assert user is not None
        assert len(user.permission_set) == 0
        assert len(user.role_set) == 0