예제 #1
0
def test_require_clickthru(tmpdir: LocalPath, setup: SetupTest,
                           browser: Chrome) -> None:
    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups"))
        groups_page = GroupsViewPage(browser)

        groups_page.click_create_group_button()
        create_group_modal = groups_page.get_create_group_modal()
        create_group_modal.set_group_name("test-group")
        create_group_modal.set_join_policy(GroupJoinPolicy.CAN_JOIN)
        create_group_modal.click_require_clickthru_checkbox()
        create_group_modal.confirm()

    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups/test-group/join"))
        join_page = GroupJoinPage(browser)

        join_page.set_reason("Testing")
        join_page.submit()
        clickthru_modal = join_page.get_clickthru_modal()
        clickthru_modal.confirm()

        group_page = GroupViewPage(browser)
        assert group_page.current_url.endswith(
            "/groups/test-group?refresh=yes")
        assert group_page.find_member_row("*****@*****.**")
예제 #2
0
def test_require_clickthru(tmpdir, setup, browser):
    # type: (LocalPath, SetupTest, Chrome) -> None
    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups"))
        groups_page = GroupsViewPage(browser)

        groups_page.click_create_group_button()
        create_group_modal = groups_page.get_create_group_modal()
        create_group_modal.set_group_name("test-group")
        create_group_modal.set_join_policy(GroupJoinPolicy.CAN_JOIN)
        create_group_modal.click_require_clickthru_checkbox()
        create_group_modal.confirm()

    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups/test-group/join"))
        join_page = GroupJoinPage(browser)

        join_page.set_reason("Testing")
        join_page.submit()
        clickthru_modal = join_page.get_clickthru_modal()
        clickthru_modal.confirm()

        group_page = GroupViewPage(browser)
        assert group_page.current_url.endswith("/groups/test-group?refresh=yes")
        assert group_page.find_member_row("*****@*****.**")
예제 #3
0
def test_request_options(tmpdir: LocalPath, setup: SetupTest,
                         browser: Chrome) -> None:
    with setup.transaction():
        setup.add_user_to_group("*****@*****.**", "some-group", role="owner")
        setup.create_group("other-group")

    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups/other-group/join"))
        page = GroupJoinPage(browser)

        options = [o.get_attribute("value") for o in page.get_member_options()]
        assert options == ["User: [email protected]", "Group: some-group"]

        page.set_reason("Testing")
        page.submit()

        # Now that there is a pending request, the first option should be blank and there should be
        # a notice saying that there is already a pending membership request.
        browser.get(url(frontend_url, "/groups/other-group/join"))
        options = [o.get_attribute("value") for o in page.get_member_options()]
        assert options == ["", "Group: some-group"]
        alerts = page.get_alerts()
        assert len(alerts) == 1
        assert "already a member" in alerts[0].text

        # Attempting to submit the form should fail, asking the user to select a value.
        page.set_reason("Testing")
        page.submit()
        assert page.current_url == url(frontend_url,
                                       "/groups/other-group/join")
예제 #4
0
def test_request_join_unicode(tmpdir: LocalPath, setup: SetupTest,
                              browser: Chrome) -> None:
    with setup.transaction():
        setup.add_user_to_group("*****@*****.**", "some-group", "owner")

    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups/some-group/join"))
        page = GroupJoinPage(browser)

        page.set_reason("защото причини")
        page.submit()

        assert browser.current_url.endswith("/groups/some-group?refresh=yes")
예제 #5
0
def test_request_already_member(tmpdir: LocalPath, setup: SetupTest,
                                browser: Chrome) -> None:
    with setup.transaction():
        setup.add_user_to_group("*****@*****.**", "some-group", role="owner")
        setup.add_group_to_group("some-group", "other-group")
        setup.add_user_to_group("*****@*****.**", "other-group")

    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups/other-group/join"))
        page = GroupJoinPage(browser)

        alerts = page.get_alerts()
        assert len(alerts) == 1
        assert "You and all groups" in alerts[0].text
        with pytest.raises(NoSuchElementException):
            page.set_reason("Testing")
