-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Setup token generation with user_agent parameter
- Loading branch information
1 parent
0e0c67c
commit 202d80c
Showing
9 changed files
with
259 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
[ | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.3", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.3", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.3", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.4", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 OPR/108.0.0.", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.5", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.5", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.3", | ||
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.3", | ||
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 OPR/108.0.0.", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.", | ||
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.3", | ||
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.", | ||
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.14", | ||
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.10", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.3", | ||
"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Geck", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.2", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.3", | ||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0." | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
import logging | ||
|
||
import pytest | ||
from pytest_mock import MockerFixture | ||
|
||
from apps import setup_logger | ||
|
||
|
||
def test_setup_logger_with_webhook_url_defined(mocker: MockerFixture): | ||
mocker.patch("settings.LOGS_WEBHOOK_URL", "https://example.com/webhook") | ||
|
||
logger = logging.getLogger() | ||
logger.handlers.clear() | ||
|
||
setup_logger() | ||
|
||
assert len(logger.handlers) == 2 # One for console and one for Discord | ||
|
||
|
||
def test_setup_logger_with_webhook_url_not_defined(mocker: MockerFixture): | ||
mocker.patch("settings.LOGS_WEBHOOK_URL", None) | ||
|
||
logger = logging.getLogger() | ||
logger.handlers.clear() | ||
|
||
setup_logger() | ||
|
||
assert len(logger.handlers) == 1 # Only one for console | ||
|
||
|
||
def test_setup_logger_with_empty_webhook_url(mocker: MockerFixture): | ||
mocker.patch("settings.LOGS_WEBHOOK_URL", "") | ||
|
||
logger = logging.getLogger() | ||
logger.handlers.clear() | ||
|
||
setup_logger() | ||
|
||
assert len(logger.handlers) == 1 # Only one for console |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,52 @@ | ||
import json | ||
import os | ||
|
||
import pytest | ||
from pytest_mock import MockerFixture | ||
|
||
from apps.token.TokenGenerator import TokenGenerator | ||
from tests.token_validator import verify_token_format | ||
|
||
|
||
@pytest.fixture | ||
def token_generator(): | ||
token_generator = TokenGenerator() | ||
json_file_path = os.path.abspath( | ||
os.path.join( | ||
os.path.dirname(__file__), "..", "apps", "token", "SupportedUserAgents.json" | ||
) | ||
) | ||
supported_user_agents = json.load(open(json_file_path)) | ||
token_generator = TokenGenerator(supported_user_agents=supported_user_agents) | ||
yield token_generator | ||
|
||
|
||
def test_token_not_empty(token_generator): | ||
token = token_generator.get_token() | ||
assert token is not None, "Token should not be None" | ||
assert token != "", "Token should not be an empty string" | ||
def test_get_token_returns_unique_tokens(token_generator): | ||
tokens = [token_generator.get_token() for _ in range(5)] | ||
assert len(set(tokens)) == len(tokens), "Tokens should be unique" | ||
|
||
|
||
def test_tokens_are_unique(token_generator): | ||
tokens = [token_generator.get_token() for _ in range(5)] | ||
def test_get_token_returns_unique_tokens_with_specific_user_agent(token_generator): | ||
tokens = [ | ||
token_generator.get_token( | ||
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" | ||
) | ||
for _ in range(5) | ||
] | ||
assert len(set(tokens)) == len(tokens), "Tokens should be unique" | ||
|
||
|
||
def test_token_characteristics(token_generator): | ||
def test_get_token_returns_valid_token(token_generator): | ||
token = token_generator.get_token() | ||
assert isinstance(token, str), "Token should be a string" | ||
assert " " not in token, "Token should not contain any whitespace" | ||
assert any(c.isupper() for c in token), "The string must contain uppercase letters." | ||
assert any(c.islower() for c in token), "The string must contain lowercase letters." | ||
assert any(c.isdigit() for c in token), "The string must contain digits." | ||
verify_token_format(token) | ||
|
||
|
||
def test_get_token_returns_valid_token_with_specific_user_agent(token_generator): | ||
token = token_generator.get_token( | ||
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" | ||
) | ||
verify_token_format(token) | ||
|
||
|
||
def test_get_token_returns_valid_token_with_empty_user_agent(token_generator): | ||
token = token_generator.get_token(user_agent="") | ||
verify_token_format(token) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
def verify_token_format(token): | ||
""" | ||
Verify the format of the token. | ||
Args: | ||
token (str): The token to be verified. | ||
Raises: | ||
AssertionError: If the token does not meet the required format criteria. | ||
""" | ||
assert token is not None, "Token should not be None" | ||
assert token != "", "Token should not be an empty string" | ||
assert isinstance(token, str), "Token should be a string" | ||
assert " " not in token, "Token should not contain any whitespace" | ||
assert any(c.isupper() for c in token), "The string must contain uppercase letters." | ||
assert any(c.islower() for c in token), "The string must contain lowercase letters." | ||
assert any(c.isdigit() for c in token), "The string must contain digits." |