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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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.assertEquals
  6. import org.junit.jupiter.api.Assertions.assertNull
  7. import org.junit.jupiter.api.Test
  8. internal class SaslStateTest {
  9. private val mech1 = mock<SaslMechanism> {
  10. on { priority } doReturn 1
  11. on { ircName } doReturn "mech1"
  12. }
  13. private val mech2 = mock<SaslMechanism> {
  14. on { priority } doReturn 2
  15. on { ircName } doReturn "mech2"
  16. }
  17. private val mech3 = mock<SaslMechanism> {
  18. on { priority } doReturn 3
  19. on { ircName } doReturn "mech3"
  20. }
  21. private val mechanisms = listOf(mech1, mech2, mech3)
  22. @Test
  23. fun `gets most preferred client SASL mechanism if none are specified by server`() {
  24. val state = SaslState(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(mechanisms)
  30. state.currentMechanism = mech3
  31. assertEquals(mech2, state.getPreferredSaslMechanism(""))
  32. }
  33. @Test
  34. fun `gets no preferred client SASL mechanism if all were tried`() {
  35. val state = SaslState(mechanisms)
  36. state.currentMechanism = mech1
  37. assertNull(state.getPreferredSaslMechanism(""))
  38. }
  39. @Test
  40. fun `gets most preferred client SASL mechanism if the server supports all`() {
  41. val state = SaslState(mechanisms)
  42. assertEquals(mech3, state.getPreferredSaslMechanism("mech1,mech3,mech2"))
  43. }
  44. @Test
  45. fun `gets most preferred client SASL mechanism if the server supports some`() {
  46. val state = SaslState(mechanisms)
  47. assertEquals(mech2, state.getPreferredSaslMechanism("mech2,mech1,other"))
  48. }
  49. @Test
  50. fun `gets no preferred client SASL mechanism if the server supports none`() {
  51. val state = SaslState(mechanisms)
  52. assertNull(state.getPreferredSaslMechanism("foo,bar,baz"))
  53. }
  54. @Test
  55. fun `setting the current mechanism clears the existing state`() {
  56. val state = SaslState(mechanisms)
  57. state.mechanismState = "in progress"
  58. state.currentMechanism = mech2
  59. assertNull(state.mechanismState)
  60. }
  61. }