import pytest import subprocess from sherlock import sherlock from sherlock_interactives import Interactives from sherlock_interactives import InteractivesSubprocessError def test_remove_nsfw(sites_obj): nsfw_target: str = 'Pornhub' assert nsfw_target in {site.name: site.information for site in sites_obj} sites_obj.remove_nsfw_sites() assert nsfw_target not in {site.name: site.information for site in sites_obj} # Parametrized sites should *not* include Motherless, which is acting as the control @pytest.mark.parametrize('nsfwsites', [ ['Pornhub'], ['Pornhub', 'Xvideos'], ]) def test_nsfw_explicit_selection(sites_obj, nsfwsites): for site in nsfwsites: assert site in {site.name: site.information for site in sites_obj} sites_obj.remove_nsfw_sites(do_not_remove=nsfwsites) for site in nsfwsites: assert site in {site.name: site.information for site in sites_obj} assert 'Motherless' not in {site.name: site.information for site in sites_obj} def test_wildcard_username_expansion(): assert sherlock.check_for_parameter('test{?}test') is True assert sherlock.check_for_parameter('test{.}test') is False assert sherlock.check_for_parameter('test{}test') is False assert sherlock.check_for_parameter('testtest') is False assert sherlock.check_for_parameter('test{?test') is False assert sherlock.check_for_parameter('test?}test') is False assert sherlock.multiple_usernames('test{?}test') == ["test_test" , "test-test" , "test.test"] @pytest.mark.parametrize('cliargs', [ '', '--site urghrtuight --egiotr', '--', ]) def test_no_usernames_provided(cliargs): with pytest.raises(InteractivesSubprocessError, match=r"error: the following arguments are required: USERNAMES"): Interactives.run_cli(cliargs)