session_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package server
  2. import (
  3. "testing"
  4. "time"
  5. )
  6. func TestSession_SendMessage_SessSendOK(t *testing.T) {
  7. s := Session{
  8. msgCh: make(chan XMessage, 1),
  9. stopCh: make(chan struct{}),
  10. sendTimeout: sendTimeout,
  11. }
  12. if res := s.SendMessage(XMessage{}); res != SessSendOK {
  13. t.Fatalf("expected SessSendOK, got %+v", res)
  14. }
  15. }
  16. func TestSession_SendMessage_SessSendClosed(t *testing.T) {
  17. s := Session{
  18. msgCh: make(chan XMessage, 1),
  19. stopCh: make(chan struct{}),
  20. sendTimeout: sendTimeout,
  21. }
  22. s.Close()
  23. if res := s.SendMessage(XMessage{}); res != SessSendClosed {
  24. t.Fatalf("expected SessSendClosed, got %+v", res)
  25. }
  26. }
  27. func TestSession_SendMessage_SessSendTimeout(t *testing.T) {
  28. s := Session{
  29. msgCh: make(chan XMessage),
  30. stopCh: make(chan struct{}),
  31. sendTimeout: 0,
  32. }
  33. if res := s.SendMessage(XMessage{}); res != SessSendTimeout {
  34. t.Fatalf("expected SessSendTimeout got %+v", res)
  35. }
  36. }
  37. func TestSession_Close_Twice(t *testing.T) {
  38. s := Session{
  39. stopCh: make(chan struct{}),
  40. }
  41. s.Close()
  42. s.Close() // make sure close is idempotent
  43. if !s.closed {
  44. t.Fatal("expected session to be closed")
  45. }
  46. select {
  47. case <-s.Closed():
  48. case <-time.After(1 * time.Second):
  49. t.Fatalf("channel is not closed")
  50. }
  51. }