70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
"""Smoke tests for the xAI video gen plugin — load & register surface."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from agent import video_gen_registry
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _reset_registry():
|
|
video_gen_registry._reset_for_tests()
|
|
yield
|
|
video_gen_registry._reset_for_tests()
|
|
|
|
|
|
def test_xai_provider_registers():
|
|
from plugins.video_gen.xai import XAIVideoGenProvider
|
|
|
|
provider = XAIVideoGenProvider()
|
|
video_gen_registry.register_provider(provider)
|
|
|
|
assert video_gen_registry.get_provider("xai") is provider
|
|
assert provider.display_name == "xAI"
|
|
assert provider.default_model() == "grok-imagine-video"
|
|
|
|
|
|
def test_xai_capabilities_text_and_image_only():
|
|
"""xAI was previously advertised with edit/extend operations. The
|
|
simplified surface only exposes text-to-video and image-to-video —
|
|
confirm those are the only modalities advertised."""
|
|
from plugins.video_gen.xai import XAIVideoGenProvider
|
|
|
|
caps = XAIVideoGenProvider().capabilities()
|
|
assert caps["modalities"] == ["text", "image"]
|
|
# No 'operations' key in the simplified surface
|
|
assert "operations" not in caps
|
|
assert caps["max_reference_images"] == 7
|
|
|
|
|
|
def test_xai_unavailable_without_key(monkeypatch):
|
|
from plugins.video_gen.xai import XAIVideoGenProvider
|
|
|
|
monkeypatch.delenv("XAI_API_KEY", raising=False)
|
|
assert XAIVideoGenProvider().is_available() is False
|
|
|
|
|
|
def test_xai_generate_requires_xai_key(monkeypatch):
|
|
from plugins.video_gen.xai import XAIVideoGenProvider
|
|
|
|
monkeypatch.delenv("XAI_API_KEY", raising=False)
|
|
result = XAIVideoGenProvider().generate("a happy dog")
|
|
assert result["success"] is False
|
|
assert result["error_type"] == "auth_required"
|
|
|
|
|
|
def test_xai_no_operation_kwarg():
|
|
"""The ABC's generate() signature no longer accepts 'operation'.
|
|
Passing it through **kwargs should be ignored (forward-compat)."""
|
|
from plugins.video_gen.xai import XAIVideoGenProvider
|
|
|
|
# We're not actually hitting the network — just verify the call
|
|
# doesn't TypeError on the unexpected kwarg.
|
|
# Will fail with auth_required (no XAI_API_KEY), but should NOT
|
|
# fail with TypeError.
|
|
result = XAIVideoGenProvider().generate("x", operation="generate")
|
|
assert result["success"] is False
|
|
# auth_required, NOT some signature error
|
|
assert result["error_type"] in ("auth_required", "api_error")
|