# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the terms described in the LICENSE file in
# the root directory of this source tree.

"""
Test for extra_body parameter support with shields example.

This test demonstrates that parameters marked with ExtraBodyField annotation
can be passed via extra_body in the client SDK and are received by the
server-side implementation.
"""

import pytest
from llama_stack_client import APIStatusError


@pytest.mark.xfail(reason="Shields are not yet implemented inside responses")
def test_shields_via_extra_body(compat_client, text_model_id):
    """Test that shields parameter is received by the server and raises NotImplementedError."""

    # Test with shields as list of strings (shield IDs)
    with pytest.raises((APIStatusError, NotImplementedError)) as exc_info:
        compat_client.responses.create(
            model=text_model_id,
            input="What is the capital of France?",
            stream=False,
            extra_body={"shields": ["test-shield-1", "test-shield-2"]},
        )

    # Verify the error message indicates shields are not implemented
    error_message = str(exc_info.value)
    assert "not yet implemented" in error_message.lower() or "not implemented" in error_message.lower()
