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
8 changes: 4 additions & 4 deletions state-manager/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

# injecting models
from .models.db.state import State
from .models.db.namespace import Namespace
from .models.db.graph_template_model import GraphTemplate
from .models.db.registered_node import RegisteredNode

Expand All @@ -42,7 +41,7 @@ async def lifespan(app: FastAPI):
# initializing beanie
client = AsyncMongoClient(settings.mongo_uri)
db = client[settings.mongo_database_name]
await init_beanie(db, document_models=[State, Namespace, GraphTemplate, RegisteredNode])
await init_beanie(db, document_models=[State, GraphTemplate, RegisteredNode])
logger.info("beanie dbs initialized")

# initialize secret
Expand All @@ -54,14 +53,15 @@ async def lifespan(app: FastAPI):
yield

# end of the server
logger.info("server shutting down")
await client.close()
logger.info("server stopped")


app = FastAPI(
lifespan=lifespan,
title="Exosphere State Manager",
description="Exosphere State Manager",
version="0.1.0",
version="0.0.2-beta",
contact={
"name": "Nivedit Jain (Founder exosphere.host)",
"email": "nivedit@exosphere.host",
Expand Down
8 changes: 0 additions & 8 deletions state-manager/app/models/db/namespace.py

This file was deleted.

2 changes: 1 addition & 1 deletion state-manager/app/models/db/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,6 @@ class Settings:
("namespace_name", 1),
("node_name", 1),
],
name="idx_enqueue_after"
name="enqueue_query"
)
]
26 changes: 9 additions & 17 deletions state-manager/tests/unit/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ def test_app_initialization(self):
assert isinstance(app, FastAPI)
assert app.title == "Exosphere State Manager"
assert app.description == "Exosphere State Manager"
assert app.version == "0.1.0"

# Check contact info
assert app.contact is not None
Expand Down Expand Up @@ -113,7 +112,7 @@ class TestLifespan:
'MONGO_DATABASE_NAME': 'test_db',
'STATE_MANAGER_SECRET': 'test_secret'
})
@patch('app.main.init_beanie')
@patch('app.main.init_beanie', new_callable=AsyncMock)
@patch('app.main.AsyncMongoClient')
@patch('app.main.LogsManager')
async def test_lifespan_startup_success(self, mock_logs_manager, mock_mongo_client, mock_init_beanie):
Expand All @@ -123,12 +122,11 @@ async def test_lifespan_startup_success(self, mock_logs_manager, mock_mongo_clie
mock_logs_manager.return_value.get_logger.return_value = mock_logger

mock_client = MagicMock()
mock_client.close = AsyncMock()
mock_mongo_client.return_value = mock_client
mock_db = MagicMock()
mock_client.__getitem__.return_value = mock_db

mock_init_beanie.return_value = AsyncMock()

# Create a mock FastAPI app for the lifespan
mock_app = MagicMock()

Expand All @@ -144,14 +142,14 @@ async def test_lifespan_startup_success(self, mock_logs_manager, mock_mongo_clie
mock_logger.info.assert_any_call("secret initialized")

# After context manager exits (shutdown)
mock_logger.info.assert_any_call("server shutting down")
mock_logger.info.assert_any_call("server stopped")

@patch.dict(os.environ, {
'MONGO_URI': 'mongodb://test:27017',
'MONGO_DATABASE_NAME': 'test_db',
'STATE_MANAGER_SECRET': '' # Empty secret
})
@patch('app.main.init_beanie')
@patch('app.main.init_beanie', new_callable=AsyncMock)
@patch('app.main.AsyncMongoClient')
@patch('app.main.LogsManager')
async def test_lifespan_empty_secret_raises_error(self, mock_logs_manager, mock_mongo_client, mock_init_beanie):
Expand All @@ -160,12 +158,11 @@ async def test_lifespan_empty_secret_raises_error(self, mock_logs_manager, mock_
mock_logs_manager.return_value.get_logger.return_value = mock_logger

mock_client = MagicMock()
mock_client.close = AsyncMock()
mock_mongo_client.return_value = mock_client
mock_db = MagicMock()
mock_client.__getitem__.return_value = mock_db

mock_init_beanie.return_value = AsyncMock()

mock_app = MagicMock()

with pytest.raises(ValueError, match="STATE_MANAGER_SECRET is not set"):
Expand All @@ -177,7 +174,7 @@ async def test_lifespan_empty_secret_raises_error(self, mock_logs_manager, mock_
'MONGO_DATABASE_NAME': 'test_db',
'STATE_MANAGER_SECRET': 'test_secret'
})
@patch('app.main.init_beanie')
@patch('app.main.init_beanie', new_callable=AsyncMock)
@patch('app.main.AsyncMongoClient')
@patch('app.main.LogsManager')
async def test_lifespan_init_beanie_with_correct_models(self, mock_logs_manager, mock_mongo_client, mock_init_beanie):
Expand All @@ -186,12 +183,11 @@ async def test_lifespan_init_beanie_with_correct_models(self, mock_logs_manager,
mock_logs_manager.return_value.get_logger.return_value = mock_logger

mock_client = MagicMock()
mock_client.close = AsyncMock()
mock_mongo_client.return_value = mock_client
mock_db = MagicMock()
mock_client.__getitem__.return_value = mock_db

mock_init_beanie.return_value = AsyncMock()

mock_app = MagicMock()

async with app_main.lifespan(mock_app):
Expand All @@ -209,11 +205,10 @@ async def test_lifespan_init_beanie_with_correct_models(self, mock_logs_manager,

# Import the expected models
from app.models.db.state import State
from app.models.db.namespace import Namespace
from app.models.db.graph_template_model import GraphTemplate
from app.models.db.registered_node import RegisteredNode

expected_models = [State, Namespace, GraphTemplate, RegisteredNode]
expected_models = [State, GraphTemplate, RegisteredNode]
assert document_models == expected_models


Expand Down Expand Up @@ -326,10 +321,7 @@ def test_app_metadata(self):

# Test description
assert app.description == "Exosphere State Manager"

# Test version
assert app.version == "0.1.0"


# Test contact info
assert app.contact is not None
assert app.contact["name"] == "Nivedit Jain (Founder exosphere.host)"
Expand Down