test_listen.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. from unittest.mock import patch
  2. from openhands.core.config import AppConfig
  3. # Mock the SessionManager to avoid asyncio issues
  4. class MockSessionManager:
  5. def __init__(self, *args, **kwargs):
  6. pass
  7. # Mock StaticFiles
  8. class MockStaticFiles:
  9. def __init__(self, *args, **kwargs):
  10. pass
  11. # Patch necessary components before importing from listen
  12. with (
  13. patch('openhands.server.session.SessionManager', MockSessionManager),
  14. patch('fastapi.staticfiles.StaticFiles', MockStaticFiles),
  15. ):
  16. from openhands.server.file_config import (
  17. is_extension_allowed,
  18. load_file_upload_config,
  19. )
  20. def test_load_file_upload_config():
  21. config = AppConfig(
  22. file_uploads_max_file_size_mb=10,
  23. file_uploads_restrict_file_types=True,
  24. file_uploads_allowed_extensions=['.txt', '.pdf'],
  25. )
  26. max_size, restrict_types, allowed_extensions = load_file_upload_config(config)
  27. assert max_size == 10
  28. assert restrict_types is True
  29. assert set(allowed_extensions) == {'.txt', '.pdf'}
  30. def test_load_file_upload_config_invalid_max_size():
  31. config = AppConfig(
  32. file_uploads_max_file_size_mb=-5,
  33. file_uploads_restrict_file_types=False,
  34. file_uploads_allowed_extensions=[],
  35. )
  36. with patch('openhands.server.shared.config', config):
  37. max_size, restrict_types, allowed_extensions = load_file_upload_config()
  38. assert max_size == 0 # Should default to 0 when invalid
  39. assert restrict_types is False
  40. assert allowed_extensions == ['.*'] # Should default to '.*' when empty
  41. def test_is_extension_allowed():
  42. with (
  43. patch('openhands.server.file_config.RESTRICT_FILE_TYPES', True),
  44. patch('openhands.server.file_config.ALLOWED_EXTENSIONS', ['.txt', '.pdf']),
  45. ):
  46. assert is_extension_allowed('file.txt')
  47. assert is_extension_allowed('file.pdf')
  48. assert not is_extension_allowed('file.doc')
  49. assert not is_extension_allowed('file')
  50. def test_is_extension_allowed_no_restrictions():
  51. with patch('openhands.server.file_config.RESTRICT_FILE_TYPES', False):
  52. assert is_extension_allowed('file.txt')
  53. assert is_extension_allowed('file.pdf')
  54. assert is_extension_allowed('file.doc')
  55. assert is_extension_allowed('file')
  56. def test_is_extension_allowed_wildcard():
  57. with (
  58. patch('openhands.server.file_config.RESTRICT_FILE_TYPES', True),
  59. patch('openhands.server.file_config.ALLOWED_EXTENSIONS', ['.*']),
  60. ):
  61. assert is_extension_allowed('file.txt')
  62. assert is_extension_allowed('file.pdf')
  63. assert is_extension_allowed('file.doc')
  64. assert is_extension_allowed('file')