AIstudioProxyAPI / tests /api_utils /test_common_utils.py
peijun1's picture
Deploy AI Studio Proxy API to Hugging Face Spaces
a5784e9
Raw
History Blame Contribute Delete
3.77 kB
"""
High-quality tests for api_utils/common_utils.py - Random ID generation.
Focus: Test random_id function with various lengths and verify output format.
Strategy: Test default/custom lengths, character set, uniqueness.
"""
import re
from api_utils.common_utils import random_id
def test_random_id_default_length():
"""
Test scenario: Generate random ID with default length
Expected: Return 24-character string (lines 5-6)
"""
result = random_id()
# Verify: Length is 24
assert len(result) == 24
# Verify: Only contains lowercase letters and numbers
assert re.match(r"^[a-z0-9]+$", result)
def test_random_id_custom_length_short():
"""
Test scenario: Generate random ID with short length (5)
Expected: Return 5-character string
"""
result = random_id(5)
# Verify: Length is 5
assert len(result) == 5
# Verify: Only contains lowercase letters and numbers
assert re.match(r"^[a-z0-9]+$", result)
def test_random_id_custom_length_long():
"""
Test scenario: Generate random ID with long length (100)
Expected: Return 100-character string
"""
result = random_id(100)
# Verify: Length is 100
assert len(result) == 100
# Verify: Only contains lowercase letters and numbers
assert re.match(r"^[a-z0-9]+$", result)
def test_random_id_length_one():
"""
Test scenario: Generate random ID with length 1
Expected: Return 1-character string
"""
result = random_id(1)
# Verify: Length is 1
assert len(result) == 1
# Verify: Character is a lowercase letter or number
assert result in "abcdefghijklmnopqrstuvwxyz0123456789"
def test_random_id_length_zero():
"""
Test scenario: Generate random ID with length 0
Expected: Return empty string
"""
result = random_id(0)
# Verify: Empty string
assert result == ""
assert len(result) == 0
def test_random_id_character_set():
"""
Test scenario: Verify character set only contains lowercase letters and numbers
Expected: Does not contain uppercase letters, special characters, or spaces (line 5)
"""
result = random_id(50)
# Verify: Each character is in the expected character set
charset = "abcdefghijklmnopqrstuvwxyz0123456789"
for char in result:
assert char in charset
def test_random_id_uniqueness():
"""
Test scenario: Multiple calls return different values
Expected: Generated IDs have high uniqueness
"""
results = [random_id() for _ in range(100)]
# Verify: 100 calls have at least 95 different values (considering minimal probability of collision)
unique_results = set(results)
assert len(unique_results) >= 95
def test_random_id_no_uppercase():
"""
Test scenario: Verify no uppercase letters included
Expected: Output does not contain A-Z
"""
result = random_id(50)
# Verify: No uppercase letters
assert not any(char.isupper() for char in result)
def test_random_id_no_special_characters():
"""
Test scenario: Verify no special characters included
Expected: Output only contains alphanumeric characters
"""
result = random_id(50)
# Verify: Is alphanumeric
assert result.isalnum()
# Verify: No spaces, punctuation, or other special characters
assert not any(not char.isalnum() for char in result)
def test_random_id_multiple_calls_different_values():
"""
Test scenario: Consecutive calls should return different values
Expected: Two calls return different IDs (high probability)
"""
id1 = random_id()
id2 = random_id()
# Verify: Extremely high probability of being different (theoretically could be same but probability is very low)
assert id1 != id2