Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/fmu_settings_api/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Models used for messages and responses at API endpoints."""

from .common import AccessToken, APIKey, HealthCheck, Message, SessionResponse
from .common import AccessToken, APIKey, HealthCheck, Message
from .project import FMUDirPath, FMUProject

__all__ = [
Expand All @@ -10,5 +10,4 @@
"FMUProject",
"HealthCheck",
"Message",
"SessionResponse",
]
10 changes: 0 additions & 10 deletions src/fmu_settings_api/models/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,15 @@

from typing import Literal

from fmu.settings.models.user_config import UserConfig
from pydantic import BaseModel, SecretStr

from .project import FMUProject


class HealthCheck(BaseModel):
"""Returns "ok" if the route is functioning correctly."""

status: Literal["ok"] = "ok"


class SessionResponse(BaseModel):
"""Information returned when a session is initially created."""

user_config: UserConfig
fmu_project: FMUProject | None = None


class Message(BaseModel):
"""A generic message to return to the GUI."""

Expand Down
18 changes: 5 additions & 13 deletions src/fmu_settings_api/v1/routes/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
get_session,
verify_auth_token,
)
from fmu_settings_api.models import AccessToken, FMUProject, Message, SessionResponse
from fmu_settings_api.models import AccessToken, Message
from fmu_settings_api.session import (
add_access_token_to_session,
add_fmu_project_to_session,
Expand All @@ -29,7 +29,7 @@

@router.post(
"/",
response_model=SessionResponse,
response_model=Message,
dependencies=[Depends(verify_auth_token)],
summary="Creates a session for the user",
description=(
Expand All @@ -51,7 +51,7 @@ async def create_session(
auth_token: AuthTokenDep,
user_fmu_dir: UserFMUDirDep,
fmu_settings_session: Annotated[str | None, Cookie()] = None,
) -> SessionResponse:
) -> Message:
"""Establishes a user session."""
if fmu_settings_session:
await destroy_fmu_session(fmu_settings_session)
Expand All @@ -65,21 +65,13 @@ async def create_session(
secure=False,
samesite="lax",
)
obfuscated_user_config = user_fmu_dir.config.load().obfuscate_secrets()

session_response = SessionResponse(user_config=obfuscated_user_config)

with contextlib.suppress(FileNotFoundError):
path = Path.cwd()
project_fmu_dir = find_nearest_fmu_directory(path)
_ = await add_fmu_project_to_session(session_id, project_fmu_dir)
session_response.fmu_project = FMUProject(
path=project_fmu_dir.base_path,
project_dir_name=project_fmu_dir.base_path.name,
config=project_fmu_dir.config.load(),
)
await add_fmu_project_to_session(session_id, project_fmu_dir)

return session_response
return Message(message="Session created")
except Exception as e:
raise HTTPException(status_code=500, detail=str(e)) from e

Expand Down
19 changes: 2 additions & 17 deletions tests/test_v1/test_session.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Tests the /api/v1/session routes."""

import json
from pathlib import Path
from unittest.mock import patch

Expand All @@ -14,7 +13,6 @@

from fmu_settings_api.__main__ import app
from fmu_settings_api.config import settings
from fmu_settings_api.models import FMUProject, SessionResponse
from fmu_settings_api.session import (
ProjectSession,
Session,
Expand Down Expand Up @@ -124,10 +122,7 @@ def test_get_session_creates_user_fmu(
assert response.status_code == status.HTTP_200_OK, response.json()
# Does not raise
user_fmu_dir = UserFMUDirectory()
assert (
json.dumps(response.json(), separators=(",", ":"))
== SessionResponse(user_config=user_fmu_dir.config.load()).model_dump_json()
)
assert response.json() == {"message": "Session created"}
assert user_fmu_dir.path == user_home / ".fmu"


Expand Down Expand Up @@ -194,17 +189,7 @@ async def test_get_session_from_project_path_returns_fmu_project(
assert response.status_code == status.HTTP_200_OK, response.json()
# Does not raise
user_fmu_dir = UserFMUDirectory()
assert (
json.dumps(response.json(), separators=(",", ":"))
== SessionResponse(
user_config=user_fmu_dir.config.load(),
fmu_project=FMUProject(
path=tmp_path_mocked_home,
project_dir_name=tmp_path_mocked_home.name,
config=project_fmu_dir.config.load(),
),
).model_dump_json()
)
assert response.json() == {"message": "Session created"}
assert user_fmu_dir.path == user_fmu_dir.path

session_id = response.cookies.get(settings.SESSION_COOKIE_KEY)
Expand Down