aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--importer/providers/g_reddit.py7
-rw-r--r--test/test_providers.py44
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']