import pytest from httmock import urlmatch, HTTMock from util.config.validators import ConfigValidationException from util.config.validators.validate_torrent import BittorrentValidator from test.fixtures import * @pytest.mark.parametrize('unvalidated_config,expected', [ ({}, ConfigValidationException), ({'BITTORRENT_ANNOUNCE_URL': 'http://faketorrent/announce'}, None), ]) def test_validate_torrent(unvalidated_config, expected, app): announcer_hit = [False] @urlmatch(netloc=r'faketorrent', path='/announce') def handler(url, request): announcer_hit[0] = True return {'status_code': 200, 'content': ''} with HTTMock(handler): validator = BittorrentValidator() if expected is not None: with pytest.raises(expected): validator.validate(unvalidated_config, None, None) assert not announcer_hit[0] else: validator.validate(unvalidated_config, None, None) assert announcer_hit[0]