We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/robgrappler/twitter-voice-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
import sys
import os
import unittest
from unittest.mock import MagicMock, patch
# Add src to path
sys.path.append(os.path.abspath("src"))
# Mock dependencies for import to prevent ModuleNotFoundError
with patch.dict(sys.modules, {"requests": MagicMock(), "requests_oauthlib": MagicMock()}):
from twitter_handler import TwitterHandler
class TestMediaSupport(unittest.TestCase):
def test_url_rejection(self):
handler = TwitterHandler()
handler.session = MagicMock()
# Mock _chunked_upload to avoid actual API call
handler._chunked_upload = MagicMock(return_value="media_id_123")
# Test with URL - Should Fail now
media_id = handler.upload_media("https://picsum.photos/200/300")
# Should return None
self.assertIsNone(media_id)
# Should NOT call _chunked_upload
handler._chunked_upload.assert_not_called()
def test_chunked_upload_logic(self):
handler = TwitterHandler()
handler.session = MagicMock()
# Mock INIT
mock_init = MagicMock()
mock_init.status_code = 202
mock_init.json.return_value = {'media_id_string': '987'}
# Mock APPEND
mock_append = MagicMock()
mock_append.status_code = 204
# Mock FINALIZE
mock_finalize = MagicMock()
mock_finalize.status_code = 200
# We need a real file for os.path.getsize
with open('test_tmp.jpg', 'wb') as f:
f.write(b'fake')
try:
handler.session.post.side_effect = [mock_init, mock_append, mock_finalize]
res = handler._chunked_upload('test_tmp.jpg')
self.assertEqual(res, '987')
finally:
if os.path.exists('test_tmp.jpg'):
os.remove('test_tmp.jpg')
if __name__ == "__main__":
unittest.main()