Commit 252bbffd authored by Éloi Rivard's avatar Éloi Rivard
Browse files

Correctly use webtest

parent f5c844f5
Loading
Loading
Loading
Loading
Loading
+14 −26
Original line number Diff line number Diff line
@@ -11,17 +11,15 @@ def test_login_and_out(testclient, slapd_connection, user):
    res.form["login"] = "John Doe"
    res.form["password"] = "correct horse battery staple"
    res = res.form.submit()
    res = res.follow()
    res = res.follow()
    assert 200 == res.status_code
    res = res.follow(status=302)
    res = res.follow(status=200)

    with testclient.session_transaction() as session:
        assert user.dn == session.get("user_dn")

    res = testclient.get("/logout")
    res = res.follow()
    res = res.follow()
    assert 200 == res.status_code
    res = res.follow(status=302)
    res = res.follow(status=200)

    with testclient.session_transaction() as session:
        assert session.get("user_dn") is None
@@ -35,8 +33,7 @@ def test_login_wrong_password(testclient, slapd_connection, user):

    res.form["login"] = "John Doe"
    res.form["password"] = "incorrect horse"
    res = res.form.submit()
    assert 200 == res.status_code
    res = res.form.submit(status=200)
    assert b"Login failed, please check your information" in res.body


@@ -48,8 +45,7 @@ def test_login_no_password(testclient, slapd_connection, user):

    res.form["login"] = "John Doe"
    res.form["password"] = ""
    res = res.form.submit()
    assert 200 == res.status_code
    res = res.form.submit(status=200)
    assert b"Login failed, please check your information" in res.body


@@ -59,10 +55,8 @@ def test_login_with_alternate_attribute(testclient, slapd_connection, user):
    res.form["login"] = "user"
    res.form["password"] = "correct horse battery staple"
    res = res.form.submit()
    res = res.follow()
    assert 302 == res.status_code
    res = res.follow()
    assert 200 == res.status_code
    res = res.follow(status=302)
    res = res.follow(status=200)

    with testclient.session_transaction() as session:
        assert user.dn == session.get("user_dn")
@@ -73,8 +67,7 @@ def test_password_forgotten(SMTP, testclient, slapd_connection, user):
    res = testclient.get("/reset", status=200)

    res.form["login"] = "user"
    res = res.form.submit()
    assert 200 == res.status_code
    res = res.form.submit(status=200)
    assert "A password reset link has been sent at your email address." in res.text

    SMTP.assert_called_once_with(host="localhost", port=25)
@@ -85,8 +78,7 @@ def test_password_forgotten_invalid_form(SMTP, testclient, slapd_connection, use
    res = testclient.get("/reset", status=200)

    res.form["login"] = ""
    res = res.form.submit()
    assert 200 == res.status_code
    res = res.form.submit(status=200)
    assert "Could not send the password reset link." in res.text

    SMTP.assert_not_called()
@@ -97,8 +89,7 @@ def test_password_forgotten_invalid(SMTP, testclient, slapd_connection, user):
    res = testclient.get("/reset", status=200)

    res.form["login"] = "i-dont-really-exist"
    res = res.form.submit()
    assert 200 == res.status_code
    res = res.form.submit(status=200)
    assert "A password reset link has been sent at your email address." in res.text

    SMTP.assert_not_called()
@@ -114,11 +105,9 @@ def test_password_reset(testclient, slapd_connection, user):

    res.form["password"] = "foobarbaz"
    res.form["confirmation"] = "foobarbaz"
    res = res.form.submit()
    assert 302 == res.status_code
    res = res.form.submit(status=302)

    res = res.follow()
    assert 200 == res.status_code
    res = res.follow(status=200)

    with testclient.app.app_context():
        assert user.check_password("foobarbaz")
@@ -151,8 +140,7 @@ def test_password_reset_bad_password(testclient, slapd_connection, user):

    res.form["password"] = "foobarbaz"
    res.form["confirmation"] = "typo"
    res = res.form.submit()
    assert 200 == res.status_code
    res = res.form.submit(status=200)

    with testclient.app.app_context():
        assert user.check_password("correct horse battery staple")
+12 −22
Original line number Diff line number Diff line
@@ -17,8 +17,7 @@ def test_authorization_code_flow(testclient, slapd_connection, logged_user, clie
        status=200,
    )

    res = res.form.submit(name="answer", value="accept")
    assert 302 == res.status_code
    res = res.form.submit(name="answer", value="accept", status=302)

    assert res.location.startswith(client.oauthRedirectURIs[0])
    params = parse_qs(urlsplit(res.location).query)
@@ -63,27 +62,21 @@ def test_logout_login(testclient, slapd_connection, logged_user, client):
        status=200,
    )

    res = res.form.submit(name="answer", value="logout")
    assert 302 == res.status_code
    res = res.follow()
    assert 200 == res.status_code
    res = res.form.submit(name="answer", value="logout", status=302)
    res = res.follow(status=200)

    res.form["login"] = logged_user.name
    res.form["password"] = "wrong password"
    res = res.form.submit()
    assert 200 == res.status_code
    res = res.form.submit(status=200)
    assert b"Login failed, please check your information" in res.body

    res.form["login"] = logged_user.name
    res.form["password"] = "correct horse battery staple"
    res = res.form.submit()
    assert 302 == res.status_code
    res = res.follow()
    res = res.form.submit(status=302)
    res = res.follow(status=200)

    assert 200 == res.status_code
    res = res.form.submit(name="answer", value="accept")
    res = res.form.submit(name="answer", value="accept", status=302)

    assert 302 == res.status_code
    assert res.location.startswith(client.oauthRedirectURIs[0])
    params = parse_qs(urlsplit(res.location).query)
    code = params["code"][0]
