| 123456789101112131415161718192021222324252627282930313233 |
- package service
- import (
- "github.com/gin-gonic/gin"
- "github.com/stretchr/testify/require"
- "testing"
- )
- func TestAccountProtectionIndependentIntegrityModes(t *testing.T) {
- a := &Account{ID: 42, Platform: PlatformOpenAI, Type: AccountTypeOAuth, Concurrency: 4}
- PrepareNewAccountProtection(a)
- require.Equal(t, "legacy", a.ProtectionMode())
- require.Equal(t, "observe", a.RequestIntegrityMode())
- before := []byte(`{"input":[{"role":"user","content":"question"}],"tools":[{"type":"function","name":"important"}]}`)
- after := []byte(`{"input":[{"role":"user","content":"question"}]}`)
- c, _ := gin.CreateTestContext(nil)
- stageMode1Request(c, a, before)
- require.NoError(t, validateMode1StagedRequest(c, a, after), "observation must preserve the existing request path")
- flag, exists := c.Get("request_integrity_difference")
- require.True(t, exists)
- require.Equal(t, true, flag)
- require.Equal(t, "nodejs24", a.Extra["tls_fingerprint_builtin"])
- a.Extra[requestIntegrityModeKey] = "enforce"
- require.Error(t, validateMode1StagedRequest(c, a, after))
- a.Extra[requestIntegrityModeKey] = "off"
- require.NoError(t, validateMode1StagedRequest(c, a, after))
- a.Extra[AntiDegradeMarkerExtraKey] = map[string]any{"enabled": true, "mode": "mode1", "policy_version": 3}
- require.Equal(t, "off", a.RequestIntegrityMode(), "explicit administrator choice overrides the mode1 default")
- delete(a.Extra,requestIntegrityModeKey)
- require.Equal(t,"enforce",a.RequestIntegrityMode(),"existing mode1 defaults remain compatible when no override is saved")
- require.Error(t, validateRequestIntegrityExtra(map[string]any{requestIntegrityModeKey: "unknown"}))
- require.NoError(t, validateRequestIntegrityExtra(map[string]any{requestIntegrityModeKey: nil}))
- }
|