mirror of
https://github.com/facefusion/facefusion.git
synced 2026-09-15 20:15:28 +02:00
fix bug for sessions without assets (#1234)
This commit is contained in:
@@ -7,7 +7,7 @@ from starlette.status import HTTP_200_OK, HTTP_201_CREATED, HTTP_401_UNAUTHORIZE
|
||||
from facefusion import session_context, session_manager, state_manager, translator
|
||||
from facefusion.apis import asset_store
|
||||
from facefusion.apis.session_helper import extract_access_token, validate_api_key
|
||||
from facefusion.filesystem import remove_directory
|
||||
from facefusion.filesystem import is_directory, remove_directory
|
||||
|
||||
|
||||
async def create_session(request : Request) -> JSONResponse:
|
||||
@@ -71,20 +71,21 @@ async def destroy_session(request : Request) -> JSONResponse:
|
||||
|
||||
if session_id:
|
||||
session_context.set_session_id(session_id)
|
||||
temp_path = state_manager.get_temp_path()
|
||||
|
||||
if remove_directory(state_manager.get_temp_path()):
|
||||
asset_store.delete_assets(session_id)
|
||||
session_manager.clear_session(session_id)
|
||||
|
||||
if is_directory(temp_path) and not remove_directory(temp_path):
|
||||
return JSONResponse(
|
||||
{
|
||||
'message': translator.get('ok', 'facefusion.apis')
|
||||
}, status_code = HTTP_200_OK)
|
||||
'message': translator.get('directory_not_removed', 'facefusion.apis')
|
||||
}, status_code = HTTP_404_NOT_FOUND)
|
||||
|
||||
asset_store.delete_assets(session_id)
|
||||
session_manager.clear_session(session_id)
|
||||
|
||||
return JSONResponse(
|
||||
{
|
||||
'message': translator.get('something_went_wrong', 'facefusion.apis')
|
||||
}, status_code = HTTP_404_NOT_FOUND)
|
||||
'message': translator.get('ok', 'facefusion.apis')
|
||||
}, status_code = HTTP_200_OK)
|
||||
|
||||
return JSONResponse(
|
||||
{
|
||||
|
||||
@@ -6,6 +6,7 @@ LOCALES : Locales =\
|
||||
{
|
||||
'ok': 'ok',
|
||||
'something_went_wrong': 'something went wrong',
|
||||
'directory_not_removed': 'directory not removed',
|
||||
'invalid_access_token': 'invalid access token',
|
||||
'invalid_refresh_token': 'invalid refresh token',
|
||||
'source_asset_not_found': 'source asset not found',
|
||||
|
||||
@@ -2,6 +2,7 @@ import os
|
||||
import tempfile
|
||||
from datetime import timedelta
|
||||
from typing import Iterator
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
from starlette.testclient import TestClient
|
||||
@@ -183,8 +184,28 @@ def test_destroy_session(test_client : TestClient) -> None:
|
||||
{
|
||||
'client_version': metadata.get('version')
|
||||
})
|
||||
create_session_body = create_session_response.json()
|
||||
access_token = create_session_body.get('access_token')
|
||||
access_token = create_session_response.json().get('access_token')
|
||||
|
||||
delete_session_response = test_client.delete('/session', headers =
|
||||
{
|
||||
'Authorization': 'Bearer INVALID'
|
||||
})
|
||||
|
||||
assert delete_session_response.status_code == 401
|
||||
|
||||
delete_session_response = test_client.delete('/session', headers =
|
||||
{
|
||||
'Authorization': 'Bearer ' + access_token
|
||||
})
|
||||
|
||||
assert session_manager.find_session_id(access_token) is None
|
||||
assert delete_session_response.status_code == 200
|
||||
|
||||
create_session_response = test_client.post('/session', json =
|
||||
{
|
||||
'client_version': metadata.get('version')
|
||||
})
|
||||
access_token = create_session_response.json().get('access_token')
|
||||
session_id = session_manager.find_session_id(access_token)
|
||||
source_path = get_test_example_file('source.jpg')
|
||||
|
||||
@@ -202,16 +223,19 @@ def test_destroy_session(test_client : TestClient) -> None:
|
||||
for asset in asset_store.get_assets(session_id).values():
|
||||
asset_paths.append(asset.get('path'))
|
||||
|
||||
delete_session_response = test_client.delete('/session', headers =
|
||||
{
|
||||
'Authorization': 'Bearer INVALID'
|
||||
})
|
||||
|
||||
assert delete_session_response.status_code == 401
|
||||
with patch('facefusion.apis.endpoints.session.remove_directory', return_value = False):
|
||||
delete_session_response = test_client.delete('/session', headers =
|
||||
{
|
||||
'Authorization': 'Bearer ' + access_token
|
||||
})
|
||||
|
||||
for asset_path in asset_paths:
|
||||
assert os.path.exists(asset_path) is True
|
||||
|
||||
assert delete_session_response.json().get('message') == 'directory not removed'
|
||||
assert session_manager.find_session_id(access_token) == session_id
|
||||
assert delete_session_response.status_code == 404
|
||||
|
||||
delete_session_response = test_client.delete('/session', headers =
|
||||
{
|
||||
'Authorization': 'Bearer ' + access_token
|
||||
|
||||
Reference in New Issue
Block a user