Ejemplo n.º 1
0
    def test_ListOtherUserCommunities(testing_communities):
        with session_scope() as session:
            user1_id, token1 = get_user_id_and_token(session, "user1")
            user2_id, token2 = get_user_id_and_token(session, "user2")
            w_id = get_community_id(session, "Global")
            c1_id = get_community_id(session, "Country 1")
            c1r1_id = get_community_id(session, "Country 1, Region 1")
            c1r1c1_id = get_community_id(session,
                                         "Country 1, Region 1, City 1")
            c1r1c2_id = get_community_id(session,
                                         "Country 1, Region 1, City 2")
            c1r2_id = get_community_id(session, "Country 1, Region 2")
            c1r2c1_id = get_community_id(session,
                                         "Country 1, Region 2, City 1")

        # Fetch user2's communities from user1's account
        with communities_session(token1) as api:
            res = api.ListUserCommunities(
                communities_pb2.ListUserCommunitiesReq(user_id=user2_id))
            assert [c.community_id for c in res.communities] == [
                w_id,
                c1_id,
                c1r1_id,
                c1r1c1_id,
                c1r1c2_id,
                c1r2_id,
                c1r2c1_id,
            ]
Ejemplo n.º 2
0
    def test_ListOtherUserGroups(testing_communities):
        with session_scope() as session:
            user1_id, token1 = get_user_id_and_token(session, "user1")
            user2_id, token2 = get_user_id_and_token(session, "user2")
            hitchhikers_id = get_group_id(session, "Hitchhikers")
            foodies_id = get_group_id(session, "Country 1, Region 1, Foodies")
            skaters_id = get_group_id(session, "Country 1, Region 1, Skaters")

        # List user1's groups from user2's account
        with groups_session(token2) as api:
            res = api.ListUserGroups(
                groups_pb2.ListUserGroupsReq(user_id=user1_id))
            assert [g.group_id for g in res.groups
                    ] == [hitchhikers_id, foodies_id, skaters_id]
Ejemplo n.º 3
0
    def test_ListNearbyUsers(testing_communities):
        with session_scope() as session:
            user1_id, token1 = get_user_id_and_token(session, "user1")
            user2_id, token2 = get_user_id_and_token(session, "user2")
            user3_id, token3 = get_user_id_and_token(session, "user3")
            user4_id, token4 = get_user_id_and_token(session, "user4")
            user5_id, token5 = get_user_id_and_token(session, "user5")
            user6_id, token6 = get_user_id_and_token(session, "user6")
            user7_id, token7 = get_user_id_and_token(session, "user7")
            user8_id, token8 = get_user_id_and_token(session, "user8")
            w_id = get_community_id(session, "Global")
            c1r1c2_id = get_community_id(session,
                                         "Country 1, Region 1, City 2")

        with communities_session(token1) as api:
            res = api.ListNearbyUsers(
                communities_pb2.ListNearbyUsersReq(community_id=w_id, ))
            assert res.nearby_user_ids == [
                user1_id,
                user2_id,
                user3_id,
                user4_id,
                user5_id,
                user6_id,
                user7_id,
                user8_id,
            ]

            res = api.ListNearbyUsers(
                communities_pb2.ListNearbyUsersReq(community_id=c1r1c2_id, ))
            assert res.nearby_user_ids == [user4_id]
Ejemplo n.º 4
0
    def test_ListDiscussions(testing_communities):
        with session_scope() as session:
            user1_id, token1 = get_user_id_and_token(session, "user1")
            hitchhikers_id = get_group_id(session, "Hitchhikers")

        with groups_session(token1) as api:
            res = api.ListDiscussions(
                groups_pb2.ListDiscussionsReq(
                    group_id=hitchhikers_id,
                    page_size=5,
                ))
            assert [d.title for d in res.discussions] == [
                "Discussion title 8",
                "Discussion title 9",
                "Discussion title 10",
                "Discussion title 11",
                "Discussion title 12",
            ]
            for d in res.discussions:
                assert d.thread.thread_id > 0
                assert d.thread.num_responses == 0

            res = api.ListDiscussions(
                groups_pb2.ListDiscussionsReq(
                    group_id=hitchhikers_id,
                    page_token=res.next_page_token,
                    page_size=5,
                ))
            assert [d.title for d in res.discussions] == [
                "Discussion title 13",
                "Discussion title 14",
            ]
            for d in res.discussions:
                assert d.thread.thread_id > 0
                assert d.thread.num_responses == 0
