Improve listen.py test coverage (#3289)

* Add unit tests for listen.py

* Added new tests

* Improve test coverage for listen.py

* Update tests

---------

Co-authored-by: opendevin <opendevin@all-hands.dev>
This commit is contained in:
Graham Neubig 2024-08-08 10:25:12 -04:00 committed by GitHub
parent db302fd33c
commit f36639be28
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

78
tests/unit/test_listen.py Normal file
View File

@ -0,0 +1,78 @@
from unittest.mock import patch
from opendevin.core.config import AppConfig
# Mock the SessionManager to avoid asyncio issues
class MockSessionManager:
def __init__(self, *args, **kwargs):
pass
# Mock StaticFiles
class MockStaticFiles:
def __init__(self, *args, **kwargs):
pass
# Patch necessary components before importing from listen
with patch('opendevin.server.session.SessionManager', MockSessionManager), patch(
'fastapi.staticfiles.StaticFiles', MockStaticFiles
):
from opendevin.server.listen import is_extension_allowed, load_file_upload_config
def test_load_file_upload_config():
config = AppConfig(
file_uploads_max_file_size_mb=10,
file_uploads_restrict_file_types=True,
file_uploads_allowed_extensions=['.txt', '.pdf'],
)
with patch('opendevin.server.listen.config', config):
max_size, restrict_types, allowed_extensions = load_file_upload_config()
assert max_size == 10
assert restrict_types is True
assert set(allowed_extensions) == {'.txt', '.pdf'}
def test_load_file_upload_config_invalid_max_size():
config = AppConfig(
file_uploads_max_file_size_mb=-5,
file_uploads_restrict_file_types=False,
file_uploads_allowed_extensions=[],
)
with patch('opendevin.server.listen.config', config):
max_size, restrict_types, allowed_extensions = load_file_upload_config()
assert max_size == 0 # Should default to 0 when invalid
assert restrict_types is False
assert allowed_extensions == ['.*'] # Should default to '.*' when empty
def test_is_extension_allowed():
with patch('opendevin.server.listen.RESTRICT_FILE_TYPES', True), patch(
'opendevin.server.listen.ALLOWED_EXTENSIONS', ['.txt', '.pdf']
):
assert is_extension_allowed('file.txt')
assert is_extension_allowed('file.pdf')
assert not is_extension_allowed('file.doc')
assert not is_extension_allowed('file')
def test_is_extension_allowed_no_restrictions():
with patch('opendevin.server.listen.RESTRICT_FILE_TYPES', False):
assert is_extension_allowed('file.txt')
assert is_extension_allowed('file.pdf')
assert is_extension_allowed('file.doc')
assert is_extension_allowed('file')
def test_is_extension_allowed_wildcard():
with patch('opendevin.server.listen.RESTRICT_FILE_TYPES', True), patch(
'opendevin.server.listen.ALLOWED_EXTENSIONS', ['.*']
):
assert is_extension_allowed('file.txt')
assert is_extension_allowed('file.pdf')
assert is_extension_allowed('file.doc')
assert is_extension_allowed('file')