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.5KB

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