Ejemplo n.º 5
0
    def test_ListAdmins(testing_communities):
        # implicitly tests visibility and blocking, since all groups have invisible, blocked, and blocking admin
        with session_scope() as session:
            user1_id, token1 = get_user_id_and_token(session, "user1")
            user2_id, token2 = get_user_id_and_token(session, "user2")
            hitchhikers_id = get_group_id(session, "Hitchhikers")
            c1r2foodies_id = get_group_id(session,
                                          "Country 1, Region 2, Foodies")

        with groups_session(token1) as api:
            res = api.ListAdmins(
                groups_pb2.ListAdminsReq(group_id=hitchhikers_id, ))
            assert res.admin_user_ids == [user1_id, user2_id]

            res = api.ListAdmins(
                groups_pb2.ListAdminsReq(group_id=c1r2foodies_id, ))
            assert res.admin_user_ids == [user2_id]
Ejemplo n.º 6
0
    def test_ListDiscussions(testing_communities):
        with session_scope() as session:
            user1_id, token1 = get_user_id_and_token(session, "user1")
            w_id = get_community_id(session, "Global")
            c1r1c2_id = get_community_id(session,
                                         "Country 1, Region 1, City 2")

        with communities_session(token1) as api:
            res = api.ListDiscussions(
                communities_pb2.ListDiscussionsReq(
                    community_id=w_id,
                    page_size=3,
                ))
            assert [d.title for d in res.discussions] == [
                "Discussion title 6",
                "Discussion title 5",
                "Discussion title 4",
            ]
            for d in res.discussions:
                assert d.thread.thread_id > 0
                assert d.thread.num_responses == 0

            res = api.ListDiscussions(
                communities_pb2.ListDiscussionsReq(
                    community_id=w_id,
                    page_token=res.next_page_token,
                    page_size=2,
                ))
            assert [d.title for d in res.discussions] == [
                "Discussion title 3",
                "Discussion title 2",
            ]
            for d in res.discussions:
                assert d.thread.thread_id > 0
                assert d.thread.num_responses == 0

            res = api.ListDiscussions(
                communities_pb2.ListDiscussionsReq(
                    community_id=w_id,
                    page_token=res.next_page_token,
                    page_size=2,
                ))
            assert [d.title for d in res.discussions] == [
                "Discussion title 1",
            ]
            for d in res.discussions:
                assert d.thread.thread_id > 0
                assert d.thread.num_responses == 0

            res = api.ListDiscussions(
                communities_pb2.ListDiscussionsReq(community_id=c1r1c2_id, ))
            assert [d.title for d in res.discussions] == [
                "Discussion title 7",
            ]
            for d in res.discussions:
                assert d.thread.thread_id > 0
                assert d.thread.num_responses == 0
Ejemplo n.º 7
0
    def test_ListGroups(testing_communities):
        with session_scope() as session:
            user1_id, token1 = get_user_id_and_token(session, "user1")
            user5_id, token5 = get_user_id_and_token(session, "user5")
            w_id = get_community_id(session, "Global")
            hitchhikers_id = get_group_id(session, "Hitchhikers")
            c1r1_id = get_community_id(session, "Country 1, Region 1")
            foodies_id = get_group_id(session, "Country 1, Region 1, Foodies")
            skaters_id = get_group_id(session, "Country 1, Region 1, Skaters")

        with communities_session(token1) as api:
            res = api.ListGroups(
                communities_pb2.ListGroupsReq(community_id=c1r1_id, ))
            assert [g.group_id for g in res.groups] == [foodies_id, skaters_id]

        with communities_session(token5) as api:
            res = api.ListGroups(
                communities_pb2.ListGroupsReq(community_id=w_id, ))
            assert len(res.groups) == 1
            assert res.groups[0].group_id == hitchhikers_id
Ejemplo n.º 8
0
    def test_ListCommunities(testing_communities):
        with session_scope() as session:
            user1_id, token1 = get_user_id_and_token(session, "user1")
            c1_id = get_community_id(session, "Country 1")
            c1r1_id = get_community_id(session, "Country 1, Region 1")
            c1r2_id = get_community_id(session, "Country 1, Region 2")

        with communities_session(token1) as api:
            res = api.ListCommunities(
                communities_pb2.ListCommunitiesReq(community_id=c1_id, ))
            assert [c.community_id
                    for c in res.communities] == [c1r1_id, c1r2_id]
