コード例 #1
0
def test_group_remove_self(client, logged_in_dummy_user, dummy_group):
    """Test a non-sponsor user removing themselves from a group"""
    ipa_admin.group_add_member("dummy-group", users="dummy")
    result = client.get('/group/dummy-group/')
    assert result.status_code == 200
    page = BeautifulSoup(result.data, 'html.parser')
    leave_btn = page.select_one("#leave-group-btn")
    assert leave_btn.get_text(strip=True) == "Leave group"

    result = client.post('/group/dummy-group/members/remove',
                         data={"username": "******"})

    expected_message = """You got it! dummy has been removed from dummy-group.
    <span class='ml-auto' id="flashed-undo-button">
        <form action="/group/dummy-group/members/" method="post">
            <input id="username" name="username" required type="hidden" value="dummy">
            <button type="submit" class="btn btn-outline-success btn-sm"
             name="new_member_username" value="dummy">
                Undo
            </button>
        </form>
    </span>"""

    assert_redirects_with_flash(
        result,
        expected_url="/group/dummy-group/",
        expected_message=expected_message,
        expected_category="success",
    )
コード例 #2
0
ファイル: test_group.py プロジェクト: mscherer/noggin
def test_group(client, dummy_user_as_group_manager, make_user):
    """Test the group detail page: /group/<groupname>"""
    test_users = ["testuser1", "testuser2", "testuser3"]
    # Add members to the group
    for username in test_users:
        make_user(username)
    ipa_admin.group_add_member(a_cn="dummy-group", o_user=test_users)

    # Add another user, but only as a membermanager
    make_user("testuser4")
    ipa_admin.group_add_member_manager(a_cn="dummy-group", o_user=["testuser4"])

    result = client.get('/group/dummy-group/')
    assert result.status_code == 200
    page = BeautifulSoup(result.data, 'html.parser')
    assert page.title
    assert page.title.string == 'dummy-group Group - noggin'
    title = page.select_one("div[data-section='identity'] > .col > h3")
    assert title.get_text(strip=True) == "dummy-group"
    assert title.find_next_sibling("div").get_text(strip=True) == "A dummy group"
    # Check the sponsors list
    sponsors = page.select(
        "div[data-section='sponsors'] .list-unstyled.row .col-lg-3.col-md-4.col-sm-6"
    )
    assert len(sponsors) == 2, str(sponsors)
    assert sponsors[0].find("a")["href"] == "/user/dummy/"
    assert sponsors[0].find("a").get_text(strip=True) == "dummy"
    assert sponsors[1].find("a")["href"] == "/user/testuser4/"
    assert sponsors[1].find("a").get_text(strip=True) == "testuser4"
    # Check the members list
    members = page.select("div[data-section='members'] ul li")
    assert len(members) == len(test_users) + 1
    for index, username in enumerate(["dummy"] + test_users):
        assert members[index].find("a")["href"] == f"/user/{username}/"
        assert members[index].find("a").get_text(strip=True) == username
    # Current user is a sponsor, there must be the corresponding add form
    assert len(page.select("form[action='/group/dummy-group/members/']")) == 1
    assert (
        page.select_one("#group-mailinglist a").get_text(strip=True)
        == "*****@*****.**"
    )
    assert (
        page.select_one("#group-ircchannel a").get_text(strip=True)
        == "irc:///freenode.net/#dummy-group"
    )
    assert (
        page.select_one("#group-urls a").get_text(strip=True) == "http://dummygroup.org"
    )
コード例 #3
0
def test_time_sensitive_password_policy(client, dummy_user, password_min_time):
    """Verify that new password policies are upheld"""
    ipa_admin.group_add_member("dummy-group", users="dummy")
    result = client.post(
        '/password-reset?username=dummy',
        data={
            "current_password": "******",
            "password": "******",
            "password_confirm": "somesupersecretpassword",
        },
    )
    # the dummy user is created and has its password immediately changed,
    # so this next attempt should fail with a constraint error.
    assert_form_field_error(
        result,
        field_name="password",
        expected_message="Constraint violation: Too soon to change password",
    )
コード例 #4
0
def test_group_remove_member(client, dummy_user_as_group_manager, make_user):
    """Test removing a member from a group"""
    make_user("testuser")
    ipa_admin.group_add_member("dummy-group", users="testuser")
    result = client.post('/group/dummy-group/members/remove',
                         data={"username": "******"})
    expected_message = """You got it! testuser has been removed from dummy-group.
    <span class='ml-auto' id="flashed-undo-button">
        <form action="/group/dummy-group/members/" method="post">
            <input id="username" name="username" required type="hidden" value="testuser">
            <button type="submit" class="btn btn-outline-success btn-sm"
             name="new_member_username" value="testuser">
                Undo
            </button>
        </form>
    </span>"""
    assert_redirects_with_flash(
        result,
        expected_url="/group/dummy-group/",
        expected_message=expected_message,
        expected_category="success",
    )
コード例 #5
0
def dummy_user_as_group_manager(logged_in_dummy_user, dummy_group):
    """Make the dummy user a manager of the dummy-group group."""
    ipa_admin.group_add_member("dummy-group", users="dummy")
    ipa_admin.group_add_member_manager("dummy-group", users="dummy")
    yield