Files
rbx-upload/tests/test_client.py
T

67 lines
2.2 KiB
Python

import os
import xml.etree.ElementTree as ET
from pathlib import Path
import pytest
from rbx_upload import RbxAssetType, RobloxClient
from rbx_upload.models import ClothingAsset, RbxAsset
SHIRT_ASSET_ID = 127203169647575
SHIRT_TEMPLATE_ID = 80789317092375
FIXTURES = Path(__file__).parent / "fixtures"
@pytest.fixture
def client():
roblosecurity = os.environ["ROBLOSECURITY"]
return RobloxClient(roblosecurity=roblosecurity, publisher_user_id=0)
# ---------------------------------------------------------------------------
# _get_shirt_template_id_from_xml (pure, no HTTP)
# ---------------------------------------------------------------------------
def test_get_shirt_template_id_from_xml():
root = ET.parse(FIXTURES / "shirt.xml").getroot()
assert RobloxClient._get_shirt_template_id_from_xml(root) == SHIRT_TEMPLATE_ID
def test_get_shirt_template_id_missing_url_tag():
root = ET.fromstring("<root><other>data</other></root>")
with pytest.raises(ValueError, match="<url> tag"):
RobloxClient._get_shirt_template_id_from_xml(root)
def test_get_shirt_template_id_empty_url_tag():
root = ET.fromstring("<root><url></url></root>")
with pytest.raises(ValueError, match="did not contain any text"):
RobloxClient._get_shirt_template_id_from_xml(root)
# ---------------------------------------------------------------------------
# asset_from_id (live HTTP)
# ---------------------------------------------------------------------------
async def test_asset_from_id_returns_clothing_asset(client):
async with client:
asset = await client.asset_from_id(SHIRT_ASSET_ID)
assert isinstance(asset, ClothingAsset)
assert asset.asset_id == SHIRT_ASSET_ID
assert asset.asset_type == RbxAssetType.SHIRT
# ---------------------------------------------------------------------------
# fetch_clothing_image (live HTTP)
# ---------------------------------------------------------------------------
async def test_fetch_clothing_image_returns_png(client):
async with client:
shirt = await client.asset_from_id(SHIRT_ASSET_ID)
image = await client.fetch_clothing_image(shirt)
assert isinstance(image, bytes)
assert image[:4] == b"\x89PNG"