77 lines
2.8 KiB
Python
77 lines
2.8 KiB
Python
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from app.core.pixiv_urls import parse_pixiv_original_url
|
|
|
|
|
|
def test_parse_pixiv_original_url_ok() -> None:
|
|
u = "https://i.pximg.net/img-original/img/2023/01/01/00/00/00/12345678_p0.jpg"
|
|
parsed = parse_pixiv_original_url(u)
|
|
assert parsed.illust_id == 12345678
|
|
assert parsed.page_index == 0
|
|
assert parsed.ext == "jpg"
|
|
|
|
|
|
def test_parse_pixiv_original_url_ok_master1200_suffix() -> None:
|
|
u = "https://i.pximg.net/img-master/img/2023/01/01/00/00/00/12345678_p1_master1200.png"
|
|
parsed = parse_pixiv_original_url(u)
|
|
assert parsed.illust_id == 12345678
|
|
assert parsed.page_index == 1
|
|
assert parsed.ext == "png"
|
|
|
|
|
|
def test_parse_pixiv_original_url_ok_square1200_suffix() -> None:
|
|
u = "https://i.pximg.net/img-master/img/2023/01/01/00/00/00/12345678_p2_square1200.jpg"
|
|
parsed = parse_pixiv_original_url(u)
|
|
assert parsed.illust_id == 12345678
|
|
assert parsed.page_index == 2
|
|
assert parsed.ext == "jpg"
|
|
|
|
|
|
def test_parse_pixiv_original_url_ok_mirror_host_pixiv_re() -> None:
|
|
u = "https://i.pixiv.re/img-original/img/2023/01/01/00/00/00/12345678_p0.jpg"
|
|
parsed = parse_pixiv_original_url(u)
|
|
assert parsed.illust_id == 12345678
|
|
assert parsed.page_index == 0
|
|
assert parsed.ext == "jpg"
|
|
|
|
|
|
def test_parse_pixiv_original_url_ok_ugoira0() -> None:
|
|
u = "https://i.pximg.net/img-original/img/2014/07/01/21/17/59/44439242_ugoira0.jpg"
|
|
parsed = parse_pixiv_original_url(u)
|
|
assert parsed.illust_id == 44439242
|
|
assert parsed.page_index == 0
|
|
assert parsed.ext == "jpg"
|
|
|
|
|
|
def test_parse_pixiv_original_url_ok_ugoira_zip() -> None:
|
|
u = "https://i.pximg.net/img-zip-ugoira/img/2023/01/01/00/00/00/12345678_ugoira600x600.zip"
|
|
parsed = parse_pixiv_original_url(u)
|
|
assert parsed.illust_id == 12345678
|
|
assert parsed.page_index == 0
|
|
assert parsed.ext == "zip"
|
|
|
|
|
|
def test_parse_pixiv_original_url_ignores_query_and_whitespace() -> None:
|
|
u = " https://i.pximg.net/img-original/img/2023/01/01/00/00/00/12345678_p12.PNG?foo=bar \n"
|
|
parsed = parse_pixiv_original_url(u)
|
|
assert parsed.illust_id == 12345678
|
|
assert parsed.page_index == 12
|
|
assert parsed.ext == "png"
|
|
|
|
|
|
def test_parse_pixiv_original_url_rejects_non_pximg() -> None:
|
|
with pytest.raises(ValueError, match="unsupported host"):
|
|
parse_pixiv_original_url("https://www.pixiv.net/artworks/12345678")
|
|
|
|
|
|
def test_parse_pixiv_original_url_rejects_wrong_pattern() -> None:
|
|
with pytest.raises(ValueError, match="unsupported pixiv original url"):
|
|
parse_pixiv_original_url("https://i.pximg.net/img-original/img/2023/01/01/00/00/00/12345678.jpg")
|
|
|
|
|
|
def test_parse_pixiv_original_url_rejects_unsupported_ext() -> None:
|
|
with pytest.raises(ValueError, match="unsupported ext"):
|
|
parse_pixiv_original_url("https://i.pximg.net/img-original/img/2023/01/01/00/00/00/12345678_p0.bmp")
|