I have a fastapi project using supertokens-python with the following init configuration:
init(
app_info=InputAppInfo(
app_name=APP_NAME,
api_domain=API_DOMAIN,
website_domain=WEBSITE_DOMAIN,
api_base_path=API_BASE_PATH,
website_base_path=WEBSITE_BASE_PATH,
),
supertokens_config=SupertokensConfig(
connection_uri=SUPERTOKENS_CONNECTION_URL
),
framework="fastapi",
recipe_list=[
session.init(
jwt=session.JWTConfig(enable=True),
),
passwordless.init(
flow_type="MAGIC_LINK",
contact_config=ContactEmailOnlyConfig(
create_and_send_custom_email=login_flow
),
),
thirdparty.init(
override=thirdparty.InputOverrideConfig(apis=override_thirdparty_apis),
sign_in_and_up_feature=thirdparty.SignInAndUpFeature(
providers=[
Google(
client_id=GOOGLE_CLIENT_ID,
client_secret=GOOGLE_CLIENT_SECRET,
),
Github(
client_id=GITHUB_CLIENT_ID,
client_secret=GITHUB_CLIENT_SECRET,
),
Apple(
client_id=APPLE_CLIENT_ID,
client_key_id=APPLE_CLIENT_KEY_ID,
client_private_key=APPLE_CLIENT_PRIVATE_KEY,
client_team_id=APPLE_CLIENT_TEAM_ID,
),
Facebook(
client_id=FACEBOOK_CLIENT_ID,
client_secret=FACEBOOK_CLIENT_SECRET,
),
]
),
),
],
mode="asgi", # use wsgi if you are running using gunicorn
telemetry=False,
)
I have some integration tests for the passwordless login flow that are working normally with that configuration.
session.init(
override=session.InputOverrideConfig(functions=override_functions),
jwt=session.JWTConfig(enable=True),
),
Now the integration test for the passwordless flow fails when trying to consume the created code (POSTing to /api/signinup/code/consume
) with a 500. I even tried using an empty override implementation as it follows but it still returns the 500:
from supertokens_python import init, InputAppInfo
from supertokens_python.recipe.session.interfaces import RecipeInterface
from supertokens_python.recipe import session
from typing import Union, Dict, Any
def override_functions(original_implementation: RecipeInterface):
original_implementation_create_new_session = original_implementation.create_new_session
async def create_new_session(request: Any, user_id: str,
access_token_payload: Union[None, Dict[str, Any]],
session_data: Union[None, Dict[str, Any]], user_context: Dict[str, Any]):
return await original_implementation_create_new_session(request, user_id, access_token_payload, session_data, user_context)
original_implementation.create_new_session = create_new_session
return original_implementation