# retoor import pytest from pydantic import ValidationError from devplacepy.models import GameLegacyForm def test_game_legacy_form_accepts_valid_key(): assert GameLegacyForm(key="multiplier").key == "multiplier" def test_game_legacy_form_rejects_empty_key(): with pytest.raises(ValidationError): GameLegacyForm(key="") def test_game_legacy_form_rejects_overlong_key(): with pytest.raises(ValidationError): GameLegacyForm(key="x" * 41) def test_isslop_run_form_accepts_git_and_http_sources(): from devplacepy.models import IsslopRunForm assert IsslopRunForm(url="https://github.com/owner/repo").url == "https://github.com/owner/repo" assert IsslopRunForm(url="git@github.com:owner/repo.git").url == "git@github.com:owner/repo.git" assert IsslopRunForm(url=" https://example.com ").url == "https://example.com" def test_isslop_run_form_rejects_other_schemes(): from devplacepy.models import IsslopRunForm for bad in ("ftp://example.com/file", "javascript:alert(1)//aaa", "file:///etc/passwd"): with pytest.raises(ValidationError): IsslopRunForm(url=bad) def test_isslop_run_form_normalizes_typos_and_bare_domains(): from devplacepy.models import IsslopRunForm assert ( IsslopRunForm(url="https:/retoor.molodetz.nl/retoor/devplacepy").url == "https://retoor.molodetz.nl/retoor/devplacepy" ) assert IsslopRunForm(url="example.com/owner/repo").url == "https://example.com/owner/repo" assert IsslopRunForm(url="http:/x.dev/a").url == "http://x.dev/a"