Ejemplo n.º 9
0
def test_JoinGroup_and_LeaveGroup(testing_communities):
    # these tests are separate from above as they mutate the database
    with session_scope() as session:
        user_id, token = get_user_id_and_token(session, "user3")
        h_id = get_group_id(session, "Hitchhikers")

    with groups_session(token) as api:
        # not in group at start
        assert not api.GetGroup(groups_pb2.GetGroupReq(group_id=h_id)).member

        # can't leave
        with pytest.raises(grpc.RpcError) as e:
            res = api.LeaveGroup(groups_pb2.LeaveGroupReq(group_id=h_id, ))
        assert e.value.code() == grpc.StatusCode.FAILED_PRECONDITION
        assert e.value.details() == errors.NOT_IN_GROUP

        # didn't magically join
        assert not api.GetGroup(groups_pb2.GetGroupReq(group_id=h_id)).member

        # but can join
        res = api.JoinGroup(groups_pb2.JoinGroupReq(group_id=h_id, ))

        # should be there now
        assert api.GetGroup(groups_pb2.GetGroupReq(group_id=h_id)).member

        # can't join again
        with pytest.raises(grpc.RpcError) as e:
            res = api.JoinGroup(groups_pb2.JoinGroupReq(group_id=h_id, ))
        assert e.value.code() == grpc.StatusCode.FAILED_PRECONDITION
        assert e.value.details() == errors.ALREADY_IN_GROUP

        # didn't magically leave
        assert api.GetGroup(groups_pb2.GetGroupReq(group_id=h_id)).member

        # now we can leave though
        res = api.LeaveGroup(groups_pb2.LeaveGroupReq(group_id=h_id, ))

        # managed to leave
        assert not api.GetGroup(groups_pb2.GetGroupReq(group_id=h_id)).member
Ejemplo n.º 10
0
    def test_ListEvents(testing_communities):
        with session_scope() as session:
            user7_id, token7 = get_user_id_and_token(session, "user7")
            hitchhikers_id = get_group_id(session, "Hitchhikers")

        with groups_session(token7) as api:
            res = api.ListEvents(
                groups_pb2.ListEventsReq(
                    group_id=hitchhikers_id,
                    page_size=3,
                ))
            assert [d.title for d in res.events] == [
                "Event title 7",
                "Event title 8",
                "Event title 9",
            ]

            res = api.ListEvents(
                groups_pb2.ListEventsReq(
                    group_id=hitchhikers_id,
                    page_token=res.next_page_token,
                    page_size=2,
                ))
            assert [d.title for d in res.events] == [
                "Event title 10",
                "Event title 11",
            ]

            res = api.ListEvents(
                groups_pb2.ListEventsReq(
                    group_id=hitchhikers_id,
                    page_token=res.next_page_token,
                    page_size=2,
                ))
            assert [d.title for d in res.events] == [
                "Event title 12",
            ]
            assert not res.next_page_token
Ejemplo n.º 11
0
    def test_ListEvents(testing_communities):
        with session_scope() as session:
            user1_id, token1 = get_user_id_and_token(session, "user1")
            c1_id = get_community_id(session, "Country 1")

        with communities_session(token1) as api:
            res = api.ListEvents(
                communities_pb2.ListEventsReq(
                    community_id=c1_id,
                    page_size=3,
                ))
            assert [d.title for d in res.events] == [
                "Event title 1",
                "Event title 2",
                "Event title 3",
            ]

            res = api.ListEvents(
                communities_pb2.ListEventsReq(
                    community_id=c1_id,
                    page_token=res.next_page_token,
                    page_size=2,
                ))
            assert [d.title for d in res.events] == [
                "Event title 4",
                "Event title 5",
            ]

            res = api.ListEvents(
                communities_pb2.ListEventsReq(
                    community_id=c1_id,
                    page_token=res.next_page_token,
                    page_size=2,
                ))
            assert [d.title for d in res.events] == [
                "Event title 6",
            ]
            assert not res.next_page_token
