diff --git a/.github/workflows/ci-package.yml b/.github/workflows/ci-package.yml index c01389e7..832b45d5 100644 --- a/.github/workflows/ci-package.yml +++ b/.github/workflows/ci-package.yml @@ -59,3 +59,18 @@ jobs: grep -E "strix/bin/strix-tui" archive.txt >/dev/null grep -E "'google\.auth\.transport\.requests'" archive.txt >/dev/null grep -E "'boto3\.session'" archive.txt >/dev/null + - name: Binary reaches Vertex AI and Bedrock authentication + env: + STRIX_TELEMETRY: "false" + STRIX_IMAGE: alpine:3.20 + VERTEXAI_PROJECT: strix-ci + VERTEXAI_LOCATION: us-central1 + AWS_REGION: us-east-1 + run: | + mkdir -p /tmp/target && echo 'print("hi")' > /tmp/target/app.py + STRIX_LLM=vertex_ai/gemini-2.5-pro dist/strix -n -t /tmp/target --scan-mode quick > vertex.log 2>&1 || true + grep -q "DefaultCredentialsError" vertex.log + ! grep -q "No module named" vertex.log + STRIX_LLM=bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0 dist/strix -n -t /tmp/target --scan-mode quick > bedrock.log 2>&1 || true + grep -q "Unable to locate credentials" bedrock.log + ! grep -q "No module named" bedrock.log diff --git a/pyproject.toml b/pyproject.toml index ffa2aa51..d154810b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,7 @@ dependencies = [ "openai>=2.45.0,<3", "litellm>=1.101.0", "google-auth>=2.0.0", + "boto3>=1.28.0", "pydantic>=2.11.3", "pydantic-settings>=2.13.0", "rich", diff --git a/tests/test_provider_dependencies.py b/tests/test_provider_dependencies.py index 3e8ef9eb..4dd87cc6 100644 --- a/tests/test_provider_dependencies.py +++ b/tests/test_provider_dependencies.py @@ -16,10 +16,11 @@ def _pyproject() -> dict[str, object]: return tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8")) -def test_google_auth_is_a_regular_dependency() -> None: +@pytest.mark.parametrize("package", ["google-auth", "boto3"]) +def test_provider_packages_are_regular_dependencies(package: str) -> None: project = _pyproject()["project"] assert isinstance(project, dict) - assert any(req.startswith("google-auth") for req in project["dependencies"]) + assert any(req.startswith(package) for req in project["dependencies"]) assert "optional-dependencies" not in project diff --git a/uv.lock b/uv.lock index 0936229c..e53c32d0 100644 --- a/uv.lock +++ b/uv.lock @@ -2389,6 +2389,7 @@ name = "strix-agent" version = "1.6.2" source = { editable = "." } dependencies = [ + { name = "boto3" }, { name = "caido-sdk-client" }, { name = "cryptography" }, { name = "cvss" }, @@ -2422,6 +2423,7 @@ dev = [ [package.metadata] requires-dist = [ + { name = "boto3", specifier = ">=1.28.0" }, { name = "caido-sdk-client", specifier = ">=0.2.0" }, { name = "cryptography", specifier = ">=48.0.1,<49" }, { name = "cvss", specifier = ">=3.2" },