예제 #1
0
def login(user: User, server: FlaskClient) -> Generator[None, None, None]:
    """Perform server actions under a user login."""

    # To create a user login token, we need the app context, since the encoding
    # function uses flask_secret_key
    with server.application.app_context():
        login_token_str = encode_auth_token(create_login_token(user.multinet.session))

    # This function technically requires a domain, so we set it to empty string
    server.set_cookie("", MULTINET_LOGIN_TOKEN, login_token_str)

    yield None

    server.delete_cookie("", MULTINET_LOGIN_TOKEN)
예제 #2
0
    def test_other_field(self, client: FlaskClient) -> None:

        file_content: str = "Hello Word!"

        f1 = NamedTemporaryFile(delete=True)
        file_name: str = f1.name
        f1.write(file_content.encode())
        f1.seek(0)
        f2 = NamedTemporaryFile(delete=True)
        f2.name = file_name  # type: ignore
        f2.write(file_content.encode())
        f2.seek(0)

        flask_test_helper: FlaskTestHelper[Response] = FlaskTestHelper(
            client,
            other_field_route,
            file_dict={"upload_file": f1},
            form_dict={
                "a": "1",
                "b": "2",
                "c": "3"
            })

        client.set_cookie("localhost", "abcd", "abcd")
        for resp in [
                flask_test_helper.post().get_json(),
                client.post("/api/other_field",
                            data={
                                "a": "1",
                                "b": "2",
                                "upload_file": f2,
                                "c": "3"
                            }).get_json(),
        ]:
            assert {
                "filename": file_name,
                "content": file_content,
                "form_a": "1",
                "form_b": "2",
                "form_c": ["3"],
                "cookie": {
                    "abcd": "abcd"
                },
            } == resp["data"]
예제 #3
0
def test_token_refresh(client: FlaskClient):
    u = utils.user.lazy_signup()
    # test token can correctly work
    client.set_cookie('test.test', 'piann', u.secret)
    rv = client.post('/auth/check/token')
    assert rv.status_code == 200
    # make an invalid token
    token = jwt_decode(u.secret)
    token['data']['_id'] = 'n0t_A_Valid_1d'
    token = jwt.encode(
        token,
        key=b'An0ther53cretKeY',
    )
    # refresh token
    client.set_cookie('test.test', 'piann', token)
    rv = client.post(
        '/auth/check/token',
        follow_redirects=True,
    )
    rv_json = rv.get_json()
    assert rv.status_code == 200, rv_json
    assert rv_json['message'] == 'Goodbye'