From 026311fcdbfa178bac5efb47a2d84a6f8132c0bd Mon Sep 17 00:00:00 2001 From: L1ghtn1ng Date: Sat, 4 Jan 2020 07:24:09 +0000 Subject: [PATCH] More wip for getting tests working --- tests/discovery/test_githubcode.py | 24 +++-- tests/discovery/test_linkedin_links.py | 10 +-- tests/test_myparser.py | 5 +- tests/test_theHarvester.py | 119 +++++++++++++++---------- 4 files changed, 95 insertions(+), 63 deletions(-) diff --git a/tests/discovery/test_githubcode.py b/tests/discovery/test_githubcode.py index f4c00c5d..78ad60d0 100644 --- a/tests/discovery/test_githubcode.py +++ b/tests/discovery/test_githubcode.py @@ -64,48 +64,56 @@ class TestSearchGithubCode: response.json = MagicMock(return_value=json) response.status_code = 200 - def test_missing_key(self): + @pytest.mark.asyncio + async def test_missing_key(self): with pytest.raises(MissingKey): Core.github_key = MagicMock(return_value=None) githubcode.SearchGithubCode(word="test", limit=500) - def test_fragments_from_response(self): + @pytest.mark.asyncio + async def test_fragments_from_response(self): Core.github_key = MagicMock(return_value="lol") test_class_instance = githubcode.SearchGithubCode(word="test", limit=500) test_result = test_class_instance.fragments_from_response(self.OkResponse.response) assert test_result == ["test1", "test2"] - def test_invalid_fragments_from_response(self): + @pytest.mark.asyncio + async def test_invalid_fragments_from_response(self): Core.github_key = MagicMock(return_value="lol") test_class_instance = githubcode.SearchGithubCode(word="test", limit=500) test_result = test_class_instance.fragments_from_response(self.MalformedResponse.response) assert test_result == [] - def test_handle_response_ok(self): + @pytest.mark.asyncio + async def test_handle_response_ok(self): Core.github_key = MagicMock(return_value="lol") test_class_instance = githubcode.SearchGithubCode(word="test", limit=500) test_result = test_class_instance.handle_response(self.OkResponse.response) assert isinstance(test_result, SuccessResult) - def test_handle_response_retry(self): + @pytest.mark.asyncio + async def test_handle_response_retry(self): Core.github_key = MagicMock(return_value="lol") test_class_instance = githubcode.SearchGithubCode(word="test", limit=500) test_result = test_class_instance.handle_response(self.RetryResponse.response) assert isinstance(test_result, RetryResult) - def test_handle_response_fail(self): + @pytest.mark.asyncio + async def test_handle_response_fail(self): Core.github_key = MagicMock(return_value="lol") test_class_instance = githubcode.SearchGithubCode(word="test", limit=500) test_result = test_class_instance.handle_response(self.FailureResponse.response) assert isinstance(test_result, ErrorResult) - def test_next_page(self): + @pytest.mark.asyncio + async def test_next_page(self): Core.github_key = MagicMock(return_value="lol") test_class_instance = githubcode.SearchGithubCode(word="test", limit=500) test_result = githubcode.SuccessResult(list(), next_page=2, last_page=4) assert(2 == test_class_instance.next_page_or_end(test_result)) - def test_last_page(self): + @pytest.mark.asyncio + async def test_last_page(self): Core.github_key = MagicMock(return_value="lol") test_class_instance = githubcode.SearchGithubCode(word="test", limit=500) test_result = githubcode.SuccessResult(list(), None, None) diff --git a/tests/discovery/test_linkedin_links.py b/tests/discovery/test_linkedin_links.py index fa20f386..33ece695 100644 --- a/tests/discovery/test_linkedin_links.py +++ b/tests/discovery/test_linkedin_links.py @@ -2,9 +2,9 @@ # coding=utf-8 from theHarvester.discovery import linkedinsearch from theHarvester.discovery.constants import splitter -import pytest import os import re +import pytest class TestGetLinks(object): @@ -18,14 +18,14 @@ class TestGetLinks(object): 'https://www.linkedin.com/in/don-draper-b83ba26', 'https://www.linkedin.com/in/don-draper-b854a51' ] - filtered_results = splitter(results) - assert len(await filtered_results) == 1 + filtered_results = await splitter(results) + assert len(filtered_results) == 1 @pytest.mark.asyncio async def test_get_links(self): search = linkedinsearch.SearchLinkedin("facebook.com", '100') await search.process() - links = search.get_links() + links = await search.get_links() assert type(links) == list @pytest.mark.asyncio @@ -33,7 +33,7 @@ class TestGetLinks(object): dir_path = os.path.dirname(os.path.realpath(__file__)) mock_response = open(dir_path + "/test_linkedin_links.txt") mock_response_content = mock_response.read() - await mock_response.close() + mock_response.close() reg_links = re.compile(r"url=https:\/\/www\.linkedin.com(.*?)&") temp = reg_links.findall(mock_response_content) resul = [] diff --git a/tests/test_myparser.py b/tests/test_myparser.py index 0810f37c..eee0860c 100755 --- a/tests/test_myparser.py +++ b/tests/test_myparser.py @@ -7,11 +7,12 @@ import pytest class TestMyParser(object): - def test_emails(self): + @pytest.mark.asyncio + async def test_emails(self): word = 'domain.com' results = '@domain.com***a@domain***banotherdomain.com***c@domain.com***d@sub.domain.com***' parse = myparser.Parser(results, word) - emails = sorted(parse.emails()) + emails = sorted(await parse.emails()) assert emails, ['c@domain.com', 'd@sub.domain.com'] diff --git a/tests/test_theHarvester.py b/tests/test_theHarvester.py index 481ab9ee..aca3b5e3 100644 --- a/tests/test_theHarvester.py +++ b/tests/test_theHarvester.py @@ -1,195 +1,218 @@ import os import sys from unittest.mock import patch, MagicMock - import theHarvester.__main__ as harvester +import pytest domain = 'metasploit.com' sys.argv = args = [os.path.curdir + 'theHarvester.py', '-d', domain, '-b', 'domain'] +@pytest.mark.asyncio @patch('theHarvester.discovery.baidusearch.SearchBaidu') @patch('theHarvester.lib.stash.StashManager') -def test_baidu(stash, search_engine): +async def test_baidu(stash, search_engine): args[-1] = 'baidu' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2 +@pytest.mark.asyncio @patch('theHarvester.discovery.bingsearch.SearchBing') @patch('theHarvester.lib.stash.StashManager') -def test_bing(stash, search_engine): +async def test_bing(stash, search_engine): args[-1] = 'bing' - harvester.start() + await harvester.start() args[-1] = 'bingapi' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 4 +@pytest.mark.asyncio @patch('theHarvester.discovery.certspottersearch.SearchCertspoter') @patch('theHarvester.lib.stash.StashManager') -def test_certspotter(stash, search_engine): +async def test_certspotter(stash, search_engine): args[-1] = 'certspotter' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 1 +@pytest.mark.asyncio @patch('theHarvester.discovery.crtsh.SearchCrtsh') @patch('theHarvester.lib.stash.StashManager') -def test_crtsh(stash, search_engine): +async def test_crtsh(stash, search_engine): args[-1] = 'crtsh' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 1 +@pytest.mark.asyncio @patch('theHarvester.discovery.dnsdumpster.SearchDnsDumpster') @patch('theHarvester.lib.stash.StashManager') -def test_dnsdumpster(stash, search_engine): +async def test_dnsdumpster(stash, search_engine): args[-1] = 'dnsdumpster' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 1 +@pytest.mark.asyncio @patch('theHarvester.discovery.dogpilesearch.SearchDogpile') @patch('theHarvester.lib.stash.StashManager') -def test_dogpile(stash, search_engine): +async def test_dogpile(stash, search_engine): args[-1] = 'dogpile' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2 +@pytest.mark.asyncio @patch('theHarvester.discovery.duckduckgosearch.SearchDuckDuckGo') @patch('theHarvester.lib.stash.StashManager') -def test_duckduckgo(stash, search_engine): +async def test_duckduckgo(stash, search_engine): args[-1] = 'duckduckgo' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2 +@pytest.mark.asyncio @patch('theHarvester.discovery.githubcode.SearchGithubCode') @patch('theHarvester.lib.stash.StashManager') -def test_github(stash, search_engine): +async def test_github(stash, search_engine): args[-1] = 'github-code' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2 +@pytest.mark.asyncio @patch('theHarvester.discovery.exaleadsearch.SearchExalead') @patch('theHarvester.lib.stash.StashManager') -def test_exalead(stash, search_engine): +async def test_exalead(stash, search_engine): args[-1] = 'exalead' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2 +@pytest.mark.asyncio @patch('theHarvester.discovery.googlesearch.SearchGoogle') @patch('theHarvester.lib.stash.StashManager') -def test_google(stash, search_engine): +async def test_google(stash, search_engine): args[-1] = 'google' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2 +@pytest.mark.asyncio @patch('theHarvester.discovery.huntersearch.SearchHunter') @patch('theHarvester.lib.stash.StashManager') -def test_hunter(stash, search_engine): +async def test_hunter(stash, search_engine): args[-1] = 'hunter' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2 +@pytest.mark.asyncio @patch('theHarvester.discovery.intelxsearch.SearchIntelx') @patch('theHarvester.lib.stash.StashManager') -def test_intelx(stash, search_engine): +async def test_intelx(stash, search_engine): args[-1] = 'intelx' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2 +@pytest.mark.asyncio @patch('theHarvester.discovery.linkedinsearch.SearchLinkedin') @patch('theHarvester.lib.stash.StashManager') -def test_linkedin(stash, search_engine): +async def test_linkedin(stash, search_engine): args[-1] = 'linkedin' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 1 +@pytest.mark.asyncio @patch('theHarvester.discovery.linkedinsearch.SearchLinkedin') @patch('theHarvester.lib.stash.StashManager') -def test_linkedin_links(stash, search_engine): +async def test_linkedin_links(stash, search_engine): args[-1] = 'linkedin_links' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 1 +@pytest.mark.asyncio @patch('theHarvester.discovery.netcraft.SearchNetcraft') @patch('theHarvester.lib.stash.StashManager') -def test_netcraft(stash, search_engine): +async def test_netcraft(stash, search_engine): args[-1] = 'netcraft' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 1 +@pytest.mark.asyncio @patch('theHarvester.discovery.otxsearch.SearchOtx') @patch('theHarvester.lib.stash.StashManager') -def test_otx(stash, search_engine): +async def test_otx(stash, search_engine): args[-1] = 'otx' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2 +@pytest.mark.asyncio @patch('theHarvester.discovery.securitytrailssearch.SearchSecuritytrail') @patch('theHarvester.lib.stash.StashManager') -def test_security_trails(stash, search_engine): +async def test_security_trails(stash, search_engine): args[-1] = 'securityTrails' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2 +@pytest.mark.asyncio @patch('theHarvester.discovery.suip.SearchSuip') @patch('theHarvester.lib.stash.StashManager') -def test_suip(stash, search_engine): +async def test_suip(stash, search_engine): args[-1] = 'suip' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 1 +@pytest.mark.asyncio @patch('theHarvester.discovery.threatcrowd.SearchThreatcrowd') @patch('theHarvester.lib.stash.StashManager') -def test_threatcrowd(stash, search_engine): +async def test_threatcrowd(stash, search_engine): args[-1] = 'threatcrowd' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 1 +@pytest.mark.asyncio @patch('theHarvester.discovery.trello.SearchTrello') @patch('theHarvester.lib.stash.StashManager') -def test_trello(stash, search_engine): +async def test_trello(stash, search_engine): search_engine().get_results = MagicMock(return_value=('user@trello.com', 'trello', 'trello.com')) args[-1] = 'trello' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 3 +@pytest.mark.asyncio @patch('theHarvester.discovery.twittersearch.SearchTwitter') @patch('theHarvester.lib.stash.StashManager') -def test_twitter(stash, search_engine): +async def test_twitter(stash, search_engine): args[-1] = 'twitter' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 1 +@pytest.mark.asyncio @patch('theHarvester.discovery.virustotal.SearchVirustotal') @patch('theHarvester.lib.stash.StashManager') -def test_virustotal(stash, search_engine): +async def test_virustotal(stash, search_engine): args[-1] = 'virustotal' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 1 +@pytest.mark.asyncio @patch('theHarvester.discovery.yahoosearch.SearchYahoo') @patch('theHarvester.lib.stash.StashManager') -def test_yahoo(stash, search_engine): +async def test_yahoo(stash, search_engine): args[-1] = 'yahoo' - harvester.start() + await harvester.start() assert stash().store_all.call_count == 2