user_lookup_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package handler
  2. import (
  3. "bytes"
  4. "log/slog"
  5. "testing"
  6. "github.com/mk6i/retro-aim-server/wire"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/stretchr/testify/mock"
  9. )
  10. func TestUserLookupHandler_FindByEmail(t *testing.T) {
  11. input := wire.SNACMessage{
  12. Frame: wire.SNACFrame{
  13. FoodGroup: wire.UserLookup,
  14. SubGroup: wire.UserLookupFindByEmail,
  15. },
  16. Body: wire.SNAC_0x0A_0x02_UserLookupFindByEmail{
  17. Email: []byte("haha@aol.com"),
  18. },
  19. }
  20. output := wire.SNACMessage{
  21. Frame: wire.SNACFrame{
  22. FoodGroup: wire.UserLookup,
  23. SubGroup: wire.UserLookupFindReply,
  24. },
  25. Body: wire.SNAC_0x0A_0x03_UserLookupFindReply{
  26. TLVRestBlock: wire.TLVRestBlock{
  27. TLVList: wire.TLVList{
  28. wire.NewTLVBE(0x01, uint16(0x02)),
  29. },
  30. },
  31. },
  32. }
  33. svc := newMockUserLookupService(t)
  34. svc.EXPECT().
  35. FindByEmail(mock.Anything, input.Frame, input.Body).
  36. Return(output, nil)
  37. h := NewUserLookupHandler(slog.Default(), svc)
  38. ss := newMockResponseWriter(t)
  39. ss.EXPECT().
  40. SendSNAC(output.Frame, output.Body).
  41. Return(nil)
  42. buf := &bytes.Buffer{}
  43. assert.NoError(t, wire.MarshalBE(input.Body, buf))
  44. assert.NoError(t, h.FindByEmail(nil, nil, input.Frame, buf, ss))
  45. }