aboutsummaryrefslogtreecommitdiff
path: root/test/test_providers.py
blob: 32d81bd1c5da3ce67d8c068bf73b08101c6a5577 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import os

import praw
import pytest

import importer.providers as providers

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",
                         [
                             providers.IReddit,
                             providers.Imgur,
                             providers.RawImageProviderBase,
                             providers.RedGifs,
                             providers.Youtube,
                             providers.YoutubeDlProviderBase
                         ])
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']