Ejemplo n.º 12
0
    def test_ListCommunities_all(testing_communities):
        with session_scope() as session:
            user1_id, token1 = get_user_id_and_token(session, "user1")
            w_id = get_community_id(session, "Global")
            c1_id = get_community_id(session, "Country 1")
            c1r1_id = get_community_id(session, "Country 1, Region 1")
            c1r1c1_id = get_community_id(session,
                                         "Country 1, Region 1, City 1")
            c1r1c2_id = get_community_id(session,
                                         "Country 1, Region 1, City 2")
            c1r2_id = get_community_id(session, "Country 1, Region 2")
            c1r2c1_id = get_community_id(session,
                                         "Country 1, Region 2, City 1")
            c2_id = get_community_id(session, "Country 2")
            c2r1_id = get_community_id(session, "Country 2, Region 1")
            c2r1c1_id = get_community_id(session,
                                         "Country 2, Region 1, City 1")

        with communities_session(token1) as api:
            res = api.ListCommunities(
                communities_pb2.ListCommunitiesReq(page_size=5, ))
            assert [c.community_id for c in res.communities
                    ] == [w_id, c1_id, c1r1_id, c1r1c1_id, c1r1c2_id]
            res = api.ListCommunities(
                communities_pb2.ListCommunitiesReq(
                    page_size=2,
                    page_token=res.next_page_token,
                ))
            assert [c.community_id
                    for c in res.communities] == [c1r2_id, c1r2c1_id]
            res = api.ListCommunities(
                communities_pb2.ListCommunitiesReq(
                    page_size=5,
                    page_token=res.next_page_token,
                ))
            assert [c.community_id
                    for c in res.communities] == [c2_id, c2r1_id, c2r1c1_id]