@@ -127,8 +120,7 @@ def test_refresh_token(testclient, slapd_connection, logged_user, client):
        status=200,
    )

    res = res.form.submit(name="answer", value="accept")
    assert 302 == res.status_code
    res = res.form.submit(name="answer", value="accept", status=302)

    assert res.location.startswith(client.oauthRedirectURIs[0])
    params = parse_qs(urlsplit(res.location).query)
@@ -195,8 +187,7 @@ def test_code_challenge(testclient, slapd_connection, logged_user, client):
        status=200,
    )

    res = res.form.submit(name="answer", value="accept")
    assert 302 == res.status_code
    res = res.form.submit(name="answer", value="accept", status=302)

    assert res.location.startswith(client.oauthRedirectURIs[0])
    params = parse_qs(urlsplit(res.location).query)
@@ -249,8 +240,7 @@ def test_authorization_code_flow_when_consent_already_given(
        status=200,
    )

    res = res.form.submit(name="answer", value="accept")
    assert 302 == res.status_code
    res = res.form.submit(name="answer", value="accept", status=302)

    assert res.location.startswith(client.oauthRedirectURIs[0])
    params = parse_qs(urlsplit(res.location).query)
@@ -284,8 +274,8 @@ def test_authorization_code_flow_when_consent_already_given(
            scope="profile",
            nonce="somenonce",
        ),
        status=302,
    )
    assert 302 == res.status_code
    assert res.location.startswith(client.oauthRedirectURIs[0])
    params = parse_qs(urlsplit(res.location).query)
    assert "code" in params
@@ -307,8 +297,8 @@ def test_prompt_none(testclient, slapd_connection, logged_user, client):
            nonce="somenonce",
            prompt="none",
        ),
        status=302,
    )
    assert 302 == res.status_code
    assert res.location.startswith(client.oauthRedirectURIs[0])
    params = parse_qs(urlsplit(res.location).query)
    assert "code" in params
+3 −6
Original line number Diff line number Diff line
@@ -35,12 +35,10 @@ def test_client_add(testclient, logged_admin, slapd_connection):
    }
    for k, v in data.items():
        res.form[k] = v
    res = res.form.submit()

    assert 302 == res.status_code
    res = res.follow()
    res = res.form.submit(status=302)
    res = res.follow(status=200)

    assert 200 == res.status_code
    client_id = res.forms["readonly"]["oauthClientID"].value
    client = Client.get(client_id, conn=slapd_connection)
    for k, v in data.items():
@@ -72,9 +70,8 @@ def test_client_edit(testclient, client, logged_admin, slapd_connection):
    }
    for k, v in data.items():
        res.forms["clientadd"][k] = v
    res = res.forms["clientadd"].submit()
    res = res.forms["clientadd"].submit(status=200)

    assert 200 == res.status_code
    client.reload(conn=slapd_connection)
    for k, v in data.items():
        client_value = getattr(client, k)
+2 −4
Original line number Diff line number Diff line
@@ -9,11 +9,9 @@ def test_consent_list(
    assert client.oauthClientName in res.text
    assert not token.revoked

    res = testclient.get(f"/consent/delete/{consent.cn[0]}")
    assert 302 == res.status_code
    res = testclient.get(f"/consent/delete/{consent.cn[0]}", status=302)

    res = res.follow()
    assert 200 == res.status_code
    res = res.follow(status=200)
    assert client.oauthClientName not in res.text

    token.reload(conn=slapd_connection)
+8 −10
Original line number Diff line number Diff line
@@ -12,19 +12,18 @@ def test_oauth_hybrid(testclient, slapd_connection, user, client):
            scope="openid profile",
            nonce="somenonce",
        ),
        status=200,
    )
    assert (200, "text/html") == (res.status_code, res.content_type), res.json
    assert "text/html" == res.content_type, res.json

    res.form["login"] = user.name
    res.form["password"] = "correct horse battery staple"
    res = res.form.submit()
    assert 302 == res.status_code
    res = res.form.submit(status=302)

    res = res.follow()
    assert (200, "text/html") == (res.status_code, res.content_type), res.json
    res = res.follow(status=200)
    assert "text/html" == res.content_type, res.json

    res = res.form.submit(name="answer", value="accept")
    assert 302 == res.status_code
    res = res.form.submit(name="answer", value="accept", status=302)

    assert res.location.startswith(client.oauthRedirectURIs[0])
    params = parse_qs(urlsplit(res.location).fragment)
@@ -55,10 +54,9 @@ def test_oidc_hybrid(testclient, slapd_connection, logged_user, client, keypair)
            nonce="somenonce",
        ),
    )
    assert (200, "text/html") == (res.status_code, res.content_type), res.json
    assert "text/html" == res.content_type, res.json

    res = res.form.submit(name="answer", value="accept")
    assert 302 == res.status_code
    res = res.form.submit(name="answer", value="accept", status=302)

    assert res.location.startswith(client.oauthRedirectURIs[0])
    params = parse_qs(urlsplit(res.location).fragment)
Loading