File size: 1,249 Bytes
1998928 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import pytest
import base64
from app.utils.base64_decoder import SubscriptionDecoder
class TestBase64Decoder:
def test_decode_simple_base64(self):
original = "vmess://test123\nvless://test456"
encoded = base64.b64encode(original.encode()).decode()
decoded = SubscriptionDecoder.decode(encoded)
assert decoded == original
def test_decode_with_padding(self):
original = "proxy list"
encoded_with = base64.b64encode(original.encode()).decode()
encoded_without = encoded_with.rstrip("=")
assert SubscriptionDecoder.decode(encoded_with) == original
assert SubscriptionDecoder.decode(encoded_without) == original
def test_decode_multiline(self):
original = "line1\nline2\nline3"
encoded = base64.b64encode(original.encode()).decode()
decoded = SubscriptionDecoder.decode(encoded)
assert decoded.count("\n") == 2
assert "line1" in decoded
def test_invalid_base64(self):
with pytest.raises(ValueError):
SubscriptionDecoder.decode("not!@#$%valid&*base64")
def test_empty_string(self):
result = SubscriptionDecoder.decode("")
assert result == ""
|