Merge pull request #1730 from sherlock-project/enhanced-unit-tests

generate unclaimed username based on regex
pull/1731/head
Siddharth Dushantha 1 year ago committed by GitHub
commit 64eec640d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -7,3 +7,4 @@ stem>=1.8.0
torrequest>=0.1.0
pandas>=1.0.0
openpyxl<=3.0.10
exrex>=0.11.0

@ -94,6 +94,7 @@
"username_claimed": "pink"
},
"AllMyLinks": {
"regexCheck": "^[a-z0-9][a-z0-9-]{2,32}$",
"errorMsg": "Not Found",
"errorType": "message",
"url": "https://allmylinks.com/{}",

@ -28,7 +28,7 @@ from sites import SitesInformation
from colorama import init
module_name = "Sherlock: Find Usernames Across Social Networks"
__version__ = "0.14.2"
__version__ = "0.14.3"
class SherlockFuturesSession(FuturesSession):

@ -3,7 +3,7 @@
This module contains various tests.
"""
from tests.base import SherlockBaseTest
import secrets
import exrex
class SherlockDetectTests(SherlockBaseTest):
@ -27,10 +27,7 @@ class SherlockDetectTests(SherlockBaseTest):
# Ensure that the site's detection method has not changed.
self.assertEqual("message", site_data["errorType"])
self.username_check([site_data["username_claimed"]],
[site],
exist_check=True
)
self.username_check([site_data["username_claimed"]], [site], exist_check=True)
return
@ -54,10 +51,16 @@ class SherlockDetectTests(SherlockBaseTest):
# Ensure that the site's detection method has not changed.
self.assertEqual("message", site_data["errorType"])
self.username_check([secrets.token_urlsafe(10)],
[site],
exist_check=False
)
# Generate a valid username based on the regex for a username that the
# site supports that is *most likely* not taken. The regex is slighlty
# modified version of site_data["regexCheck"] as we want a username
# that has the maximum length that is supported by the site. This way,
# we wont generate a random username that might actually exist. This
# method is very hacky, but it does the job as having hardcoded
# usernames that dont exists will lead to people with ill intent to
# create an account with that username which will break the tests
valid_username = exrex.getone(r"^[a-z0-9][a-z0-9-]{32}$")
self.username_check([valid_username], [site], exist_check=False)
return
@ -75,16 +78,13 @@ class SherlockDetectTests(SherlockBaseTest):
Will trigger an assert if detection mechanism did not work as expected.
"""
site = "9GAG"
site = "BitBucket"
site_data = self.site_data_all[site]
# Ensure that the site's detection method has not changed.
self.assertEqual("status_code", site_data["errorType"])
self.username_check([site_data["username_claimed"]],
[site],
exist_check=True
)
self.username_check([site_data["username_claimed"]], [site], exist_check=True)
return
@ -102,57 +102,27 @@ class SherlockDetectTests(SherlockBaseTest):
Will trigger an assert if detection mechanism did not work as expected.
"""
site = "9GAG"
site = "BitBucket"
site_data = self.site_data_all[site]
# Ensure that the site's detection method has not changed.
self.assertEqual("status_code", site_data["errorType"])
self.username_check([secrets.token_urlsafe(10)],
[site],
exist_check=False
)
# Generate a valid username based on the regex for a username that the
# site supports that is *most likely* not taken. The regex is slighlty
# modified version of site_data["regexCheck"] as we want a username
# that has the maximum length that is supported by the site. This way,
# we wont generate a random username that might actually exist. This
# method is very hacky, but it does the job as having hardcoded
# usernames that dont exists will lead to people with ill intent to
# create an account with that username which will break the tests
valid_username = exrex.getone(r"^[a-zA-Z0-9-_]{30}")
self.username_check([valid_username], [site], exist_check=False)
return
class SherlockSiteCoverageTests(SherlockBaseTest):
def test_coverage_false_via_response_url(self):
"""Test Username Does Not Exist Site Coverage (Via Response URL).
This test checks all sites with the "response URL" detection mechanism
to ensure that a Username that does not exist is reported that way.
Keyword Arguments:
self -- This object.
Return Value:
Nothing.
Will trigger an assert if detection mechanism did not work as expected.
"""
self.detect_type_check("response_url", exist_check=False)
return
def test_coverage_true_via_response_url(self):
"""Test Username Does Exist Site Coverage (Via Response URL).
This test checks all sites with the "response URL" detection mechanism
to ensure that a Username that does exist is reported that way.
Keyword Arguments:
self -- This object.
Return Value:
Nothing.
Will trigger an assert if detection mechanism did not work as expected.
"""
self.detect_type_check("response_url", exist_check=True)
return
def test_coverage_false_via_status(self):
"""Test Username Does Not Exist Site Coverage (Via HTTP Status).

@ -7,7 +7,6 @@ import os.path
import unittest
import sherlock
from result import QueryStatus
from result import QueryResult
from notify import QueryNotify
from sites import SitesInformation
import warnings
@ -31,7 +30,7 @@ class SherlockBaseTest(unittest.TestCase):
warnings.simplefilter("ignore", ResourceWarning)
# Create object with all information about sites we are aware of.
sites = SitesInformation()
sites = SitesInformation(data_file_path=os.path.join(os.path.dirname(__file__), "../resources/data.json"))
# Create original dictionary from SitesInformation() object.
# Eventually, the rest of the code will be updated to use the new object

Loading…
Cancel
Save