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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.dmdirc.ktirc.messages.processors
  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 `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 `does nothing for missing subcommand`() {
  19. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*")))
  20. assertTrue(events.isEmpty())
  21. }
  22. @Test
  23. fun `raises ServerCapabilitiesReceived event given no capabilities`() {
  24. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "")))
  25. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  26. assertEquals(0, receivedEvent.capabilities.size)
  27. }
  28. @Test
  29. fun `raises ServerCapabilitiesReceived event with known capabilities`() {
  30. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "chghost extended-join invalid")))
  31. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  32. assertEquals(2, receivedEvent.capabilities.size)
  33. assertTrue("chghost" in receivedEvent.capabilities)
  34. assertTrue("extended-join" in receivedEvent.capabilities)
  35. }
  36. @Test
  37. fun `raises ServerCapabilitiesReceived event with values for capabilities`() {
  38. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "chghost=test123 extended-join=abc=def invalid")))
  39. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  40. assertEquals(2, receivedEvent.capabilities.size)
  41. assertEquals("test123", receivedEvent.capabilities["chghost"])
  42. assertEquals("abc=def", receivedEvent.capabilities["extended-join"])
  43. }
  44. @Test
  45. fun `overwrites earlier values with later ones for identical capabilities`() {
  46. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "chghost=test123 chghost chghost=456")))
  47. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  48. assertEquals(1, receivedEvent.capabilities.size)
  49. assertEquals("456", receivedEvent.capabilities["chghost"])
  50. }
  51. @Test
  52. fun `raises ServerCapabilitiesReceived event with known capabilities for multi-line responses`() {
  53. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "*", "chghost extended-join invalid")))
  54. val receivedEvent = events.filterIsInstance<ServerCapabilitiesReceived>()[0]
  55. assertEquals(2, receivedEvent.capabilities.size)
  56. assertTrue("chghost" in receivedEvent.capabilities)
  57. assertTrue("extended-join" in receivedEvent.capabilities)
  58. }
  59. @Test
  60. fun `raises ServerCapabilitiesFinished event for final LS responses`() {
  61. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "LS", "chghost extended-join invalid")))
  62. assertEquals(2, events.size)
  63. assertTrue(events[1] is ServerCapabilitiesFinished)
  64. }
  65. @Test
  66. fun `raises ServerCapabilitiesAcknowledged event`() {
  67. val events = processor.process(IrcMessage(emptyMap(), "the.gibson".toByteArray(), "CAP", params("*", "ACK", "chghost=test123 extended-join=abc=def invalid")))
  68. val receivedEvent = events.filterIsInstance<ServerCapabilitiesAcknowledged>()[0]
  69. assertEquals(2, receivedEvent.capabilities.size)
  70. assertEquals("test123", receivedEvent.capabilities["chghost"])
  71. assertEquals("abc=def", receivedEvent.capabilities["extended-join"])
  72. }
  73. }