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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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(null)
  24. state.mechanisms.addAll(mechanisms)
  25. assertEquals(mech3, state.getPreferredSaslMechanism(""))
  26. }
  27. @Test
  28. fun `gets next preferred client SASL mechanism if one was tried`() {
  29. val state = SaslState(null)
  30. state.mechanisms.addAll(mechanisms)
  31. state.currentMechanism = mech3
  32. assertEquals(mech2, state.getPreferredSaslMechanism(""))
  33. }
  34. @Test
  35. fun `gets no preferred client SASL mechanism if all were tried`() {
  36. val state = SaslState(null)
  37. state.mechanisms.addAll(mechanisms)
  38. state.currentMechanism = mech1
  39. assertNull(state.getPreferredSaslMechanism(""))
  40. }
  41. @Test
  42. fun `gets most preferred client SASL mechanism if the server supports all`() {
  43. val state = SaslState(null)
  44. state.mechanisms.addAll(mechanisms)
  45. assertEquals(mech3, state.getPreferredSaslMechanism("mech1,mech3,mech2"))
  46. }
  47. @Test
  48. fun `gets most preferred client SASL mechanism if the server supports some`() {
  49. val state = SaslState(null)
  50. state.mechanisms.addAll(mechanisms)
  51. assertEquals(mech2, state.getPreferredSaslMechanism("mech2,mech1,other"))
  52. }
  53. @Test
  54. fun `gets no preferred client SASL mechanism if the server supports none`() {
  55. val state = SaslState(null)
  56. state.mechanisms.addAll(mechanisms)
  57. assertNull(state.getPreferredSaslMechanism("foo,bar,baz"))
  58. }
  59. @Test
  60. fun `setting the current mechanism clears the existing state`() {
  61. val state = SaslState(null)
  62. state.mechanisms.addAll(mechanisms)
  63. state.mechanismState = "in progress"
  64. state.currentMechanism = mech2
  65. assertNull(state.mechanismState)
  66. }
  67. @Test
  68. fun `reset clears all state`() = with(SaslState(null)) {
  69. currentMechanism = mech2
  70. mechanismState = "in progress"
  71. saslBuffer = "abcdef"
  72. reset()
  73. assertNull(currentMechanism)
  74. assertNull(mechanismState)
  75. assertTrue(saslBuffer.isEmpty())
  76. }
  77. }