package service import ( "testing" "github.com/stretchr/testify/require" ) func TestMergeAnthropicBeta(t *testing.T) { got := mergeAnthropicBeta( []string{"oauth-2025-04-20", "interleaved-thinking-2025-05-14"}, "foo, oauth-2025-04-20,bar, foo", ) require.Equal(t, "oauth-2025-04-20,interleaved-thinking-2025-05-14,foo,bar", got) } func TestMergeAnthropicBeta_EmptyIncoming(t *testing.T) { got := mergeAnthropicBeta( []string{"oauth-2025-04-20", "interleaved-thinking-2025-05-14"}, "", ) require.Equal(t, "oauth-2025-04-20,interleaved-thinking-2025-05-14", got) } func TestStripBetaToken(t *testing.T) { tests := []struct { name string header string token string want string }{ { name: "token in middle", header: "oauth-2025-04-20,context-1m-2025-08-07,interleaved-thinking-2025-05-14", token: "context-1m-2025-08-07", want: "oauth-2025-04-20,interleaved-thinking-2025-05-14", }, { name: "token at start", header: "context-1m-2025-08-07,oauth-2025-04-20,interleaved-thinking-2025-05-14", token: "context-1m-2025-08-07", want: "oauth-2025-04-20,interleaved-thinking-2025-05-14", }, { name: "token at end", header: "oauth-2025-04-20,interleaved-thinking-2025-05-14,context-1m-2025-08-07", token: "context-1m-2025-08-07", want: "oauth-2025-04-20,interleaved-thinking-2025-05-14", }, { name: "token not present", header: "oauth-2025-04-20,interleaved-thinking-2025-05-14", token: "context-1m-2025-08-07", want: "oauth-2025-04-20,interleaved-thinking-2025-05-14", }, { name: "empty header", header: "", token: "context-1m-2025-08-07", want: "", }, { name: "with spaces", header: "oauth-2025-04-20, context-1m-2025-08-07 , interleaved-thinking-2025-05-14", token: "context-1m-2025-08-07", want: "oauth-2025-04-20,interleaved-thinking-2025-05-14", }, { name: "only token", header: "context-1m-2025-08-07", token: "context-1m-2025-08-07", want: "", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := stripBetaToken(tt.header, tt.token) require.Equal(t, tt.want, got) }) } } func TestMergeAnthropicBetaDropping_Context1M(t *testing.T) { required := []string{"oauth-2025-04-20", "interleaved-thinking-2025-05-14"} incoming := "context-1m-2025-08-07,foo-beta,oauth-2025-04-20" drop := map[string]struct{}{"context-1m-2025-08-07": {}} got := mergeAnthropicBetaDropping(required, incoming, drop) require.Equal(t, "oauth-2025-04-20,interleaved-thinking-2025-05-14,foo-beta", got) require.NotContains(t, got, "context-1m-2025-08-07") }