bart_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 TestBARTHandler_DownloadQuery(t *testing.T) {
  11. input := wire.SNACMessage{
  12. Frame: wire.SNACFrame{
  13. FoodGroup: wire.BART,
  14. SubGroup: wire.BARTDownloadQuery,
  15. },
  16. Body: wire.SNAC_0x10_0x04_BARTDownloadQuery{},
  17. }
  18. output := wire.SNACMessage{
  19. Frame: wire.SNACFrame{
  20. FoodGroup: wire.BART,
  21. SubGroup: wire.BARTDownloadReply,
  22. },
  23. Body: wire.SNAC_0x10_0x05_BARTDownloadReply{
  24. ScreenName: "the-screen-name",
  25. },
  26. }
  27. svc := newMockBARTService(t)
  28. svc.EXPECT().
  29. RetrieveItem(mock.Anything, mock.Anything, input.Frame, input.Body).
  30. Return(output, nil)
  31. h := NewBARTHandler(slog.Default(), svc)
  32. responseWriter := newMockResponseWriter(t)
  33. responseWriter.EXPECT().
  34. SendSNAC(output.Frame, output.Body).
  35. Return(nil)
  36. buf := &bytes.Buffer{}
  37. assert.NoError(t, wire.MarshalBE(input.Body, buf))
  38. assert.NoError(t, h.DownloadQuery(nil, nil, input.Frame, buf, responseWriter))
  39. }
  40. func TestBARTHandler_UploadQuery(t *testing.T) {
  41. input := wire.SNACMessage{
  42. Frame: wire.SNACFrame{
  43. FoodGroup: wire.BART,
  44. SubGroup: wire.BARTUploadQuery,
  45. },
  46. Body: wire.SNAC_0x10_0x02_BARTUploadQuery{
  47. Type: 1,
  48. },
  49. }
  50. output := wire.SNACMessage{
  51. Frame: wire.SNACFrame{
  52. FoodGroup: wire.BART,
  53. SubGroup: wire.BARTUploadReply,
  54. },
  55. Body: wire.SNAC_0x10_0x03_BARTUploadReply{
  56. Code: wire.BARTReplyCodesSuccess,
  57. },
  58. }
  59. svc := newMockBARTService(t)
  60. svc.EXPECT().
  61. UpsertItem(mock.Anything, mock.Anything, input.Frame, input.Body).
  62. Return(output, nil)
  63. h := NewBARTHandler(slog.Default(), svc)
  64. responseWriter := newMockResponseWriter(t)
  65. responseWriter.EXPECT().
  66. SendSNAC(output.Frame, output.Body).
  67. Return(nil)
  68. buf := &bytes.Buffer{}
  69. assert.NoError(t, wire.MarshalBE(input.Body, buf))
  70. assert.NoError(t, h.UploadQuery(nil, nil, input.Frame, buf, responseWriter))
  71. }