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.

SaslStateTest.kt 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.dmdirc.ktirc.model
  2. import com.dmdirc.ktirc.sasl.SaslMechanism
  3. import com.nhaarman.mockitokotlin2.doReturn
  4. import com.nhaarman.mockitokotlin2.mock
  5. import org.junit.jupiter.api.Assertions.*
  6. import org.junit.jupiter.api.Test
  7. internal class SaslStateTest {
  8. private val mech1 = mock<SaslMechanism> {
  9. on { priority } doReturn 1
  10. on { ircName } doReturn "mech1"
  11. }
  12. private val mech2 = mock<SaslMechanism> {
  13. on { priority } doReturn 2
  14. on { ircName } doReturn "mech2"
  15. }
  16. private val mech3 = mock<SaslMechanism> {
  17. on { priority } doReturn 3
  18. on { ircName } doReturn "mech3"
  19. }
  20. private val mechanisms = listOf(mech1, mech2, mech3)
  21. @Test
  22. fun `gets most preferred client SASL mechanism if none are specified by server`() {
  23. val state = SaslState(mechanisms)
  24. assertEquals(mech3, state.getPreferredSaslMechanism(""))
  25. }
  26. @Test
  27. fun `gets next preferred client SASL mechanism if one was tried`() {
  28. val state = SaslState(mechanisms)
  29. state.currentMechanism = mech3
  30. assertEquals(mech2, state.getPreferredSaslMechanism(""))
  31. }
  32. @Test
  33. fun `gets no preferred client SASL mechanism if all were tried`() {
  34. val state = SaslState(mechanisms)
  35. state.currentMechanism = mech1
  36. assertNull(state.getPreferredSaslMechanism(""))
  37. }
  38. @Test
  39. fun `gets most preferred client SASL mechanism if the server supports all`() {
  40. val state = SaslState(mechanisms)
  41. assertEquals(mech3, state.getPreferredSaslMechanism("mech1,mech3,mech2"))
  42. }
  43. @Test
  44. fun `gets most preferred client SASL mechanism if the server supports some`() {
  45. val state = SaslState(mechanisms)
  46. assertEquals(mech2, state.getPreferredSaslMechanism("mech2,mech1,other"))
  47. }
  48. @Test
  49. fun `gets no preferred client SASL mechanism if the server supports none`() {
  50. val state = SaslState(mechanisms)
  51. assertNull(state.getPreferredSaslMechanism("foo,bar,baz"))
  52. }
  53. @Test
  54. fun `setting the current mechanism clears the existing state`() {
  55. val state = SaslState(mechanisms)
  56. state.mechanismState = "in progress"
  57. state.currentMechanism = mech2
  58. assertNull(state.mechanismState)
  59. }
  60. @Test
  61. fun `reset clears all state`() = with(SaslState(mechanisms)) {
  62. currentMechanism = mech2
  63. mechanismState = "in progress"
  64. saslBuffer = "abcdef"
  65. reset()
  66. assertNull(currentMechanism)
  67. assertNull(mechanismState)
  68. assertTrue(saslBuffer.isEmpty())
  69. }
  70. }