예제 #6
0
def test_group_join_as_owner(tmpdir: LocalPath, setup: SetupTest,
                             browser: Chrome) -> None:
    with setup.transaction():
        setup.create_group("some-group", join_policy=GroupJoinPolicy.CAN_JOIN)

    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups/some-group/join"))
        join_page = GroupJoinPage(browser)

        join_page.set_role("Owner")
        join_page.set_reason("Testing")
        join_page.submit()

        view_page = GroupViewPage(browser)
        with pytest.raises(NoSuchElementException):
            view_page.find_member_row("*****@*****.**")
예제 #7
0
def test_group_join_group(tmpdir: LocalPath, setup: SetupTest,
                          browser: Chrome) -> None:
    with setup.transaction():
        setup.add_user_to_group("*****@*****.**", "some-group", "owner")
        setup.create_group("parent-group",
                           join_policy=GroupJoinPolicy.CAN_JOIN)

    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups/parent-group/join"))
        join_page = GroupJoinPage(browser)

        join_page.set_member("some-group")
        join_page.set_reason("Testing")
        join_page.submit()

        group_page = GroupViewPage(browser)
        assert group_page.find_member_row("some-group")
예제 #8
0
def test_group_join_group_as_owner(tmpdir: LocalPath, setup: SetupTest,
                                   browser: Chrome) -> None:
    with setup.transaction():
        setup.add_user_to_group("*****@*****.**", "some-group", "owner")
        setup.create_group("parent-group",
                           join_policy=GroupJoinPolicy.CAN_JOIN)

    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups/parent-group/join"))
        join_page = GroupJoinPage(browser)

        join_page.set_member("some-group")
        join_page.set_reason("Testing")
        for role in ("Manager", "Owner", "Np-Owner"):
            join_page.set_role(role)
            join_page.submit()
            assert join_page.has_alert(
                "Groups can only have the role of 'member'")
예제 #9
0
def test_request_to_join_group(async_server, browser):  # noqa: F811
    fe_url = url(async_server, "/groups/sad-team/join")
    browser.get(fe_url)

    page = GroupJoinPage(browser)

    page.set_reason("Testing")
    page.set_expiration("12/31/2999")
    page.submit()

    fe_url = url(async_server, "/groups/sad-team/requests")
    browser.get(fe_url)

    page = GroupRequestsPage(browser)

    request_row = page.find_request_row("User: [email protected]")
    assert request_row.requester == "*****@*****.**"
    assert request_row.status == "pending"
    assert request_row.expiration == "12/31/2999"
    assert request_row.role == "member"
    assert request_row.reason == "Testing"
예제 #10
0
def test_request_to_join_group(async_server, browser):  # noqa: F811
    fe_url = url(async_server, "/groups/sad-team/join")
    browser.get(fe_url)

    page = GroupJoinPage(browser)

    page.set_reason("Testing")
    page.set_expiration("12/31/2999")
    page.submit()

    fe_url = url(async_server, "/groups/sad-team/requests")
    browser.get(fe_url)

    page = GroupRequestsPage(browser)

    request_row = page.find_request_row("User: [email protected]")
    assert request_row.requester == "*****@*****.**"
    assert request_row.status == "pending"
    assert request_row.expiration == "12/31/2999"
    assert request_row.role == "member"
    assert request_row.reason == "Testing"
예제 #11
0
def test_request_to_join_group(tmpdir: LocalPath, setup: SetupTest,
                               browser: Chrome) -> None:
    with setup.transaction():
        setup.add_user_to_group("*****@*****.**", "sad-team", role="owner")
        setup.create_user("*****@*****.**")

    with frontend_server(tmpdir, "*****@*****.**") as frontend_url:
        browser.get(url(frontend_url, "/groups/sad-team/join"))
        join_page = GroupJoinPage(browser)

        join_page.set_reason("Testing")
        join_page.set_expiration("12/31/2999")
        join_page.submit()

        browser.get(url(frontend_url, "/groups/sad-team/requests"))
        page = GroupRequestsPage(browser)

        request_row = page.find_request_row("User: [email protected]")
        assert request_row.requester == "*****@*****.**"
        assert request_row.status == "pending"
        assert request_row.expiration == "12/31/2999"
        assert request_row.role == "member"
        assert request_row.reason == "Testing"