def test_user_info(): client = ClientFactory() role1 = RoleFactory() role2 = RoleFactory() user = UserFactory(roles=(role1, role2)) actual_user_info = get_user_info(user.id, client.id) expected_user_info = UserInfo( sub=user.id, email=user.email, email_verified=user.verified, name=user.name, picture=None, roles=[role1.id, role2.id], ) assert expected_user_info == actual_user_info
def test_platform_roles(): scopes = ScopeFactory.create_batch(8, type='odp') client = ClientFactory(scopes=scopes[1:7]) role1 = RoleFactory(scopes=scopes[:3]) role2 = RoleFactory(scopes=scopes[5:]) user = UserFactory(roles=(role1, role2)) actual_user_perm = get_user_permissions(user.id, client.id) expected_user_perm = { scope.id: '*' for n, scope in enumerate(scopes) if n in (1, 2, 5, 6) } assert_compare(expected_user_perm, actual_user_perm) actual_client_perm = get_client_permissions(client.id) expected_client_perm = {scope.id: '*' for scope in scopes[1:7]} assert_compare(expected_client_perm, actual_client_perm)
def test_user_info_collection_roles_and_client(): client = ClientFactory(is_collection_client=True) role1 = RoleFactory() role2 = RoleFactory(collection=client.collection) role3 = RoleFactory(collection=client.collection) role4 = RoleFactory(is_collection_role=True) user = UserFactory(roles=(role1, role2, role3, role4)) actual_user_info = get_user_info(user.id, client.id) expected_user_info = UserInfo( sub=user.id, email=user.email, email_verified=user.verified, name=user.name, picture=None, roles=[role1.id, role2.id, role3.id], ) assert expected_user_info == actual_user_info
def test_collection_client_platform_collection_role_mix(): scopes = ScopeFactory.create_batch(8, type='odp') client = ClientFactory(scopes=scopes[1:7], is_collection_client=True) role1 = RoleFactory(scopes=scopes[:3]) role2 = RoleFactory(scopes=scopes[3:5], is_collection_role=True) role3 = RoleFactory(scopes=scopes[5:], collection=client.collection) user = UserFactory(roles=(role1, role2, role3)) actual_user_perm = get_user_permissions(user.id, client.id) expected_user_perm = { scope.id: [client.collection_id] for n, scope in enumerate(scopes) if n in (1, 2, 5, 6) } assert_compare(expected_user_perm, actual_user_perm) actual_client_perm = get_client_permissions(client.id) expected_client_perm = { scope.id: [client.collection_id] for scope in scopes[1:7] } assert_compare(expected_client_perm, actual_client_perm)
def test_collection_roles(): scopes = ScopeFactory.create_batch(8, type='odp') client = ClientFactory(scopes=scopes[1:7]) role1 = RoleFactory(scopes=scopes[:5], is_collection_role=True) role2 = RoleFactory(scopes=scopes[3:], is_collection_role=True) user = UserFactory(roles=(role1, role2)) actual_user_perm = get_user_permissions(user.id, client.id) expected_user_perm = { scope.id: [role1.collection_id] for n, scope in enumerate(scopes) if n in (1, 2) } | { scope.id: [role1.collection_id, role2.collection_id] for n, scope in enumerate(scopes) if n in (3, 4) } | { scope.id: [role2.collection_id] for n, scope in enumerate(scopes) if n in (5, 6) } assert_compare(expected_user_perm, actual_user_perm) actual_client_perm = get_client_permissions(client.id) expected_client_perm = {scope.id: '*' for scope in scopes[1:7]} assert_compare(expected_client_perm, actual_client_perm)
def test_create_user_with_roles(): roles = RoleFactory.create_batch(5) user = UserFactory(roles=roles) result = Session.execute(select(UserRole)).scalars() assert [(row.user_id, row.role_id) for row in result] \ == [(user.id, role.id) for role in roles]
def test_create_user(): user = UserFactory() result = Session.execute(select(User)).scalar_one() assert (result.id, result.name, result.email, result.active, result.verified) \ == (user.id, user.name, user.email, user.active, user.verified)
def user_batch(): """Create and commit a batch of User instances.""" return [ UserFactory(roles=RoleFactory.create_batch(randint(0, 3))) for _ in range(randint(3, 5)) ]