Ejemplo n.º 13
0
    def test_GetGroup(testing_communities):
        # implicitly tests visibility and blocking, since all groups have invisible, blocked, and blocking member and admin
        with session_scope() as session:
            user2_id, token2 = get_user_id_and_token(session, "user2")
            w_id = get_community_id(session, "Global")
            c1_id = get_community_id(session, "Country 1")
            c2_id = get_community_id(session, "Country 2")
            c1r2_id = get_community_id(session, "Country 1, Region 2")
            c2r1_id = get_community_id(session, "Country 2, Region 1")
            hitchhikers_id = get_group_id(session, "Hitchhikers")
            c1r2foodies_id = get_group_id(session,
                                          "Country 1, Region 2, Foodies")
            c2r1foodies_id = get_group_id(session,
                                          "Country 2, Region 1, Foodies")

        with groups_session(token2) as api:
            res = api.GetGroup(
                groups_pb2.GetGroupReq(group_id=hitchhikers_id, ))
            assert res.group_id == hitchhikers_id
            assert res.name == "Hitchhikers"
            assert res.slug == "hitchhikers"
            assert res.description == "Description for Hitchhikers"
            assert len(res.parents) == 2
            assert res.parents[0].HasField("community")
            assert res.parents[0].community.community_id == w_id
            assert res.parents[0].community.name == "Global"
            assert res.parents[0].community.slug == "global"
            assert res.parents[
                0].community.description == "Description for Global"
            assert res.parents[1].HasField("group")
            assert res.parents[1].group.group_id == hitchhikers_id
            assert res.parents[1].group.name == "Hitchhikers"
            assert res.parents[1].group.slug == "hitchhikers"
            assert res.parents[
                1].group.description == "Description for Hitchhikers"
            assert res.main_page.type == pages_pb2.PAGE_TYPE_MAIN_PAGE
            assert res.main_page.slug == "main-page-for-the-hitchhikers-community"
            assert res.main_page.last_editor_user_id == 1
            assert res.main_page.creator_user_id == 1
            assert res.main_page.owner_group_id == hitchhikers_id
            assert res.main_page.title == "Main page for the Hitchhikers community"
            assert res.main_page.content == "There is nothing here yet..."
            assert res.main_page.can_edit
            assert not res.main_page.can_moderate
            assert res.main_page.editor_user_ids == [1]
            assert res.member
            assert res.admin
            assert res.member_count == 4
            assert res.admin_count == 2

            res = api.GetGroup(
                groups_pb2.GetGroupReq(group_id=c1r2foodies_id, ))
            assert res.group_id == c1r2foodies_id
            assert res.name == "Country 1, Region 2, Foodies"
            assert res.slug == "country-1-region-2-foodies"
            assert res.description == "Description for Country 1, Region 2, Foodies"
            assert len(res.parents) == 4
            assert res.parents[0].HasField("community")
            assert res.parents[0].community.community_id == w_id
            assert res.parents[0].community.name == "Global"
            assert res.parents[0].community.slug == "global"
            assert res.parents[
                0].community.description == "Description for Global"
            assert res.parents[1].HasField("community")
            assert res.parents[1].community.community_id == c1_id
            assert res.parents[1].community.name == "Country 1"
            assert res.parents[1].community.slug == "country-1"
            assert res.parents[
                1].community.description == "Description for Country 1"
            assert res.parents[2].HasField("community")
            assert res.parents[2].community.community_id == c1r2_id
            assert res.parents[2].community.name == "Country 1, Region 2"
            assert res.parents[2].community.slug == "country-1-region-2"
            assert res.parents[
                2].community.description == "Description for Country 1, Region 2"
            assert res.parents[3].HasField("group")
            assert res.parents[3].group.group_id == c1r2foodies_id
            assert res.parents[3].group.name == "Country 1, Region 2, Foodies"
            assert res.parents[3].group.slug == "country-1-region-2-foodies"
            assert res.parents[
                3].group.description == "Description for Country 1, Region 2, Foodies"
            assert res.main_page.type == pages_pb2.PAGE_TYPE_MAIN_PAGE
            assert res.main_page.slug == "main-page-for-the-country-1-region-2-foodies-community"
            assert res.main_page.last_editor_user_id == 2
            assert res.main_page.creator_user_id == 2
            assert res.main_page.owner_group_id == c1r2foodies_id
            assert res.main_page.title == "Main page for the Country 1, Region 2, Foodies community"
            assert res.main_page.content == "There is nothing here yet..."
            assert res.main_page.can_edit
            assert res.main_page.can_moderate
            assert res.main_page.editor_user_ids == [2]
            assert res.member
            assert res.admin
            assert res.member_count == 3
            assert res.admin_count == 1

            res = api.GetGroup(
                groups_pb2.GetGroupReq(group_id=c2r1foodies_id, ))
            assert res.group_id == c2r1foodies_id
            assert res.name == "Country 2, Region 1, Foodies"
            assert res.slug == "country-2-region-1-foodies"
            assert res.description == "Description for Country 2, Region 1, Foodies"
            assert len(res.parents) == 4
            assert res.parents[0].HasField("community")
            assert res.parents[0].community.community_id == w_id
            assert res.parents[0].community.name == "Global"
            assert res.parents[0].community.slug == "global"
            assert res.parents[
                0].community.description == "Description for Global"
            assert res.parents[1].HasField("community")
            assert res.parents[1].community.community_id == c2_id
            assert res.parents[1].community.name == "Country 2"
            assert res.parents[1].community.slug == "country-2"
            assert res.parents[
                1].community.description == "Description for Country 2"
            assert res.parents[2].HasField("community")
            assert res.parents[2].community.community_id == c2r1_id
            assert res.parents[2].community.name == "Country 2, Region 1"
            assert res.parents[2].community.slug == "country-2-region-1"
            assert res.parents[
                2].community.description == "Description for Country 2, Region 1"
            assert res.parents[3].HasField("group")
            assert res.parents[3].group.group_id == c2r1foodies_id
            assert res.parents[3].group.name == "Country 2, Region 1, Foodies"
            assert res.parents[3].group.slug == "country-2-region-1-foodies"
            assert res.parents[
                3].group.description == "Description for Country 2, Region 1, Foodies"
            assert res.main_page.type == pages_pb2.PAGE_TYPE_MAIN_PAGE
            assert res.main_page.slug == "main-page-for-the-country-2-region-1-foodies-community"
            assert res.main_page.last_editor_user_id == 6
            assert res.main_page.creator_user_id == 6
            assert res.main_page.owner_group_id == c2r1foodies_id
            assert res.main_page.title == "Main page for the Country 2, Region 1, Foodies community"
            assert res.main_page.content == "There is nothing here yet..."
            assert not res.main_page.can_edit
            assert not res.main_page.can_moderate
            assert res.main_page.editor_user_ids == [6]
            assert not res.member
            assert not res.admin
            assert res.member_count == 2
            assert res.admin_count == 1
