1proxy / tests /unit /test_patterns.py
paijo77's picture
update tests/unit/test_patterns.py
76bade6 verified
import pytest
from app.grabber.patterns import ProxyPatterns
class TestHTTPPatterns:
def test_http_ip_port_pattern(self):
text = "192.168.1.1:8080\n10.0.0.1:3128"
matches = ProxyPatterns.extract_http_proxies(text)
assert len(matches) == 2
assert matches[0] == ("192.168.1.1", "8080")
assert matches[1] == ("10.0.0.1", "3128")
def test_http_url_pattern(self):
text = "192.168.1.1:8080\n10.0.0.1:3128"
matches = ProxyPatterns.extract_http_proxies(text)
assert len(matches) >= 1
class TestVMessPatterns:
def test_vmess_url_detection(self):
url = "vmess://eyJhZGQiOiIxMjcuMC4wLjEiLCJwb3J0Ijo0NDMsImlkIjoidXVpZCJ9"
assert ProxyPatterns.is_vmess(url) is True
def test_vmess_extraction(self):
text = """
Some text
vmess://eyJhZGQiOiIxMjcuMC4wLjEiLCJwb3J0Ijo0NDN9
More text
"""
matches = ProxyPatterns.extract_vmess_urls(text)
assert len(matches) == 1
assert matches[0].startswith("vmess://")
class TestVLESSPatterns:
def test_vless_url_detection(self):
url = "vless://uuid@server:443?type=tcp"
assert ProxyPatterns.is_vless(url) is True
def test_vless_extraction(self):
text = "vless://some-uuid@192.168.1.1:443?encryption=none&type=tcp"
matches = ProxyPatterns.extract_vless_urls(text)
assert len(matches) == 1
class TestTrojanPatterns:
def test_trojan_url_detection(self):
url = "trojan://password@server:443"
assert ProxyPatterns.is_trojan(url) is True
def test_trojan_extraction(self):
text = "trojan://pass123@example.com:443?sni=example.com"
matches = ProxyPatterns.extract_trojan_urls(text)
assert len(matches) == 1
class TestShadowsocksPatterns:
def test_ss_url_detection(self):
url = "ss://base64encoded@server:8388"
assert ProxyPatterns.is_shadowsocks(url) is True
def test_ss_extraction(self):
text = "ss://YWVzLTI1Ni1nY206cGFzc3dvcmQ@192.168.1.1:8388"
matches = ProxyPatterns.extract_ss_urls(text)
assert len(matches) == 1