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.

CapabilityProcessorTest.kt 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package com.dmdirc.ktirc.messages
  2. import com.dmdirc.ktirc.events.ServerCapabilitiesAcknowledged
  3. import com.dmdirc.ktirc.events.ServerCapabilitiesFinished
  4. import com.dmdirc.ktirc.events.ServerCapabilitiesReceived
  5. import com.dmdirc.ktirc.model.IrcMessage
  6. import com.dmdirc.ktirc.params
  7. import org.junit.jupiter.api.Assertions.assertEquals
  8. import org.junit.jupiter.api.Assertions.assertTrue
  9. import org.junit.jupiter.api.Test
  10. internal class CapabilityProcessorTest {
  11. private val processor = CapabilityProcessor()
  12. @Test
  13. fun `CapabilityProcessor does nothing for unknown subcommand`() {
  14. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "FOO")))
  15. assertTrue(events.isEmpty())
  16. }
  17. @Test
  18. fun `CapabilityProcessor raises ServerCapabilitiesReceived event given no capabilities`() {
  19. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "")))
  20. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  21. assertEquals(0, receivedEvent.capabilities.size)
  22. }
  23. @Test
  24. fun `CapabilityProcessor raises ServerCapabilitiesReceived event with known capabilities`() {
  25. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "chghost extended-join invalid")))
  26. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  27. assertEquals(2, receivedEvent.capabilities.size)
  28. assertTrue("chghost" in receivedEvent.capabilities)
  29. assertTrue("extended-join" in receivedEvent.capabilities)
  30. }
  31. @Test
  32. fun `CapabilityProcessor raises ServerCapabilitiesReceived event with values for capabilities`() {
  33. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "chghost=test123 extended-join=abc=def invalid")))
  34. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  35. assertEquals(2, receivedEvent.capabilities.size)
  36. assertEquals("test123", receivedEvent.capabilities["chghost"])
  37. assertEquals("abc=def", receivedEvent.capabilities["extended-join"])
  38. }
  39. @Test
  40. fun `CapabilityProcessor overwrites earlier values with later ones for identical capabilities`() {
  41. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "chghost=test123 chghost chghost=456")))
  42. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  43. assertEquals(1, receivedEvent.capabilities.size)
  44. assertEquals("456", receivedEvent.capabilities["chghost"])
  45. }
  46. @Test
  47. fun `CapabilityProcessor raises ServerCapabilitiesReceived event with known capabilities for multi-line responses`() {
  48. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "*", "chghost extended-join invalid")))
  49. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  50. assertEquals(2, receivedEvent.capabilities.size)
  51. assertTrue("chghost" in receivedEvent.capabilities)
  52. assertTrue("extended-join" in receivedEvent.capabilities)
  53. }
  54. @Test
  55. fun `CapabilityProcessor raises ServerCapabilitiesFinished event for final LS responses`() {
  56. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "chghost extended-join invalid")))
  57. assertEquals(2, events.size)
  58. assertTrue(events[1] is ServerCapabilitiesFinished)
  59. }
  60. @Test
  61. fun `CapabilityProcessor raises ServerCapabilitiesAcknowledged event`() {
  62. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "ACK", "chghost=test123 extended-join=abc=def invalid")))
  63. val receivedEvent = events.filterIsInstance<ServerCapabilitiesAcknowledged>()[0]
  64. assertEquals(2, receivedEvent.capabilities.size)
  65. assertEquals("test123", receivedEvent.capabilities["chghost"])
  66. assertEquals("abc=def", receivedEvent.capabilities["extended-join"])
  67. }
  68. }