Ejemplo n.º 14
0
def test_JoinCommunity_and_LeaveCommunity(testing_communities):
    # these are separate as they mutate the database
    with session_scope() as session:
        # at x=1, inside c1 (country 1)
        user1_id, token1 = get_user_id_and_token(session, "user1")
        # at x=51, not inside c1
        user8_id, token8 = get_user_id_and_token(session, "user8")
        c1_id = get_community_id(session, "Country 1")

    with communities_session(token1) as api:
        assert api.GetCommunity(
            communities_pb2.GetCommunityReq(community_id=c1_id)).member

        # user1 is already part of c1, cannot join
        with pytest.raises(grpc.RpcError) as e:
            res = api.JoinCommunity(
                communities_pb2.JoinCommunityReq(community_id=c1_id, ))
        assert e.value.code() == grpc.StatusCode.FAILED_PRECONDITION
        assert e.value.details() == errors.ALREADY_IN_COMMUNITY

        assert api.GetCommunity(
            communities_pb2.GetCommunityReq(community_id=c1_id)).member

        # user1 is inside c1, cannot leave
        with pytest.raises(grpc.RpcError) as e:
            res = api.LeaveCommunity(
                communities_pb2.LeaveCommunityReq(community_id=c1_id, ))
        assert e.value.code() == grpc.StatusCode.FAILED_PRECONDITION
        assert e.value.details() == errors.CANNOT_LEAVE_CONTAINING_COMMUNITY

        assert api.GetCommunity(
            communities_pb2.GetCommunityReq(community_id=c1_id)).member

    with communities_session(token8) as api:
        assert not api.GetCommunity(
            communities_pb2.GetCommunityReq(community_id=c1_id)).member

        # user8 is not in c1 yet, cannot leave
        with pytest.raises(grpc.RpcError) as e:
            res = api.LeaveCommunity(
                communities_pb2.LeaveCommunityReq(community_id=c1_id, ))
        assert e.value.code() == grpc.StatusCode.FAILED_PRECONDITION
        assert e.value.details() == errors.NOT_IN_COMMUNITY

        assert not api.GetCommunity(
            communities_pb2.GetCommunityReq(community_id=c1_id)).member

        # user8 is not in c1 and not part, can join
        res = api.JoinCommunity(
            communities_pb2.JoinCommunityReq(community_id=c1_id, ))

        assert api.GetCommunity(
            communities_pb2.GetCommunityReq(community_id=c1_id)).member

        # user8 is not in c1 and but now part, can't join again
        with pytest.raises(grpc.RpcError) as e:
            res = api.JoinCommunity(
                communities_pb2.JoinCommunityReq(community_id=c1_id, ))
        assert e.value.code() == grpc.StatusCode.FAILED_PRECONDITION
        assert e.value.details() == errors.ALREADY_IN_COMMUNITY

        assert api.GetCommunity(
            communities_pb2.GetCommunityReq(community_id=c1_id)).member

        # user8 is not in c1 yet, but part of it, can leave
        res = api.LeaveCommunity(
            communities_pb2.LeaveCommunityReq(community_id=c1_id, ))
        assert not api.GetCommunity(
            communities_pb2.GetCommunityReq(community_id=c1_id)).member
