def test_LeaveGroup_regression(db): # see test_LeaveCommunity_regression # admin user1, token1 = generate_user(username="******", geom=create_1d_point(200), geom_radius=0.1) # joiner/leaver user2, token2 = generate_user(username="******", geom=create_1d_point(201), geom_radius=0.1) with session_scope() as session: c0 = create_community(session, 0, 100, "Community 0", [user1], [], None) g1 = create_group(session, "Group 1", [user1], [], c0) g2 = create_group(session, "Group 2", [user1], [], c0) g1_id = g1.id g2_id = g2.id enforce_community_memberships() with groups_session(token1) as api: assert api.GetGroup(groups_pb2.GetGroupReq(group_id=g1_id)).member assert api.GetGroup(groups_pb2.GetGroupReq(group_id=g2_id)).member with groups_session(token2) as api: # first check we're not in any groups assert not api.GetGroup(groups_pb2.GetGroupReq(group_id=g1_id)).member assert not api.GetGroup(groups_pb2.GetGroupReq(group_id=g2_id)).member # join some groups api.JoinGroup(groups_pb2.JoinGroupReq(group_id=g1_id)) api.JoinGroup(groups_pb2.JoinGroupReq(group_id=g2_id)) # check memberships assert api.GetGroup(groups_pb2.GetGroupReq(group_id=g1_id)).member assert api.GetGroup(groups_pb2.GetGroupReq(group_id=g2_id)).member # leave just g2 api.LeaveGroup(groups_pb2.LeaveGroupReq(group_id=g2_id)) # check memberships assert api.GetGroup(groups_pb2.GetGroupReq(group_id=g1_id)).member assert not api.GetGroup(groups_pb2.GetGroupReq(group_id=g2_id)).member
def testing_communities(request): db_impl(request.param) user1, token1 = generate_user(username="******", geom=create_1d_point(1), geom_radius=0.1) user2, token2 = generate_user(username="******", geom=create_1d_point(2), geom_radius=0.1) user3, token3 = generate_user(username="******", geom=create_1d_point(3), geom_radius=0.1) user4, token4 = generate_user(username="******", geom=create_1d_point(8), geom_radius=0.1) user5, token5 = generate_user(username="******", geom=create_1d_point(6), geom_radius=0.1) user6, token6 = generate_user(username="******", geom=create_1d_point(65), geom_radius=0.1) user7, token7 = generate_user(username="******", geom=create_1d_point(80), geom_radius=0.1) user8, token8 = generate_user(username="******", geom=create_1d_point(51), geom_radius=0.1) with session_scope() as session: w = create_community(session, 0, 100, "World", [user1, user3, user7], [], None) c1 = create_community(session, 0, 50, "Country 1", [user1, user2], [], w) c1r1 = create_community(session, 0, 10, "Country 1, Region 1", [user1, user2], [], c1) c1r1c1 = create_community(session, 0, 5, "Country 1, Region 1, City 1", [user2], [], c1r1) c1r1c2 = create_community(session, 7, 10, "Country 1, Region 1, City 2", [user4, user5], [user2], c1r1) c1r2 = create_community(session, 20, 25, "Country 1, Region 2", [user2], [], c1) c1r2c1 = create_community(session, 21, 23, "Country 1, Region 2, City 1", [user2], [], c1r2) c2 = create_community(session, 52, 100, "Country 2", [user6, user7], [], w) c2r1 = create_community(session, 52, 71, "Country 2, Region 1", [user6], [user8], c2) c2r1c1 = create_community(session, 53, 70, "Country 2, Region 1, City 1", [user8], [], c2r1) h = create_group(session, "Hitchhikers", [user1, user2], [user5, user8], w) create_group(session, "Country 1, Region 1, Foodies", [user1], [user2, user4], c1r1) create_group(session, "Country 1, Region 1, Skaters", [user2], [user1], c1r1) create_group(session, "Country 1, Region 2, Foodies", [user2], [user4, user5], c1r2) create_group(session, "Country 2, Region 1, Foodies", [user6], [user7], c2r1) create_discussion(token1, w.id, None, "Discussion title 1", "Discussion content 1") create_discussion(token3, w.id, None, "Discussion title 2", "Discussion content 2") create_discussion(token3, w.id, None, "Discussion title 3", "Discussion content 3") create_discussion(token3, w.id, None, "Discussion title 4", "Discussion content 4") create_discussion(token3, w.id, None, "Discussion title 5", "Discussion content 5") create_discussion(token3, w.id, None, "Discussion title 6", "Discussion content 6") create_discussion(token4, c1r1c2.id, None, "Discussion title 7", "Discussion content 7") create_discussion(token5, None, h.id, "Discussion title 8", "Discussion content 8") create_discussion(token1, None, h.id, "Discussion title 9", "Discussion content 9") create_discussion(token2, None, h.id, "Discussion title 10", "Discussion content 10") create_discussion(token3, None, h.id, "Discussion title 11", "Discussion content 11") create_discussion(token4, None, h.id, "Discussion title 12", "Discussion content 12") create_discussion(token5, None, h.id, "Discussion title 13", "Discussion content 13") create_discussion(token8, None, h.id, "Discussion title 14", "Discussion content 14") enforce_community_memberships() create_place(token1, "Country 1, Region 1, Attraction", "Place content", "Somewhere in c1r1", 6) create_place(token2, "Country 1, Region 1, City 1, Attraction 1", "Place content", "Somewhere in c1r1c1", 3) create_place(token2, "Country 1, Region 1, City 1, Attraction 2", "Place content", "Somewhere in c1r1c1", 4) create_place(token8, "World, Attraction", "Place content", "Somewhere in w", 51.5) create_place(token6, "Country 2, Region 1, Attraction", "Place content", "Somewhere in c2r1", 59) yield
def process_enforce_community_membership(payload): enforce_community_memberships()
def test_LeaveCommunity_regression(db): # See github issue #1444, repro: # 1. Join more than one community # 2. Leave one of them # 3. You are no longer in any community # admin user1, token1 = generate_user(username="******", geom=create_1d_point(200), geom_radius=0.1) # joiner/leaver user2, token2 = generate_user(username="******", geom=create_1d_point(201), geom_radius=0.1) with session_scope() as session: c0 = create_community(session, 0, 100, "Community 0", [user1], [], None) c1 = create_community(session, 0, 50, "Community 1", [user1], [], c0) c2 = create_community(session, 0, 10, "Community 2", [user1], [], c0) c0_id = c0.id c1_id = c1.id c2_id = c2.id enforce_community_memberships() with communities_session(token1) as api: assert api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c0_id)).member assert api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c1_id)).member assert api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c2_id)).member with communities_session(token2) as api: # first check we're not in any communities assert not api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c0_id)).member assert not api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c1_id)).member assert not api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c2_id)).member # join some communities api.JoinCommunity(communities_pb2.JoinCommunityReq(community_id=c1_id)) api.JoinCommunity(communities_pb2.JoinCommunityReq(community_id=c2_id)) # check memberships assert not api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c0_id)).member assert api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c1_id)).member assert api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c2_id)).member # leave just c2 api.LeaveCommunity( communities_pb2.LeaveCommunityReq(community_id=c2_id)) # check memberships assert not api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c0_id)).member assert api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c1_id)).member assert not api.GetCommunity( communities_pb2.GetCommunityReq(community_id=c2_id)).member