channel_monitor_duplicate_test.go 1.2 KB

1234567891011121314151617181920212223242526272829
  1. //go:build unit
  2. package repository
  3. import (
  4. "testing"
  5. dbent "github.com/Wei-Shaw/sub2api/ent"
  6. "github.com/Wei-Shaw/sub2api/internal/service"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func TestChannelMonitorDuplicateOperationMetadataStaysOutOfRuntimeHeaders(t *testing.T) {
  10. monitor := &service.ChannelMonitor{
  11. ExtraHeaders: map[string]string{"User-Agent": "Codex"},
  12. DuplicateOperationID: "operation-digest",
  13. }
  14. persisted := channelMonitorHeadersForPersistence(monitor)
  15. require.Equal(t, "operation-digest", persisted[service.ChannelMonitorDuplicateOperationIDMetadataKey])
  16. require.Equal(t, "Codex", persisted["User-Agent"])
  17. require.NotContains(t, monitor.ExtraHeaders, service.ChannelMonitorDuplicateOperationIDMetadataKey)
  18. restored := entToServiceMonitor(&dbent.ChannelMonitor{ExtraHeaders: persisted})
  19. require.Equal(t, "operation-digest", restored.DuplicateOperationID)
  20. require.Equal(t, map[string]string{"User-Agent": "Codex"}, restored.ExtraHeaders)
  21. require.NotContains(t, restored.ExtraHeaders, service.ChannelMonitorDuplicateOperationIDMetadataKey)
  22. require.Equal(t, "operation-digest", persisted[service.ChannelMonitorDuplicateOperationIDMetadataKey], "decoding must not mutate the ent row")
  23. }