aboutsummaryrefslogtreecommitdiff
path: root/test/test_providers.py
diff options
context:
space:
mode:
authorgabrielgio <gabriel.giovanini@pm.me>2021-07-18 21:04:03 +0200
committergabrielgio <gabriel.giovanini@pm.me>2021-07-18 21:04:03 +0200
commita413f5db697fd7f568aa3dd8e9d1406176cb924c (patch)
treefe3e33e67adf968a8ad36e980b51419461883f20 /test/test_providers.py
parent9a069be0ce53f41ef012ee6367e1f7fd96102c38 (diff)
downloadreddit-nextcloud-importer-a413f5db697fd7f568aa3dd8e9d1406176cb924c.tar.gz
reddit-nextcloud-importer-a413f5db697fd7f568aa3dd8e9d1406176cb924c.tar.bz2
reddit-nextcloud-importer-a413f5db697fd7f568aa3dd8e9d1406176cb924c.zip
ref: Add test for GReddit
Add test for GReddit. It will check for all necessary variable to be able to login on reddit as it is required by the praw library. Also add mock to the `youtube-dl` download function. It will make the test run faster.
Diffstat (limited to 'test/test_providers.py')
-rw-r--r--test/test_providers.py44
1 files changed, 41 insertions, 3 deletions
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']