diff options
| author | gabrielgio <gabriel.giovanini@pm.me> | 2021-07-18 21:04:03 +0200 | 
|---|---|---|
| committer | gabrielgio <gabriel.giovanini@pm.me> | 2021-07-18 21:04:03 +0200 | 
| commit | a413f5db697fd7f568aa3dd8e9d1406176cb924c (patch) | |
| tree | fe3e33e67adf968a8ad36e980b51419461883f20 /test | |
| parent | 9a069be0ce53f41ef012ee6367e1f7fd96102c38 (diff) | |
| download | reddit-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')
| -rw-r--r-- | test/test_providers.py | 44 | 
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'] | 
