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.

JoinProcessorTest.kt 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package com.dmdirc.ktirc.messages
  2. import com.dmdirc.ktirc.TestConstants
  3. import com.dmdirc.ktirc.model.IrcMessage
  4. import com.dmdirc.ktirc.model.User
  5. import org.junit.jupiter.api.Assertions.assertEquals
  6. import org.junit.jupiter.api.BeforeEach
  7. import org.junit.jupiter.api.Test
  8. internal class JoinProcessorTest {
  9. @BeforeEach
  10. fun setUp() {
  11. IrcMessage.currentTimeProvider = { TestConstants.time }
  12. }
  13. @Test
  14. fun `JoinProcessor raises join event`() {
  15. val events = JoinProcessor().process(
  16. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "JOIN", listOf("#crashandburn".toByteArray())))
  17. assertEquals(1, events.size)
  18. assertEquals(TestConstants.time, events[0].time)
  19. assertEquals(User("acidburn", "libby", "root.localhost"), events[0].user)
  20. assertEquals("#crashandburn", events[0].channel)
  21. }
  22. @Test
  23. fun `JoinProcessor does nothing if prefix missing`() {
  24. val events = JoinProcessor().process(
  25. IrcMessage(emptyMap(), null, "JOIN", listOf("#crashandburn".toByteArray())))
  26. assertEquals(0, events.size)
  27. }
  28. @Test
  29. fun `JoinProcessor adds real name and account from extended join`() {
  30. val events = JoinProcessor().process(
  31. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "JOIN", listOf("#crashandburn", "acidBurn", "Libby").map { it.toByteArray() }))
  32. assertEquals(1, events.size)
  33. assertEquals(TestConstants.time, events[0].time)
  34. assertEquals(User("acidburn", "libby", "root.localhost", account = "acidBurn", realName = "Libby"), events[0].user)
  35. assertEquals("#crashandburn", events[0].channel)
  36. }
  37. @Test
  38. fun `JoinProcessor ignores account if the user is not authed`() {
  39. val events = JoinProcessor().process(
  40. IrcMessage(emptyMap(), "acidburn!libby@root.localhost".toByteArray(), "JOIN", listOf("#crashandburn", "*", "Libby").map { it.toByteArray() }))
  41. assertEquals(1, events.size)
  42. assertEquals(TestConstants.time, events[0].time)
  43. assertEquals(User("acidburn", "libby", "root.localhost", realName = "Libby"), events[0].user)
  44. assertEquals("#crashandburn", events[0].channel)
  45. }
  46. }