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)
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"]
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'