gomcp/internal/domain/oracle/service_test.go

97 lines
2.7 KiB
Go

package oracle
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestService_DefaultMode(t *testing.T) {
svc := NewService()
assert.Equal(t, OModeArmed, svc.GetMode())
}
func TestService_SetMode(t *testing.T) {
svc := NewService()
svc.SetMode(OModeZeroG)
assert.Equal(t, OModeZeroG, svc.GetMode())
svc.SetMode(OModeSafe)
assert.Equal(t, OModeSafe, svc.GetMode())
}
func TestService_Evaluate_Armed_CleanContent(t *testing.T) {
svc := NewService()
result := svc.Evaluate("normal project fact about architecture")
assert.Equal(t, EvalAllow, result.Verdict)
assert.Equal(t, "STANDARD", result.Origin)
assert.Equal(t, "ARMED", result.Mode)
}
func TestService_Evaluate_Armed_SecretBlocked(t *testing.T) {
svc := NewService()
result := svc.Evaluate(`api_key = "sk-1234567890abcdefghijklmnopqrstuv"`)
assert.Equal(t, EvalDenySecret, result.Verdict)
assert.Equal(t, "SECURITY", result.Origin)
assert.NotEmpty(t, result.Detections)
}
func TestService_Evaluate_ZeroG_CleanContent(t *testing.T) {
svc := NewService()
svc.SetMode(OModeZeroG)
result := svc.Evaluate("offensive research data for red team analysis")
assert.Equal(t, EvalRawIntent, result.Verdict)
assert.Equal(t, "RAW_INTENT", result.Origin)
assert.Equal(t, "ZERO-G", result.Mode)
}
func TestService_Evaluate_ZeroG_SecretStillBlocked(t *testing.T) {
svc := NewService()
svc.SetMode(OModeZeroG)
// Even in ZERO-G, secrets are ALWAYS blocked.
result := svc.Evaluate(`password = "super_secret_password_123"`)
assert.Equal(t, EvalDenySecret, result.Verdict)
assert.Equal(t, "SECURITY", result.Origin)
}
func TestService_Evaluate_Safe_AllBlocked(t *testing.T) {
svc := NewService()
svc.SetMode(OModeSafe)
result := svc.Evaluate("any content in safe mode")
assert.Equal(t, EvalDenySafe, result.Verdict)
assert.Equal(t, "SAFE_MODE", result.Origin)
}
func TestService_EvaluateWrite_Safe(t *testing.T) {
svc := NewService()
svc.SetMode(OModeSafe)
result := svc.EvaluateWrite()
assert.Equal(t, EvalDenySafe, result.Verdict)
}
func TestService_EvaluateWrite_Armed(t *testing.T) {
svc := NewService()
result := svc.EvaluateWrite()
assert.Equal(t, EvalAllow, result.Verdict)
}
func TestFormatOriginTag(t *testing.T) {
assert.Equal(t, "origin:RAW_INTENT",
FormatOriginTag(&EvalResult{Origin: "RAW_INTENT"}))
assert.Equal(t, "origin:STANDARD",
FormatOriginTag(&EvalResult{Origin: "STANDARD"}))
}
func TestEvalVerdict_String(t *testing.T) {
assert.Equal(t, "ALLOW", EvalAllow.String())
assert.Equal(t, "DENY:SECRET", EvalDenySecret.String())
assert.Equal(t, "DENY:ETHICAL", EvalDenyEthical.String())
assert.Equal(t, "ALLOW:RAW_INTENT", EvalRawIntent.String())
assert.Equal(t, "DENY:SAFE_MODE", EvalDenySafe.String())
}