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.

AuthenticationProcessorTest.kt 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.dmdirc.ktirc.messages.processors
  2. import com.dmdirc.ktirc.TestConstants
  3. import com.dmdirc.ktirc.events.AuthenticationMessage
  4. import com.dmdirc.ktirc.events.SaslFinished
  5. import com.dmdirc.ktirc.events.SaslMechanismNotAvailableError
  6. import com.dmdirc.ktirc.model.IrcMessage
  7. import com.dmdirc.ktirc.params
  8. import com.dmdirc.ktirc.util.currentTimeProvider
  9. import org.junit.jupiter.api.Assertions.*
  10. import org.junit.jupiter.api.BeforeEach
  11. import org.junit.jupiter.api.Test
  12. internal class AuthenticationProcessorTest {
  13. private var processor = AuthenticationProcessor()
  14. @BeforeEach
  15. fun setUp() {
  16. currentTimeProvider = { TestConstants.time }
  17. }
  18. @Test
  19. fun `raises authentication message with null argument if no params specified`() {
  20. val events = processor.process(IrcMessage(emptyMap(), null, "AUTHENTICATE", emptyList()))
  21. assertEquals(1, events.size)
  22. val event = events[0] as AuthenticationMessage
  23. assertEquals(TestConstants.time, event.metadata.time)
  24. assertNull(event.argument)
  25. }
  26. @Test
  27. fun `raises authentication message with null argument if + specified`() {
  28. val events = processor.process(IrcMessage(emptyMap(), null, "AUTHENTICATE", params("+")))
  29. assertEquals(1, events.size)
  30. val event = events[0] as AuthenticationMessage
  31. assertEquals(TestConstants.time, event.metadata.time)
  32. assertNull(event.argument)
  33. }
  34. @Test
  35. fun `raises authentication message with argument`() {
  36. val events = processor.process(IrcMessage(emptyMap(), null, "AUTHENTICATE", params("HackThePlanet")))
  37. assertEquals(1, events.size)
  38. val event = events[0] as AuthenticationMessage
  39. assertEquals(TestConstants.time, event.metadata.time)
  40. assertEquals("HackThePlanet", event.argument)
  41. }
  42. @Test
  43. fun `raises sasl finished on success`() {
  44. val events = processor.process(IrcMessage(emptyMap(), ":the.gibson".toByteArray(), "903", params("*", "SASL authentication successful")))
  45. assertEquals(1, events.size)
  46. val event = events[0] as SaslFinished
  47. assertEquals(TestConstants.time, event.metadata.time)
  48. assertTrue(event.success)
  49. }
  50. @Test
  51. fun `raises sasl finished on generic failure`() {
  52. val events = processor.process(IrcMessage(emptyMap(), ":the.gibson".toByteArray(), "904", params("*", "SASL authentication failed")))
  53. assertEquals(1, events.size)
  54. val event = events[0] as SaslFinished
  55. assertEquals(TestConstants.time, event.metadata.time)
  56. assertFalse(event.success)
  57. }
  58. @Test
  59. fun `raises not available error on mechs numeric`() {
  60. val events = processor.process(IrcMessage(emptyMap(), ":the.gibson".toByteArray(), "908", params("*", "PLAIN,EXTERNAL,MAGIC", "are supported by this server")))
  61. assertEquals(1, events.size)
  62. val event = events[0] as SaslMechanismNotAvailableError
  63. assertEquals(TestConstants.time, event.metadata.time)
  64. assertEquals(listOf("PLAIN", "EXTERNAL", "MAGIC"), event.mechanisms)
  65. }
  66. @Test
  67. fun `raises empty not available error on malformed mechs numeric`() {
  68. val events = processor.process(IrcMessage(emptyMap(), ":the.gibson".toByteArray(), "908", params("*")))
  69. assertEquals(1, events.size)
  70. val event = events[0] as SaslMechanismNotAvailableError
  71. assertEquals(TestConstants.time, event.metadata.time)
  72. assertTrue(event.mechanisms.isEmpty())
  73. }
  74. }