88 lines
3.7 KiB
Go
88 lines
3.7 KiB
Go
package integrations
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestFilterVertexUnsupportedBetaHeaders(t *testing.T) {
|
|
t.Run("filters known exact header values", func(t *testing.T) {
|
|
headers := map[string][]string{
|
|
"anthropic-beta": {"advanced-tool-use-2025-11-20,structured-outputs-2025-11-13,mcp-client-2025-04-04,prompt-caching-scope-2026-01-05"},
|
|
}
|
|
result := filterVertexUnsupportedBetaHeaders(headers)
|
|
_, ok := result["anthropic-beta"]
|
|
assert.False(t, ok, "all unsupported beta headers should be removed, leaving no anthropic-beta key")
|
|
})
|
|
|
|
t.Run("filters bumped date variants", func(t *testing.T) {
|
|
// Simulate Anthropic bumping version dates in the future
|
|
headers := map[string][]string{
|
|
"anthropic-beta": {"structured-outputs-2025-12-15,advanced-tool-use-2026-03-01,mcp-client-2026-01-01,prompt-caching-scope-2027-06-30"},
|
|
}
|
|
result := filterVertexUnsupportedBetaHeaders(headers)
|
|
_, ok := result["anthropic-beta"]
|
|
assert.False(t, ok, "bumped-date variants of unsupported headers should also be filtered")
|
|
})
|
|
|
|
t.Run("passes through unrelated beta headers", func(t *testing.T) {
|
|
headers := map[string][]string{
|
|
"anthropic-beta": {"interleaved-thinking-2025-05-14,files-api-2025-04-14"},
|
|
}
|
|
result := filterVertexUnsupportedBetaHeaders(headers)
|
|
vals, ok := result["anthropic-beta"]
|
|
assert.True(t, ok, "unrelated beta headers should be preserved")
|
|
assert.Equal(t, []string{"interleaved-thinking-2025-05-14,files-api-2025-04-14"}, vals)
|
|
})
|
|
|
|
t.Run("filters unsupported and keeps supported in mixed list", func(t *testing.T) {
|
|
headers := map[string][]string{
|
|
"anthropic-beta": {"interleaved-thinking-2025-05-14,structured-outputs-2025-11-13,files-api-2025-04-14,mcp-client-2025-04-04"},
|
|
}
|
|
result := filterVertexUnsupportedBetaHeaders(headers)
|
|
vals, ok := result["anthropic-beta"]
|
|
assert.True(t, ok, "supported beta headers should be preserved")
|
|
assert.Equal(t, []string{"interleaved-thinking-2025-05-14,files-api-2025-04-14"}, vals)
|
|
})
|
|
|
|
t.Run("filters bumped unsupported mixed with supported", func(t *testing.T) {
|
|
// Future-proof: bumped dates should still be filtered
|
|
headers := map[string][]string{
|
|
"anthropic-beta": {"structured-outputs-2026-01-01,interleaved-thinking-2025-05-14,advanced-tool-use-2026-06-15"},
|
|
}
|
|
result := filterVertexUnsupportedBetaHeaders(headers)
|
|
vals, ok := result["anthropic-beta"]
|
|
assert.True(t, ok, "supported beta headers should be preserved even when mixed with bumped unsupported ones")
|
|
assert.Equal(t, []string{"interleaved-thinking-2025-05-14"}, vals)
|
|
})
|
|
|
|
t.Run("returns headers unchanged when no anthropic-beta key present", func(t *testing.T) {
|
|
headers := map[string][]string{
|
|
"content-type": {"application/json"},
|
|
}
|
|
result := filterVertexUnsupportedBetaHeaders(headers)
|
|
assert.Equal(t, headers, result)
|
|
})
|
|
|
|
t.Run("handles empty anthropic-beta value gracefully", func(t *testing.T) {
|
|
headers := map[string][]string{
|
|
"anthropic-beta": {""},
|
|
}
|
|
result := filterVertexUnsupportedBetaHeaders(headers)
|
|
// Empty string after trimming is not an unsupported header, but it is also empty — key should be removed
|
|
_, ok := result["anthropic-beta"]
|
|
assert.False(t, ok, "empty beta header list should result in key removal")
|
|
})
|
|
|
|
t.Run("case-insensitive key matching for Anthropic-Beta header", func(t *testing.T) {
|
|
headers := map[string][]string{
|
|
"Anthropic-Beta": {"structured-outputs-2025-11-13,interleaved-thinking-2025-05-14"},
|
|
}
|
|
result := filterVertexUnsupportedBetaHeaders(headers)
|
|
vals, ok := result["Anthropic-Beta"]
|
|
assert.True(t, ok, "header key casing should be preserved and matching should be case-insensitive")
|
|
assert.Equal(t, []string{"interleaved-thinking-2025-05-14"}, vals)
|
|
})
|
|
}
|