mirror of
https://github.com/trustedsec/hate_crack.git
synced 2026-06-27 17:03:16 -07:00
39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
|
|
import os
|
|
import re
|
|
import pytest
|
|
from hate_crack.api import download_hashmob_wordlist_list
|
|
|
|
|
|
def test_hashmob_connectivity_real(capsys):
|
|
if not os.environ.get('HASHMOB_TEST_REAL', '').lower() in ('1', 'true', 'yes'):
|
|
# Mocked response
|
|
result = [
|
|
{'name': 'mock_wordlist_1', 'information': 'Mock info 1'},
|
|
{'name': 'mock_wordlist_2', 'information': 'Mock info 2'}
|
|
]
|
|
print("Available Hashmob Wordlists:")
|
|
for idx, wl in enumerate(result):
|
|
print(f"{idx+1}. {wl['name']} - {wl['information']}")
|
|
captured = capsys.readouterr()
|
|
else:
|
|
try:
|
|
result = download_hashmob_wordlist_list()
|
|
except Exception as e:
|
|
if '523' in str(e) or 'HTTP ERROR 523' in str(e):
|
|
pytest.skip("Hashmob returned HTTP ERROR 523 (Origin is unreachable)")
|
|
pytest.skip(f"Network or API unavailable: {e}")
|
|
captured = capsys.readouterr()
|
|
if 'HTTP ERROR 523' in captured.out or '523' in captured.out:
|
|
pytest.skip("Hashmob returned HTTP ERROR 523 (Origin is unreachable)")
|
|
assert isinstance(result, list)
|
|
assert any('name' in wl for wl in result)
|
|
# Check for at least one wordlist name in output using regex
|
|
names = [wl['name'] for wl in result if 'name' in wl]
|
|
found = False
|
|
for name in names:
|
|
if re.search(re.escape(name), captured.out):
|
|
found = True
|
|
break
|
|
assert found, "No wordlist name found in output"
|