Add AGENTS.md documentation for AI agent guidance
This commit is contained in:
87
tests/test_basic.py
Normal file
87
tests/test_basic.py
Normal file
@@ -0,0 +1,87 @@
|
||||
"""Basic tests for watsonx-openai-proxy."""
|
||||
|
||||
import pytest
|
||||
from fastapi.testclient import TestClient
|
||||
from app.main import app
|
||||
|
||||
client = TestClient(app)
|
||||
|
||||
|
||||
def test_health_check():
|
||||
"""Test the health check endpoint."""
|
||||
response = client.get("/health")
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["status"] == "healthy"
|
||||
assert "cluster" in data
|
||||
|
||||
|
||||
def test_root_endpoint():
|
||||
"""Test the root endpoint."""
|
||||
response = client.get("/")
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["service"] == "watsonx-openai-proxy"
|
||||
assert "endpoints" in data
|
||||
|
||||
|
||||
def test_list_models():
|
||||
"""Test listing available models."""
|
||||
response = client.get("/v1/models")
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["object"] == "list"
|
||||
assert len(data["data"]) > 0
|
||||
assert all(model["object"] == "model" for model in data["data"])
|
||||
|
||||
|
||||
def test_retrieve_model():
|
||||
"""Test retrieving a specific model."""
|
||||
response = client.get("/v1/models/ibm/granite-3-8b-instruct")
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["id"] == "ibm/granite-3-8b-instruct"
|
||||
assert data["object"] == "model"
|
||||
|
||||
|
||||
def test_retrieve_nonexistent_model():
|
||||
"""Test retrieving a model that doesn't exist."""
|
||||
response = client.get("/v1/models/nonexistent-model")
|
||||
assert response.status_code == 404
|
||||
|
||||
|
||||
# Note: The following tests require valid IBM Cloud credentials
|
||||
# and should be run with pytest markers or in integration tests
|
||||
|
||||
@pytest.mark.skip(reason="Requires valid IBM Cloud credentials")
|
||||
def test_chat_completion():
|
||||
"""Test chat completion endpoint."""
|
||||
response = client.post(
|
||||
"/v1/chat/completions",
|
||||
json={
|
||||
"model": "ibm/granite-3-8b-instruct",
|
||||
"messages": [
|
||||
{"role": "user", "content": "Hello!"}
|
||||
],
|
||||
},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert "choices" in data
|
||||
assert len(data["choices"]) > 0
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Requires valid IBM Cloud credentials")
|
||||
def test_embeddings():
|
||||
"""Test embeddings endpoint."""
|
||||
response = client.post(
|
||||
"/v1/embeddings",
|
||||
json={
|
||||
"model": "ibm/slate-125m-english-rtrvr",
|
||||
"input": "Test text",
|
||||
},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert "data" in data
|
||||
assert len(data["data"]) > 0
|
||||
Reference in New Issue
Block a user