This commit is contained in:
@@ -0,0 +1,147 @@
|
||||
"""Unittest module for update checker."""
|
||||
import json
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
import mock
|
||||
|
||||
sys.path.append("..") # Adds higher directory to python modules path.
|
||||
from utils.updates import check_for_updates, get_latest_release
|
||||
|
||||
|
||||
class FakeHTTPSConnection:
|
||||
def __init__(self, status):
|
||||
self.status = status
|
||||
|
||||
def request(self, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def getresponse(self):
|
||||
return FakeHTTPSResponse(self.status)
|
||||
|
||||
|
||||
class FakeHTTPSResponse:
|
||||
def __init__(self, status):
|
||||
self.status = status
|
||||
|
||||
def read(self):
|
||||
if self.status == 200:
|
||||
return b'{"name":"v0.0.0 2022-03-02","tag_name":"v0.0.0", "html_url":"https://github.com/tangyoha/telegram_media_downloader/releases/tag/v0.0.0"}'
|
||||
else:
|
||||
return b"{error}"
|
||||
|
||||
|
||||
class MocResponse:
|
||||
def __init__(self, text: str):
|
||||
self.text = text
|
||||
|
||||
|
||||
def new_request_get(*args, **kwargs):
|
||||
return MocResponse('{"tag_name":"v0.0.0"}')
|
||||
|
||||
|
||||
import unittest
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from utils import __version__
|
||||
from utils.updates import check_for_updates, get_latest_release
|
||||
|
||||
|
||||
class TestUpdates(unittest.TestCase):
|
||||
@patch("requests.get")
|
||||
def test_get_latest_release(self, mock_get):
|
||||
# Mock the response from requests.get
|
||||
mock_response = MagicMock()
|
||||
mock_response.text = json.dumps(
|
||||
{
|
||||
"name": "v0.0.0 2022-03-02",
|
||||
"tag_name": "v0.0.0",
|
||||
"html_url": "https://github.com/tangyoha/telegram_media_downloader/releases/tag/v0.0.0",
|
||||
}
|
||||
)
|
||||
mock_get.return_value = mock_response
|
||||
|
||||
# Call the function with a test proxy_config
|
||||
proxy_config = {
|
||||
"scheme": "http",
|
||||
"hostname": "localhost",
|
||||
"port": "8080",
|
||||
"username": "user",
|
||||
"password": "pass",
|
||||
}
|
||||
result = get_latest_release(proxy_config)
|
||||
|
||||
# Check the result
|
||||
self.assertEqual(result["name"], "v0.0.0 2022-03-02")
|
||||
self.assertEqual(result["tag_name"], "v0.0.0")
|
||||
self.assertEqual(
|
||||
result["html_url"],
|
||||
"https://github.com/tangyoha/telegram_media_downloader/releases/tag/v0.0.0",
|
||||
)
|
||||
|
||||
@patch("requests.get")
|
||||
def test_get_latest_release_same_version(self, mock_get):
|
||||
# Mock the response from requests.get
|
||||
mock_response = MagicMock()
|
||||
mock_response.text = json.dumps(
|
||||
{
|
||||
"name": f"v{__version__} 2022-03-02",
|
||||
"tag_name": f"v{__version__}",
|
||||
"html_url": "https://github.com/tangyoha/telegram_media_downloader/releases/tag/v0.0.0",
|
||||
}
|
||||
)
|
||||
mock_get.return_value = mock_response
|
||||
|
||||
# Call the function with a test proxy_config
|
||||
proxy_config = {
|
||||
"scheme": "http",
|
||||
"hostname": "localhost",
|
||||
"port": "8080",
|
||||
"username": "user",
|
||||
"password": "pass",
|
||||
}
|
||||
result = get_latest_release(proxy_config)
|
||||
|
||||
# Check the result
|
||||
self.assertEqual(result, {})
|
||||
|
||||
@patch("requests.get")
|
||||
def test_get_latest_release_exception(self, mock_get):
|
||||
# Mock the response from requests.get to raise an exception
|
||||
mock_get.side_effect = Exception("Test exception")
|
||||
|
||||
# Call the function with a test proxy_config
|
||||
proxy_config = {
|
||||
"scheme": "http",
|
||||
"hostname": "localhost",
|
||||
"port": "8080",
|
||||
"username": "user",
|
||||
"password": "pass",
|
||||
}
|
||||
result = get_latest_release(proxy_config)
|
||||
|
||||
# Check the result
|
||||
self.assertEqual(result, {})
|
||||
|
||||
@patch("utils.updates.get_latest_release")
|
||||
@patch("utils.updates.Console")
|
||||
def test_check_for_updates(self, mock_console, mock_get_latest_release):
|
||||
# Mock the response from get_latest_release
|
||||
mock_get_latest_release.return_value = {
|
||||
"name": "v0.0.0 2022-03-02",
|
||||
"tag_name": "v0.0.0",
|
||||
"html_url": "https://github.com/tangyoha/telegram_media_downloader/releases/tag/v0.0.0",
|
||||
}
|
||||
|
||||
# Call the function with a test proxy_config
|
||||
proxy_config = {
|
||||
"scheme": "http",
|
||||
"hostname": "localhost",
|
||||
"port": "8080",
|
||||
"username": "user",
|
||||
"password": "pass",
|
||||
}
|
||||
check_for_updates(proxy_config)
|
||||
|
||||
# Check the console output
|
||||
mock_console.return_value.print.assert_called_once()
|
||||
Reference in New Issue
Block a user