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.

MessageBuildersTest.kt 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package com.dmdirc.ktirc.messages
  2. import com.dmdirc.ktirc.IrcClient
  3. import com.dmdirc.ktirc.model.MessageTag
  4. import com.nhaarman.mockitokotlin2.mock
  5. import com.nhaarman.mockitokotlin2.verify
  6. import org.junit.jupiter.api.Test
  7. internal class MessageBuildersTest {
  8. private val mockClient = mock<IrcClient>()
  9. @Test
  10. fun `sendCapabilityRequest sends CAP REQ message with single argument`() {
  11. mockClient.sendCapabilityRequest(listOf("a"))
  12. verify(mockClient).send("CAP", "REQ", "a")
  13. }
  14. @Test
  15. fun `sendCapabilityRequest sends CAP REQ message with multiple args`() {
  16. mockClient.sendCapabilityRequest(listOf("a b c"))
  17. verify(mockClient).send("CAP", "REQ", "a b c")
  18. }
  19. @Test
  20. fun `sendJoin sends correct JOIN message`() {
  21. mockClient.sendJoin("#TheGibson")
  22. verify(mockClient).send("JOIN", "#TheGibson")
  23. }
  24. @Test
  25. fun `sendModeRequest sends correct MODE message`() {
  26. mockClient.sendModeRequest("#TheGibson")
  27. verify(mockClient).send("MODE", "#TheGibson")
  28. }
  29. @Test
  30. fun `sendNickChange sends correct NICK message`() {
  31. mockClient.sendNickChange("AcidBurn")
  32. verify(mockClient).send("NICK", "AcidBurn")
  33. }
  34. @Test
  35. fun `sendPassword sends correct PASS message`() {
  36. mockClient.sendPassword("hacktheplanet")
  37. verify(mockClient).send("PASS", "hacktheplanet")
  38. }
  39. @Test
  40. fun `sendPong sends correct PONG message`() {
  41. mockClient.sendPong("abcdef".toByteArray())
  42. verify(mockClient).send("PONG", "abcdef")
  43. }
  44. @Test
  45. fun `sendMessage sends correct PRIVMSG message`() {
  46. mockClient.sendMessage("acidBurn", "Hack the planet!")
  47. verify(mockClient).send(tagMap(), "PRIVMSG", "acidBurn", "Hack the planet!")
  48. }
  49. @Test
  50. fun `sendMessage sends correct PRIVMSG message with reply to tag`() {
  51. mockClient.sendMessage("acidBurn", "Hack the planet!", "abc123")
  52. verify(mockClient).send(tagMap(MessageTag.Reply to "abc123"), "PRIVMSG", "acidBurn", "Hack the planet!")
  53. }
  54. @Test
  55. fun `sendCtcp sends correct CTCP message with no arguments`() {
  56. mockClient.sendCtcp("acidBurn", "ping")
  57. verify(mockClient).send(tagMap(), "PRIVMSG", "acidBurn", "\u0001PING\u0001")
  58. }
  59. @Test
  60. fun `sendCtcp sends correct CTCP message with arguments`() {
  61. mockClient.sendCtcp("acidBurn", "ping", "12345")
  62. verify(mockClient).send(tagMap(), "PRIVMSG", "acidBurn", "\u0001PING 12345\u0001")
  63. }
  64. @Test
  65. fun `sendAction sends correct action`() {
  66. mockClient.sendAction("acidBurn", "hacks the planet")
  67. verify(mockClient).send(tagMap(), "PRIVMSG", "acidBurn", "\u0001ACTION hacks the planet\u0001")
  68. }
  69. @Test
  70. fun `sendUser sends correct USER message`() {
  71. mockClient.sendUser("AcidBurn","Kate")
  72. verify(mockClient).send("USER", "AcidBurn", "0", "*", "Kate")
  73. }
  74. @Test
  75. fun `sendUser sends correct AUTHENTICATE message`() {
  76. mockClient.sendAuthenticationMessage("SCRAM-MD5")
  77. verify(mockClient).send("AUTHENTICATE", "SCRAM-MD5")
  78. }
  79. @Test
  80. fun `sendUser sends correct blank AUTHENTICATE message`() {
  81. mockClient.sendAuthenticationMessage()
  82. verify(mockClient).send("AUTHENTICATE", "+")
  83. }
  84. @Test
  85. fun `sendTagMessage sends tags`() {
  86. val tags = mapOf(MessageTag.MessageId to "id", MessageTag.AccountName to "foo")
  87. mockClient.sendTagMessage("#thegibson", tags)
  88. verify(mockClient).send(tags, "TAGMSG", "#thegibson")
  89. }
  90. @Test
  91. fun `sendTagMessage sends tags with reply ID`() {
  92. val tags = mapOf(MessageTag.MessageId to "id", MessageTag.AccountName to "foo")
  93. mockClient.sendTagMessage("#thegibson", tags, "otherId")
  94. verify(mockClient).send(tags + (MessageTag.Reply to "otherId"), "TAGMSG", "#thegibson")
  95. }
  96. }