diff options
-rw-r--r-- | importer/providers/g_reddit.py | 7 | ||||
-rw-r--r-- | test/test_providers.py | 44 |
2 files changed, 48 insertions, 3 deletions
diff --git a/importer/providers/g_reddit.py b/importer/providers/g_reddit.py index 53ee5df..e0341e0 100644 --- a/importer/providers/g_reddit.py +++ b/importer/providers/g_reddit.py @@ -5,6 +5,12 @@ from importer.providers.raw_image_base import RawImageProviderBase class GReddit(RawImageProviderBase): regex = "^.*www.reddit.com/gallery.*$" + _TEST = [{ + "url": "https://www.reddit.com/gallery/mik7c9", + "paths": ['source_hlokpsyhgrq61.jpg', 'source_n31c2y7igrq61.jpg', 'source_7eg0o76igrq61.jpg', + 'source_whl12jbigrq61.jpg', 'source_4uok762igrq61.jpg', 'source_t3pgm64igrq61.jpg', + 'source_ymc4hv9igrq61.jpg'] + }] def __init__(self, url: str, reddit: Reddit): super(GReddit, self).__init__(url) @@ -17,3 +23,4 @@ class GReddit(RawImageProviderBase): url = value['s']['u'] path = self._download_raw_file(url) self.paths.append(path) + self.downloaded = True diff --git a/test/test_providers.py b/test/test_providers.py index 9a5084e..32d81bd 100644 --- a/test/test_providers.py +++ b/test/test_providers.py @@ -1,9 +1,23 @@ +import os + import praw import pytest -from importer.downloader import Downloader import importer.providers as providers -from importer.providers import ProviderBase + +reddit_env = pytest.mark.skipif( + os.environ.get('CLIENT_ID', '') == '' or + os.environ.get('CLIENT_SECRET', '') == '' or + os.environ.get('USERNAME', '') == '' or + os.environ.get('PASSWORD', '') == '' + , reason="Require reddit env variables to be set." +) + + +@pytest.fixture +def mock_ydl_download(mocker): + # this function is responsible for downloading the file + return mocker.patch('importer.providers.youtube_dl_base.youtube_dl.YoutubeDL.process_info') @pytest.mark.parametrize("provider", @@ -15,9 +29,33 @@ from importer.providers import ProviderBase providers.Youtube, providers.YoutubeDlProviderBase ]) -def test_provider(provider): +def test_provider(provider, mock_ydl_download): for test in provider._TEST: with provider(url=test['url']) as p: p.download() assert p.downloaded assert p.paths == test['paths'] + + +@reddit_env +@pytest.mark.parametrize("provider", + [ + providers.GReddit + ]) +def test_provider_with_reddit(provider, mock_ydl_download): + username = os.environ.get('USERNAME', '') + password = os.environ.get('PASSWORD', '') + client_id = os.environ.get('CLIENT_ID', '') + client_secret = os.environ.get('CLIENT_SECRET', '') + + reddit = praw.Reddit(client_id=client_id, + client_secret=client_secret, + password=password, + user_agent="reddit-nextcloud-importer", + username=username) + + for test in provider._TEST: + with provider(url=test['url'], reddit=reddit) as p: + p.download() + assert p.downloaded + assert p.paths == test['paths'] |