stats_test.go 983 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package handler
  2. import (
  3. "bytes"
  4. "log/slog"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/stretchr/testify/mock"
  8. "github.com/mk6i/retro-aim-server/wire"
  9. )
  10. func TestStatsHandler_ReportEvents(t *testing.T) {
  11. input := wire.SNACMessage{
  12. Frame: wire.SNACFrame{
  13. FoodGroup: wire.Stats,
  14. SubGroup: wire.StatsReportEvents,
  15. },
  16. Body: wire.SNAC_0x0B_0x03_StatsReportEvents{},
  17. }
  18. output := wire.SNACMessage{
  19. Frame: wire.SNACFrame{
  20. FoodGroup: wire.Stats,
  21. SubGroup: wire.StatsReportAck,
  22. },
  23. Body: wire.SNAC_0x0B_0x04_StatsReportAck{},
  24. }
  25. svc := newMockStatsService(t)
  26. svc.EXPECT().
  27. ReportEvents(mock.Anything, input.Frame, input.Body).
  28. Return(output)
  29. h := NewStatsHandler(slog.Default(), svc)
  30. ss := newMockResponseWriter(t)
  31. ss.EXPECT().
  32. SendSNAC(output.Frame, output.Body).
  33. Return(nil)
  34. buf := &bytes.Buffer{}
  35. assert.NoError(t, wire.MarshalBE(input.Body, buf))
  36. assert.NoError(t, h.ReportEvents(nil, nil, input.Frame, buf, ss))
  37. }