package service import ( "context" "testing" "github.com/Wei-Shaw/sub2api/internal/config" "github.com/stretchr/testify/require" ) func resetGatewayForwardingSettingsCacheForTest(t *testing.T) { t.Helper() gatewayForwardingSF.Forget("gateway_forwarding") gatewayForwardingCache.Store(&cachedGatewayForwardingSettings{}) t.Cleanup(func() { gatewayForwardingSF.Forget("gateway_forwarding") gatewayForwardingCache.Store(&cachedGatewayForwardingSettings{}) }) } func TestSettingService_GetClaudeOAuthSystemPromptInjectionSettings(t *testing.T) { t.Run("defaults to enabled with empty prompt", func(t *testing.T) { resetGatewayForwardingSettingsCacheForTest(t) svc := NewSettingService(&gatewayTTLSettingRepo{data: map[string]string{}}, &config.Config{}) enabled, prompt, blocks := svc.GetClaudeOAuthSystemPromptInjectionSettings(context.Background()) require.True(t, enabled) require.Empty(t, prompt) require.Empty(t, blocks) }) t.Run("uses configured switch prompt and blocks", func(t *testing.T) { resetGatewayForwardingSettingsCacheForTest(t) const customPrompt = "custom prompt\n\nkeep spacing" const customBlocks = `[{"type":"text","text":"custom block","cache_control":true}]` svc := NewSettingService(&gatewayTTLSettingRepo{data: map[string]string{ SettingKeyEnableClaudeOAuthSystemPromptInjection: "false", SettingKeyClaudeOAuthSystemPrompt: customPrompt, SettingKeyClaudeOAuthSystemPromptBlocks: customBlocks, }}, &config.Config{}) enabled, prompt, blocks := svc.GetClaudeOAuthSystemPromptInjectionSettings(context.Background()) require.False(t, enabled) require.Equal(t, customPrompt, prompt) require.Equal(t, customBlocks, blocks) }) }