def test_SetNotificationSettings(db): _, token = generate_user() with session_scope() as session: user = session.execute(select(User)).scalar_one() user.new_notifications_enabled = False with notifications_session(token) as notifications: notifications.SetNotificationSettings( notifications_pb2.SetNotificationSettingsReq( enable_new_notifications=False)) with session_scope() as session: user = session.execute(select(User)).scalar_one() assert not user.new_notifications_enabled with notifications_session(token) as notifications: notifications.SetNotificationSettings( notifications_pb2.SetNotificationSettingsReq( enable_new_notifications=True)) with session_scope() as session: user = session.execute(select(User)).scalar_one() assert user.new_notifications_enabled with notifications_session(token) as notifications: notifications.SetNotificationSettings( notifications_pb2.SetNotificationSettingsReq( enable_new_notifications=False)) with session_scope() as session: user = session.execute(select(User)).scalar_one() assert not user.new_notifications_enabled
def test_BlockUser(db): user1, token1 = generate_user() user2, token2 = generate_user() with session_scope() as session: blocked_user_list = ( session.execute(select(UserBlock).where(UserBlock.blocking_user_id == user1.id)).scalars().all() ) assert len(blocked_user_list) == 0 with blocking_session(token1) as user_blocks: with pytest.raises(grpc.RpcError) as e: user_blocks.BlockUser(blocking_pb2.BlockUserReq(username=user1.username)) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.CANT_BLOCK_SELF user_blocks.BlockUser(blocking_pb2.BlockUserReq(username=user2.username)) with pytest.raises(grpc.RpcError) as e: user_blocks.BlockUser(blocking_pb2.BlockUserReq(username=user2.username)) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.USER_ALREADY_BLOCKED with session_scope() as session: blocked_user_list = ( session.execute(select(UserBlock).where(UserBlock.blocking_user_id == user1.id)).scalars().all() ) assert len(blocked_user_list) == 1
def test_make_user_block(db): user1, token1 = generate_user() user2, token2 = generate_user() make_user_block(user1, user2) with session_scope() as session: blocked_user_list = ( session.execute(select(UserBlock).where(UserBlock.blocking_user_id == user1.id)).scalars().all() ) assert len(blocked_user_list) == 1
def test_GetNotificationSettings(db): _, token = generate_user() with session_scope() as session: user = session.execute(select(User)).scalar_one() user.new_notifications_enabled = False with notifications_session(token) as notifications: res = notifications.GetNotificationSettings( notifications_pb2.GetNotificationSettingsReq()) assert not res.new_notifications_enabled with session_scope() as session: user = session.execute(select(User)).scalar_one() user.new_notifications_enabled = True with notifications_session(token) as notifications: res = notifications.GetNotificationSettings( notifications_pb2.GetNotificationSettingsReq()) assert res.new_notifications_enabled
def test_relationships_userblock_dot_user(db): user1, token1 = generate_user() user2, token2 = generate_user() make_user_block(user1, user2) with session_scope() as session: block = session.execute( select(UserBlock).where((UserBlock.blocking_user_id == user1.id) & (UserBlock.blocked_user_id == user2.id)) ).scalar_one_or_none() assert block.blocking_user.username == user1.username assert block.blocked_user.username == user2.username
def test_select_dot_where_users_visible(db): user1, token1 = generate_user() user2, token2 = generate_user(delete_user=True) user3, token3 = generate_user() user4, token4 = generate_user() make_user_block(user1, user3) make_user_block(user4, user1) context = _FakeContext(user1.id) with session_scope() as session: assert session.execute( select(func.count()).select_from(User).where_users_visible( context)).scalar_one() == 1
def test_UnblockUser(db): user1, token1 = generate_user() user2, token2 = generate_user() make_user_block(user1, user2) with blocking_session(token1) as user_blocks: user_blocks.UnblockUser(blocking_pb2.UnblockUserReq(username=user2.username)) with session_scope() as session: blocked_users = session.execute(select(UserBlock).where(UserBlock.blocking_user_id == user1.id)).scalars().all() assert len(blocked_users) == 0 with blocking_session(token1) as user_blocks: with pytest.raises(grpc.RpcError) as e: user_blocks.UnblockUser(blocking_pb2.UnblockUserReq(username=user2.username)) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.USER_NOT_BLOCKED # Test re-blocking user_blocks.BlockUser(blocking_pb2.BlockUserReq(username=user2.username)) with session_scope() as session: blocked_users = session.execute(select(UserBlock).where(UserBlock.blocking_user_id == user1.id)).scalars().all() assert len(blocked_users) == 1
def test_is_visible_property(db): user1, token1 = generate_user() user2, token2 = generate_user() user3, token3 = generate_user() user4, token4 = generate_user() user5, token5 = generate_user(delete_user=True) with session_scope() as session: session.execute(select(User).where( User.id == user2.id)).scalar_one().is_banned = True session.execute(select(User).where( User.id == user3.id)).scalar_one().is_deleted = True make_user_invisible(user4.id) visible_users = session.execute(select(User).where( User.is_visible)).scalars().all() assert len(visible_users) == 1
def test_select_dot_where_users_column_visible(db): user1, token1 = generate_user() user2, token2 = generate_user() user3, token3 = generate_user() user4, token4 = generate_user() user5, token5 = generate_user() make_friends(user1, user2) make_friends(user1, user3) make_friends(user1, user4) make_friends(user1, user5) make_user_invisible(user3.id) make_user_block(user1, user4) make_user_block(user5, user1) context = _FakeContext(user1.id) with session_scope() as session: assert (session.execute( select(func.count()).select_from( FriendRelationship).where_users_column_visible( context, FriendRelationship.to_user_id)).scalar_one() == 1)