Skip to content

Commit 722b208

Browse files
authored
Minor fixes (#323)
* Minor fixes * Refactor unit tests in test_main.py for improved clarity and functionality - Removed version assertions from app initialization tests to streamline checks. - Updated the mocking of `init_beanie` to use `AsyncMock` for better async handling in lifespan tests. - Adjusted logging assertions to reflect accurate shutdown messages. - Cleaned up unused imports and improved overall test structure for better maintainability.
1 parent fb60376 commit 722b208

4 files changed

Lines changed: 14 additions & 30 deletions

File tree

state-manager/app/main.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
# injecting models
2020
from .models.db.state import State
21-
from .models.db.namespace import Namespace
2221
from .models.db.graph_template_model import GraphTemplate
2322
from .models.db.registered_node import RegisteredNode
2423

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

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

5655
# end of the server
57-
logger.info("server shutting down")
56+
await client.close()
57+
logger.info("server stopped")
5858

5959

6060
app = FastAPI(
6161
lifespan=lifespan,
6262
title="Exosphere State Manager",
6363
description="Exosphere State Manager",
64-
version="0.1.0",
64+
version="0.0.2-beta",
6565
contact={
6666
"name": "Nivedit Jain (Founder exosphere.host)",
6767
"email": "nivedit@exosphere.host",

state-manager/app/models/db/namespace.py

Lines changed: 0 additions & 8 deletions
This file was deleted.

state-manager/app/models/db/state.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,6 @@ class Settings:
7575
("namespace_name", 1),
7676
("node_name", 1),
7777
],
78-
name="idx_enqueue_after"
78+
name="enqueue_query"
7979
)
8080
]

state-manager/tests/unit/test_main.py

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ def test_app_initialization(self):
1717
assert isinstance(app, FastAPI)
1818
assert app.title == "Exosphere State Manager"
1919
assert app.description == "Exosphere State Manager"
20-
assert app.version == "0.1.0"
2120

2221
# Check contact info
2322
assert app.contact is not None
@@ -113,7 +112,7 @@ class TestLifespan:
113112
'MONGO_DATABASE_NAME': 'test_db',
114113
'STATE_MANAGER_SECRET': 'test_secret'
115114
})
116-
@patch('app.main.init_beanie')
115+
@patch('app.main.init_beanie', new_callable=AsyncMock)
117116
@patch('app.main.AsyncMongoClient')
118117
@patch('app.main.LogsManager')
119118
async def test_lifespan_startup_success(self, mock_logs_manager, mock_mongo_client, mock_init_beanie):
@@ -123,12 +122,11 @@ async def test_lifespan_startup_success(self, mock_logs_manager, mock_mongo_clie
123122
mock_logs_manager.return_value.get_logger.return_value = mock_logger
124123

125124
mock_client = MagicMock()
125+
mock_client.close = AsyncMock()
126126
mock_mongo_client.return_value = mock_client
127127
mock_db = MagicMock()
128128
mock_client.__getitem__.return_value = mock_db
129129

130-
mock_init_beanie.return_value = AsyncMock()
131-
132130
# Create a mock FastAPI app for the lifespan
133131
mock_app = MagicMock()
134132

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

146144
# After context manager exits (shutdown)
147-
mock_logger.info.assert_any_call("server shutting down")
145+
mock_logger.info.assert_any_call("server stopped")
148146

149147
@patch.dict(os.environ, {
150148
'MONGO_URI': 'mongodb://test:27017',
151149
'MONGO_DATABASE_NAME': 'test_db',
152150
'STATE_MANAGER_SECRET': '' # Empty secret
153151
})
154-
@patch('app.main.init_beanie')
152+
@patch('app.main.init_beanie', new_callable=AsyncMock)
155153
@patch('app.main.AsyncMongoClient')
156154
@patch('app.main.LogsManager')
157155
async def test_lifespan_empty_secret_raises_error(self, mock_logs_manager, mock_mongo_client, mock_init_beanie):
@@ -160,12 +158,11 @@ async def test_lifespan_empty_secret_raises_error(self, mock_logs_manager, mock_
160158
mock_logs_manager.return_value.get_logger.return_value = mock_logger
161159

162160
mock_client = MagicMock()
161+
mock_client.close = AsyncMock()
163162
mock_mongo_client.return_value = mock_client
164163
mock_db = MagicMock()
165164
mock_client.__getitem__.return_value = mock_db
166165

167-
mock_init_beanie.return_value = AsyncMock()
168-
169166
mock_app = MagicMock()
170167

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

188185
mock_client = MagicMock()
186+
mock_client.close = AsyncMock()
189187
mock_mongo_client.return_value = mock_client
190188
mock_db = MagicMock()
191189
mock_client.__getitem__.return_value = mock_db
192190

193-
mock_init_beanie.return_value = AsyncMock()
194-
195191
mock_app = MagicMock()
196192

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

210206
# Import the expected models
211207
from app.models.db.state import State
212-
from app.models.db.namespace import Namespace
213208
from app.models.db.graph_template_model import GraphTemplate
214209
from app.models.db.registered_node import RegisteredNode
215210

216-
expected_models = [State, Namespace, GraphTemplate, RegisteredNode]
211+
expected_models = [State, GraphTemplate, RegisteredNode]
217212
assert document_models == expected_models
218213

219214

@@ -326,10 +321,7 @@ def test_app_metadata(self):
326321

327322
# Test description
328323
assert app.description == "Exosphere State Manager"
329-
330-
# Test version
331-
assert app.version == "0.1.0"
332-
324+
333325
# Test contact info
334326
assert app.contact is not None
335327
assert app.contact["name"] == "Nivedit Jain (Founder exosphere.host)"

0 commit comments

Comments
 (0)