You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

NoticeProcessorTest.kt 3.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package com.dmdirc.ktirc.messages.processors
  2. import com.dmdirc.ktirc.TestConstants
  3. import com.dmdirc.ktirc.events.CtcpReplyReceived
  4. import com.dmdirc.ktirc.events.NoticeReceived
  5. import com.dmdirc.ktirc.model.IrcMessage
  6. import com.dmdirc.ktirc.model.User
  7. import com.dmdirc.ktirc.params
  8. import com.dmdirc.ktirc.util.currentTimeProvider
  9. import org.junit.jupiter.api.Assertions.assertEquals
  10. import org.junit.jupiter.api.BeforeEach
  11. import org.junit.jupiter.api.Test
  12. internal class NoticeProcessorTest {
  13. @BeforeEach
  14. fun setUp() {
  15. currentTimeProvider = { TestConstants.time }
  16. }
  17. @Test
  18. fun `raises notice received event`() {
  19. val events = NoticeProcessor().process(
  20. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "NOTICE", params("#crashandburn", "hack the planet!")))
  21. assertEquals(1, events.size)
  22. val event = events[0] as NoticeReceived
  23. assertEquals(TestConstants.time, event.metadata.time)
  24. assertEquals(User("acidburn", "libby", "root.localhost"), event.user)
  25. assertEquals("#crashandburn", event.target)
  26. assertEquals("hack the planet!", event.message)
  27. }
  28. @Test
  29. fun `raises notice received event with no prefix`() {
  30. val events = NoticeProcessor().process(
  31. IrcMessage(emptyMap(), null, "NOTICE", params("#crashandburn", "hack the planet!")))
  32. assertEquals(1, events.size)
  33. val event = events[0] as NoticeReceived
  34. assertEquals(TestConstants.time, event.metadata.time)
  35. assertEquals(User("*"), event.user)
  36. assertEquals("#crashandburn", event.target)
  37. assertEquals("hack the planet!", event.message)
  38. }
  39. @Test
  40. fun `raises CTCP reply received event with content`() {
  41. val events = NoticeProcessor().process(
  42. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "NOTICE", params("#crashandburn", "\u0001PING 12345\u0001")))
  43. assertEquals(1, events.size)
  44. val event = events[0] as CtcpReplyReceived
  45. assertEquals(TestConstants.time, event.metadata.time)
  46. assertEquals(User("acidburn", "libby", "root.localhost"), event.user)
  47. assertEquals("#crashandburn", event.target)
  48. assertEquals("PING", event.type)
  49. assertEquals("12345", event.content)
  50. }
  51. @Test
  52. fun `raises CTCP reply received event with content when containing unicode chars`() {
  53. val events = NoticeProcessor().process(
  54. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "NOTICE", params("#crashandburn", "\u0001PING 👩‍💻\u0001")))
  55. assertEquals(1, events.size)
  56. val event = events[0] as CtcpReplyReceived
  57. assertEquals(TestConstants.time, event.metadata.time)
  58. assertEquals(User("acidburn", "libby", "root.localhost"), event.user)
  59. assertEquals("#crashandburn", event.target)
  60. assertEquals("PING", event.type)
  61. assertEquals("👩‍💻", event.content)
  62. }
  63. @Test
  64. fun `raises CTCP reply received event without content`() {
  65. val events = NoticeProcessor().process(
  66. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "NOTICE", params("#crashandburn", "\u0001PING\u0001")))
  67. assertEquals(1, events.size)
  68. val event = events[0] as CtcpReplyReceived
  69. assertEquals(TestConstants.time, event.metadata.time)
  70. assertEquals(User("acidburn", "libby", "root.localhost"), event.user)
  71. assertEquals("#crashandburn", event.target)
  72. assertEquals("PING", event.type)
  73. assertEquals("", event.content)
  74. }
  75. @Test
  76. fun `does nothing if prefix missing for CTCP replies`() {
  77. val events = NoticeProcessor().process(
  78. IrcMessage(emptyMap(), null, "NOTICE", params("#crashandburn", "\u0001BORK\u0001")))
  79. assertEquals(0, events.size)
  80. }
  81. }