170 lines
6.0 KiB
Python
170 lines
6.0 KiB
Python
import json
|
|
import subprocess
|
|
import sys
|
|
|
|
from tests.test_pixelrag_rag_candidate_replay_service import (
|
|
_write_platform_probe_worker_receipt,
|
|
)
|
|
|
|
|
|
def test_pixelrag_source_contract_replay_worker_dry_run_reads_worker_receipts(tmp_path):
|
|
from services.pixelrag_source_contract_replay_worker_service import (
|
|
POLICY,
|
|
run_pixelrag_source_contract_replay_worker,
|
|
)
|
|
|
|
worker_root = tmp_path / "worker"
|
|
_write_platform_probe_worker_receipt(
|
|
worker_root,
|
|
platform="coupang_tw",
|
|
manifest_id="coupang-403",
|
|
barrier_type="access_denied",
|
|
)
|
|
_write_platform_probe_worker_receipt(
|
|
worker_root,
|
|
platform="shopee_tw",
|
|
manifest_id="shopee-runtime-gap",
|
|
worker_status="capture_runtime_unavailable_structured_fallback_package",
|
|
barrier_type="traffic_verification_interstitial",
|
|
capture_runtime_unavailable=True,
|
|
)
|
|
|
|
payload = run_pixelrag_source_contract_replay_worker(
|
|
artifact_root=tmp_path / "visual_empty",
|
|
platform_probe_worker_receipt_root=worker_root,
|
|
platform=("coupang_tw", "shopee_tw"),
|
|
)
|
|
by_platform = {item["platform"]: item for item in payload["worker_items"]}
|
|
|
|
assert payload["policy"] == POLICY
|
|
assert payload["status"] == "ok"
|
|
assert payload["execute"] is False
|
|
assert payload["summary"]["candidate_count"] == 2
|
|
assert payload["summary"]["ready_count"] == 2
|
|
assert payload["summary"]["dry_run_count"] == 2
|
|
assert payload["summary"]["capture_runtime_gap_count"] == 1
|
|
assert payload["summary"]["writes_database_count"] == 0
|
|
assert payload["controlled_apply"]["network_call"] is False
|
|
assert payload["controlled_apply"]["writes_database"] is False
|
|
assert payload["controlled_apply"]["primary_human_gate_count"] == 0
|
|
assert payload["next_machine_action"] == (
|
|
"run_pixelrag_source_contract_replay_worker_execute"
|
|
)
|
|
assert by_platform["coupang_tw"]["worker_status"] == (
|
|
"dry_run_ready_for_source_contract_replay"
|
|
)
|
|
assert by_platform["coupang_tw"]["source_contract_checks"][
|
|
"blocked_page_not_product_data"
|
|
] is True
|
|
assert by_platform["shopee_tw"]["capture_runtime_unavailable"] is True
|
|
|
|
|
|
def test_pixelrag_source_contract_replay_worker_execute_writes_receipts(tmp_path):
|
|
from services.pixelrag_source_contract_replay_worker_service import (
|
|
run_pixelrag_source_contract_replay_worker,
|
|
)
|
|
|
|
worker_root = tmp_path / "worker"
|
|
output_root = tmp_path / "source_contract_receipts"
|
|
_write_platform_probe_worker_receipt(
|
|
worker_root,
|
|
platform="coupang_tw",
|
|
manifest_id="coupang-403",
|
|
barrier_type="access_denied",
|
|
)
|
|
|
|
payload = run_pixelrag_source_contract_replay_worker(
|
|
artifact_root=tmp_path / "visual_empty",
|
|
platform_probe_worker_receipt_root=worker_root,
|
|
output_root=output_root,
|
|
platform="coupang_tw",
|
|
execute=True,
|
|
write_receipt=True,
|
|
)
|
|
|
|
assert payload["status"] == "ok"
|
|
assert payload["summary"]["executed_count"] == 1
|
|
assert payload["summary"]["receipt_written_count"] == 1
|
|
assert payload["controlled_apply"]["artifact_write"] is True
|
|
assert payload["controlled_apply"]["writes_database"] is False
|
|
assert payload["next_machine_action"] == (
|
|
"run_marketplace_source_contract_adapter_replay_preflight"
|
|
)
|
|
receipt_path = (
|
|
output_root
|
|
/ "coupang_tw"
|
|
/ "coupang-403"
|
|
/ "source_contract_replay_receipt.json"
|
|
)
|
|
assert receipt_path.exists()
|
|
receipt = json.loads(receipt_path.read_text(encoding="utf-8"))
|
|
assert receipt["worker_status"] == "executed_source_contract_replay_ready"
|
|
assert receipt["artifact_write_performed"] is True
|
|
assert receipt["writes_database"] is False
|
|
assert receipt["source_contract_preview"]["source_contract_version"] == (
|
|
"pixelrag_marketplace_source_contract_v1"
|
|
)
|
|
|
|
|
|
def test_pixelrag_source_contract_replay_worker_cli_outputs_json(tmp_path):
|
|
worker_root = tmp_path / "worker"
|
|
_write_platform_probe_worker_receipt(
|
|
worker_root,
|
|
platform="coupang_tw",
|
|
manifest_id="coupang-403",
|
|
barrier_type="access_denied",
|
|
)
|
|
|
|
completed = subprocess.run(
|
|
[
|
|
sys.executable,
|
|
"scripts/ops/run_pixelrag_source_contract_replay_worker.py",
|
|
"--artifact-root",
|
|
str(tmp_path / "visual_empty"),
|
|
"--platform-probe-worker-receipt-root",
|
|
str(worker_root),
|
|
"--platform",
|
|
"coupang_tw",
|
|
],
|
|
capture_output=True,
|
|
check=False,
|
|
text=True,
|
|
)
|
|
|
|
assert completed.returncode == 0
|
|
payload = json.loads(completed.stdout)
|
|
assert payload["summary"]["candidate_count"] == 1
|
|
assert payload["summary"]["ready_count"] == 1
|
|
assert payload["controlled_apply"]["writes_database"] is False
|
|
|
|
|
|
def test_pixelrag_source_contract_replay_worker_route_returns_readback(tmp_path, monkeypatch):
|
|
from flask import Flask
|
|
from routes import system_public_routes as routes
|
|
from services import pixelrag_source_contract_replay_worker_service as service
|
|
|
|
worker_root = tmp_path / "worker"
|
|
_write_platform_probe_worker_receipt(
|
|
worker_root,
|
|
platform="coupang_tw",
|
|
manifest_id="coupang-403",
|
|
barrier_type="access_denied",
|
|
)
|
|
monkeypatch.setattr(
|
|
service,
|
|
"DEFAULT_PLATFORM_PROBE_WORKER_RECEIPT_ROOT",
|
|
str(worker_root),
|
|
)
|
|
|
|
app = Flask(__name__)
|
|
with app.test_request_context(
|
|
"/api/ai-automation/pixelrag-source-contract-replay-worker?platform=coupang_tw"
|
|
):
|
|
response = routes.ai_automation_pixelrag_source_contract_replay_worker_api.__wrapped__()
|
|
payload = response.get_json()
|
|
|
|
assert payload["policy"] == "controlled_pixelrag_source_contract_replay_worker_v1"
|
|
assert payload["summary"]["candidate_count"] == 1
|
|
assert payload["summary"]["ready_count"] == 1
|
|
assert payload["controlled_apply"]["writes_database"] is False
|