Ejemplo n.º 15
0
    def test_GetCommunity(testing_communities):
        with session_scope() as session:
            user2_id, token2 = get_user_id_and_token(session, "user2")
            w_id = get_community_id(session, "Global")
            c1_id = get_community_id(session, "Country 1")
            c1r1_id = get_community_id(session, "Country 1, Region 1")
            c1r1c1_id = get_community_id(session,
                                         "Country 1, Region 1, City 1")
            c2_id = get_community_id(session, "Country 2")

        with communities_session(token2) as api:
            res = api.GetCommunity(
                communities_pb2.GetCommunityReq(community_id=w_id, ))
            assert res.name == "Global"
            assert res.slug == "global"
            assert res.description == "Description for Global"
            assert len(res.parents) == 1
            assert res.parents[0].HasField("community")
            assert res.parents[0].community.community_id == w_id
            assert res.parents[0].community.name == "Global"
            assert res.parents[0].community.slug == "global"
            assert res.parents[
                0].community.description == "Description for Global"
            assert res.main_page.type == pages_pb2.PAGE_TYPE_MAIN_PAGE
            assert res.main_page.slug == "main-page-for-the-global-community"
            assert res.main_page.last_editor_user_id == 1
            assert res.main_page.creator_user_id == 1
            assert res.main_page.owner_community_id == w_id
            assert res.main_page.title == "Main page for the Global community"
            assert res.main_page.content == "There is nothing here yet..."
            assert not res.main_page.can_edit
            assert not res.main_page.can_moderate
            assert res.main_page.editor_user_ids == [1]
            assert res.member
            assert not res.admin
            assert res.member_count == 8
            assert res.admin_count == 3

            res = api.GetCommunity(
                communities_pb2.GetCommunityReq(community_id=c1r1c1_id, ))
            assert res.community_id == c1r1c1_id
            assert res.name == "Country 1, Region 1, City 1"
            assert res.slug == "country-1-region-1-city-1"
            assert res.description == "Description for Country 1, Region 1, City 1"
            assert len(res.parents) == 4
            assert res.parents[0].HasField("community")
            assert res.parents[0].community.community_id == w_id
            assert res.parents[0].community.name == "Global"
            assert res.parents[0].community.slug == "global"
            assert res.parents[
                0].community.description == "Description for Global"
            assert res.parents[1].HasField("community")
            assert res.parents[1].community.community_id == c1_id
            assert res.parents[1].community.name == "Country 1"
            assert res.parents[1].community.slug == "country-1"
            assert res.parents[
                1].community.description == "Description for Country 1"
            assert res.parents[2].HasField("community")
            assert res.parents[2].community.community_id == c1r1_id
            assert res.parents[2].community.name == "Country 1, Region 1"
            assert res.parents[2].community.slug == "country-1-region-1"
            assert res.parents[
                2].community.description == "Description for Country 1, Region 1"
            assert res.parents[3].HasField("community")
            assert res.parents[3].community.community_id == c1r1c1_id
            assert res.parents[
                3].community.name == "Country 1, Region 1, City 1"
            assert res.parents[3].community.slug == "country-1-region-1-city-1"
            assert res.parents[
                3].community.description == "Description for Country 1, Region 1, City 1"
            assert res.main_page.type == pages_pb2.PAGE_TYPE_MAIN_PAGE
            assert res.main_page.slug == "main-page-for-the-country-1-region-1-city-1-community"
            assert res.main_page.last_editor_user_id == 2
            assert res.main_page.creator_user_id == 2
            assert res.main_page.owner_community_id == c1r1c1_id
            assert res.main_page.title == "Main page for the Country 1, Region 1, City 1 community"
            assert res.main_page.content == "There is nothing here yet..."
            assert res.main_page.can_edit
            assert res.main_page.can_moderate
            assert res.main_page.editor_user_ids == [2]
            assert res.member
            assert res.admin
            assert res.member_count == 3
            assert res.admin_count == 1

            res = api.GetCommunity(
                communities_pb2.GetCommunityReq(community_id=c2_id, ))
            assert res.community_id == c2_id
            assert res.name == "Country 2"
            assert res.slug == "country-2"
            assert res.description == "Description for Country 2"
            assert len(res.parents) == 2
            assert res.parents[0].HasField("community")
            assert res.parents[0].community.community_id == w_id
            assert res.parents[0].community.name == "Global"
            assert res.parents[0].community.slug == "global"
            assert res.parents[
                0].community.description == "Description for Global"
            assert res.parents[1].HasField("community")
            assert res.parents[1].community.community_id == c2_id
            assert res.parents[1].community.name == "Country 2"
            assert res.parents[1].community.slug == "country-2"
            assert res.parents[
                1].community.description == "Description for Country 2"
            assert res.main_page.type == pages_pb2.PAGE_TYPE_MAIN_PAGE
            assert res.main_page.slug == "main-page-for-the-country-2-community"
            assert res.main_page.last_editor_user_id == 6
            assert res.main_page.creator_user_id == 6
            assert res.main_page.owner_community_id == c2_id
            assert res.main_page.title == "Main page for the Country 2 community"
            assert res.main_page.content == "There is nothing here yet..."
            assert not res.main_page.can_edit
            assert not res.main_page.can_moderate
            assert res.main_page.editor_user_ids == [6]
            assert not res.member
            assert not res.admin
            assert res.member_count == 2
            assert res.admin_count == 2