chat_test.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package webhooks
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/owncast/owncast/core/chat/events"
  6. "github.com/owncast/owncast/models"
  7. )
  8. func TestSendChatEvent(t *testing.T) {
  9. timestamp := time.Unix(72, 6).UTC()
  10. user := models.User{
  11. ID: "user id",
  12. DisplayName: "display name",
  13. DisplayColor: 4,
  14. CreatedAt: time.Unix(3, 26).UTC(),
  15. DisabledAt: nil,
  16. PreviousNames: []string{"somebody"},
  17. NameChangedAt: nil,
  18. Scopes: []string{},
  19. IsBot: false,
  20. AuthenticatedAt: nil,
  21. Authenticated: false,
  22. }
  23. checkPayload(t, models.MessageSent, func() {
  24. SendChatEvent(&events.UserMessageEvent{
  25. Event: events.Event{
  26. Type: events.MessageSent,
  27. ID: "id",
  28. Timestamp: timestamp,
  29. },
  30. UserEvent: events.UserEvent{
  31. User: &user,
  32. ClientID: 51,
  33. HiddenAt: nil,
  34. },
  35. MessageEvent: events.MessageEvent{
  36. OutboundEvent: nil,
  37. Body: "body",
  38. RawBody: "raw body",
  39. },
  40. })
  41. }, `{
  42. "body": "body",
  43. "clientId": 51,
  44. "id": "id",
  45. "rawBody": "raw body",
  46. "timestamp": "1970-01-01T00:01:12.000000006Z",
  47. "user": {
  48. "authenticated": false,
  49. "createdAt": "1970-01-01T00:00:03.000000026Z",
  50. "displayColor": 4,
  51. "displayName": "display name",
  52. "id": "user id",
  53. "isBot": false,
  54. "previousNames": ["somebody"]
  55. },
  56. "visible": true
  57. }`)
  58. }
  59. func TestSendChatEventUsernameChanged(t *testing.T) {
  60. timestamp := time.Unix(72, 6).UTC()
  61. user := models.User{
  62. ID: "user id",
  63. DisplayName: "display name",
  64. DisplayColor: 4,
  65. CreatedAt: time.Unix(3, 26).UTC(),
  66. DisabledAt: nil,
  67. PreviousNames: []string{"somebody"},
  68. NameChangedAt: nil,
  69. Scopes: []string{},
  70. IsBot: false,
  71. AuthenticatedAt: nil,
  72. Authenticated: false,
  73. }
  74. checkPayload(t, models.UserNameChanged, func() {
  75. SendChatEventUsernameChanged(events.NameChangeEvent{
  76. Event: events.Event{
  77. Type: events.UserNameChanged,
  78. ID: "id",
  79. Timestamp: timestamp,
  80. },
  81. UserEvent: events.UserEvent{
  82. User: &user,
  83. ClientID: 51,
  84. HiddenAt: nil,
  85. },
  86. NewName: "new name",
  87. })
  88. }, `{
  89. "clientId": 51,
  90. "id": "id",
  91. "newName": "new name",
  92. "timestamp": "1970-01-01T00:01:12.000000006Z",
  93. "type": "NAME_CHANGE",
  94. "user": {
  95. "authenticated": false,
  96. "createdAt": "1970-01-01T00:00:03.000000026Z",
  97. "displayColor": 4,
  98. "displayName": "display name",
  99. "id": "user id",
  100. "isBot": false,
  101. "previousNames": ["somebody"]
  102. }
  103. }`)
  104. }
  105. func TestSendChatEventUserJoined(t *testing.T) {
  106. timestamp := time.Unix(72, 6).UTC()
  107. user := models.User{
  108. ID: "user id",
  109. DisplayName: "display name",
  110. DisplayColor: 4,
  111. CreatedAt: time.Unix(3, 26).UTC(),
  112. DisabledAt: nil,
  113. PreviousNames: []string{"somebody"},
  114. NameChangedAt: nil,
  115. Scopes: []string{},
  116. IsBot: false,
  117. AuthenticatedAt: nil,
  118. Authenticated: false,
  119. }
  120. checkPayload(t, models.UserJoined, func() {
  121. SendChatEventUserJoined(events.UserJoinedEvent{
  122. Event: events.Event{
  123. Type: events.UserJoined,
  124. ID: "id",
  125. Timestamp: timestamp,
  126. },
  127. UserEvent: events.UserEvent{
  128. User: &user,
  129. ClientID: 51,
  130. HiddenAt: nil,
  131. },
  132. })
  133. }, `{
  134. "clientId": 51,
  135. "id": "id",
  136. "type": "USER_JOINED",
  137. "timestamp": "1970-01-01T00:01:12.000000006Z",
  138. "user": {
  139. "authenticated": false,
  140. "createdAt": "1970-01-01T00:00:03.000000026Z",
  141. "displayColor": 4,
  142. "displayName": "display name",
  143. "id": "user id",
  144. "isBot": false,
  145. "previousNames": ["somebody"]
  146. }
  147. }`)
  148. }
  149. func TestSendChatEventSetMessageVisibility(t *testing.T) {
  150. timestamp := time.Unix(72, 6).UTC()
  151. checkPayload(t, models.VisibiltyToggled, func() {
  152. SendChatEventSetMessageVisibility(events.SetMessageVisibilityEvent{
  153. Event: events.Event{
  154. Type: events.VisibiltyUpdate,
  155. ID: "id",
  156. Timestamp: timestamp,
  157. },
  158. UserMessageEvent: events.UserMessageEvent{},
  159. MessageIDs: []string{"message1", "message2"},
  160. Visible: false,
  161. })
  162. }, `{
  163. "MessageIDs": [
  164. "message1",
  165. "message2"
  166. ],
  167. "Visible": false,
  168. "body": "",
  169. "id": "id",
  170. "timestamp": "1970-01-01T00:01:12.000000006Z",
  171. "type": "VISIBILITY-UPDATE",
  172. "user": null
  173. }`)
  174. }