Browse Source

Migrate all tests to mockk

tags/v0.10.0
Chris Smith 5 years ago
parent
commit
4c1be015cd

+ 1
- 0
CHANGELOG View File

14
  * Added TargetedEvent, a subclass of IrcEvent, for all events that are
14
  * Added TargetedEvent, a subclass of IrcEvent, for all events that are
15
    targeted to a user or channel
15
    targeted to a user or channel
16
  * (Internal) Added annotation to track removal of deprecated methods
16
  * (Internal) Added annotation to track removal of deprecated methods
17
+ * (Internal) Migrate unit tests to use Mockk instead of Mockito
17
 
18
 
18
 v0.9.0
19
 v0.9.0
19
 
20
 

+ 1
- 2
build.gradle.kts View File

40
     implementation("io.ktor:ktor-network:1.1.2")
40
     implementation("io.ktor:ktor-network:1.1.2")
41
     implementation("io.ktor:ktor-network-tls:1.1.2")
41
     implementation("io.ktor:ktor-network-tls:1.1.2")
42
 
42
 
43
-    testImplementation("com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0")
44
     testImplementation("org.junit.jupiter:junit-jupiter-api:5.4.0")
43
     testImplementation("org.junit.jupiter:junit-jupiter-api:5.4.0")
45
     testImplementation("org.junit.jupiter:junit-jupiter-params:5.4.0")
44
     testImplementation("org.junit.jupiter:junit-jupiter-params:5.4.0")
46
-    testImplementation("io.mockk:mockk:1.9")
45
+    testImplementation("io.mockk:mockk:1.9.1")
47
     testRuntime("org.junit.jupiter:junit-jupiter-engine:5.4.0")
46
     testRuntime("org.junit.jupiter:junit-jupiter-engine:5.4.0")
48
 }
47
 }
49
 
48
 

+ 37
- 23
src/test/kotlin/com/dmdirc/ktirc/IrcClientImplTest.kt View File

7
 import com.dmdirc.ktirc.model.*
7
 import com.dmdirc.ktirc.model.*
8
 import com.dmdirc.ktirc.util.currentTimeProvider
8
 import com.dmdirc.ktirc.util.currentTimeProvider
9
 import com.dmdirc.ktirc.util.generateLabel
9
 import com.dmdirc.ktirc.util.generateLabel
10
-import com.nhaarman.mockitokotlin2.*
11
 import io.ktor.util.KtorExperimentalAPI
10
 import io.ktor.util.KtorExperimentalAPI
12
 import io.mockk.*
11
 import io.mockk.*
13
 import kotlinx.coroutines.*
12
 import kotlinx.coroutines.*
39
     private val readLineChannel = Channel<ByteArray>(Channel.UNLIMITED)
38
     private val readLineChannel = Channel<ByteArray>(Channel.UNLIMITED)
40
     private val sendLineChannel = Channel<ByteArray>(Channel.UNLIMITED)
39
     private val sendLineChannel = Channel<ByteArray>(Channel.UNLIMITED)
41
 
40
 
42
-    private val mockSocket = mock<LineBufferedSocket> {
43
-        on { receiveChannel } doReturn readLineChannel
44
-        on { sendChannel } doReturn sendLineChannel
41
+    private val mockSocket = mockk<LineBufferedSocket> {
42
+        every { receiveChannel } returns readLineChannel
43
+        every { sendChannel } returns sendLineChannel
45
     }
44
     }
46
 
45
 
47
-    private val mockSocketFactory = mock<(CoroutineScope, String, Int, Boolean) -> LineBufferedSocket> {
48
-        on { invoke(any(), eq(HOST), eq(PORT), any()) } doReturn mockSocket
46
+    private val mockSocketFactory = mockk<(CoroutineScope, String, Int, Boolean) -> LineBufferedSocket> {
47
+        every { this@mockk.invoke(any(), eq(HOST), eq(PORT), any()) } returns mockSocket
49
     }
48
     }
50
 
49
 
51
-    private val mockEventHandler = mock<(IrcEvent) -> Unit>()
50
+    private val mockEventHandler = mockk<(IrcEvent) -> Unit> {
51
+        every { this@mockk.invoke(any()) } just Runs
52
+    }
52
 
53
 
53
     private val profileConfig = ProfileConfig().apply {
54
     private val profileConfig = ProfileConfig().apply {
54
         nickname = NICK
55
         nickname = NICK
74
         client.socketFactory = mockSocketFactory
75
         client.socketFactory = mockSocketFactory
75
         client.connect()
76
         client.connect()
76
 
77
 
77
-        verify(mockSocketFactory, timeout(500)).invoke(client, HOST, PORT, false)
78
+        verify(timeout = 500) { mockSocketFactory(client, HOST, PORT, false) }
78
     }
79
     }
79
 
80
 
80
     @Test
81
     @Test
87
         client.socketFactory = mockSocketFactory
88
         client.socketFactory = mockSocketFactory
88
         client.connect()
89
         client.connect()
89
 
90
 
90
-        verify(mockSocketFactory, timeout(500)).invoke(client, HOST, PORT, true)
91
+        verify(timeout = 500) { mockSocketFactory(client, HOST, PORT, true) }
91
     }
92
     }
92
 
93
 
93
     @Test
94
     @Test
104
     @Test
105
     @Test
105
     fun `emits connection events with local time`() = runBlocking {
106
     fun `emits connection events with local time`() = runBlocking {
106
         currentTimeProvider = { TestConstants.time }
107
         currentTimeProvider = { TestConstants.time }
108
+
109
+        val connectingSlot = slot<ServerConnecting>()
110
+        val connectedSlot = slot<ServerConnected>()
111
+
112
+        every { mockEventHandler.invoke(capture(connectingSlot)) } just Runs
113
+        every { mockEventHandler.invoke(capture(connectedSlot)) } just Runs
114
+
107
         val client = IrcClientImpl(normalConfig)
115
         val client = IrcClientImpl(normalConfig)
108
         client.socketFactory = mockSocketFactory
116
         client.socketFactory = mockSocketFactory
109
         client.onEvent(mockEventHandler)
117
         client.onEvent(mockEventHandler)
110
         client.connect()
118
         client.connect()
111
 
119
 
112
-        val captor = argumentCaptor<IrcEvent>()
113
-        verify(mockEventHandler, timeout(500).atLeast(2)).invoke(captor.capture())
114
-
115
-        assertTrue(captor.firstValue is ServerConnecting)
116
-        assertEquals(TestConstants.time, captor.firstValue.metadata.time)
120
+        verify(timeout = 500) {
121
+            mockEventHandler(ofType<ServerConnecting>())
122
+            mockEventHandler(ofType<ServerConnected>())
123
+        }
117
 
124
 
118
-        assertTrue(captor.secondValue is ServerConnected)
119
-        assertEquals(TestConstants.time, captor.secondValue.metadata.time)
125
+        assertEquals(TestConstants.time, connectingSlot.captured.metadata.time)
126
+        assertEquals(TestConstants.time, connectedSlot.captured.metadata.time)
120
     }
127
     }
121
 
128
 
122
     @Test
129
     @Test
156
 
163
 
157
         client.connect()
164
         client.connect()
158
 
165
 
159
-        verify(mockEventHandler, timeout(500)).invoke(isA<ServerWelcome>())
166
+        verify(timeout = 500) {
167
+            mockEventHandler(ofType<ServerWelcome>())
168
+        }
160
     }
169
     }
161
 
170
 
162
     @Test
171
     @Test
249
         client.onEvent(mockEventHandler)
258
         client.onEvent(mockEventHandler)
250
         client.send("PRIVMSG", "#thegibson", "Mess with the best, die like the rest")
259
         client.send("PRIVMSG", "#thegibson", "Mess with the best, die like the rest")
251
 
260
 
252
-        verify(mockEventHandler, never()).invoke(isA<MessageReceived>())
261
+        verify(inverse = true) {
262
+            mockEventHandler(ofType<MessageReceived>())
263
+        }
253
     }
264
     }
254
 
265
 
255
     @Test
266
     @Test
262
         client.onEvent(mockEventHandler)
273
         client.onEvent(mockEventHandler)
263
         client.send("PRIVMSG", "#thegibson", "Mess with the best, die like the rest")
274
         client.send("PRIVMSG", "#thegibson", "Mess with the best, die like the rest")
264
 
275
 
265
-        verify(mockEventHandler, never()).invoke(isA<MessageReceived>())
266
-    }
276
+        verify(inverse = true) {
277
+            mockEventHandler(ofType<MessageReceived>())
278
+        }    }
267
 
279
 
268
     @Test
280
     @Test
269
     fun `sends structured text to socket with tags`() = runBlocking {
281
     fun `sends structured text to socket with tags`() = runBlocking {
321
 
333
 
322
         client.disconnect()
334
         client.disconnect()
323
 
335
 
324
-        verify(mockSocket, timeout(500)).disconnect()
336
+        verify(timeout = 500) {
337
+            mockSocket.disconnect()
338
+        }
325
     }
339
     }
326
 
340
 
327
     @Test
341
     @Test
384
 
398
 
385
     @Test
399
     @Test
386
     fun `sends connect error when host is unresolvable`() = runBlocking {
400
     fun `sends connect error when host is unresolvable`() = runBlocking {
387
-        whenever(mockSocket.connect()).doThrow(UnresolvedAddressException())
401
+        every { mockSocket.connect() } throws UnresolvedAddressException()
388
         with(IrcClientImpl(normalConfig)) {
402
         with(IrcClientImpl(normalConfig)) {
389
             socketFactory = mockSocketFactory
403
             socketFactory = mockSocketFactory
390
             withTimeout(500) {
404
             withTimeout(500) {
400
 
414
 
401
     @Test
415
     @Test
402
     fun `sends connect error when tls certificate is bad`() = runBlocking {
416
     fun `sends connect error when tls certificate is bad`() = runBlocking {
403
-        whenever(mockSocket.connect()).doThrow(CertificateException("Boooo"))
417
+        every { mockSocket.connect() } throws CertificateException("Boooo")
404
         with(IrcClientImpl(normalConfig)) {
418
         with(IrcClientImpl(normalConfig)) {
405
             socketFactory = mockSocketFactory
419
             socketFactory = mockSocketFactory
406
             withTimeout(500) {
420
             withTimeout(500) {

+ 80
- 61
src/test/kotlin/com/dmdirc/ktirc/io/MessageHandlerTest.kt View File

7
 import com.dmdirc.ktirc.events.mutators.EventMutator
7
 import com.dmdirc.ktirc.events.mutators.EventMutator
8
 import com.dmdirc.ktirc.messages.MessageProcessor
8
 import com.dmdirc.ktirc.messages.MessageProcessor
9
 import com.dmdirc.ktirc.model.IrcMessage
9
 import com.dmdirc.ktirc.model.IrcMessage
10
-import com.nhaarman.mockitokotlin2.*
10
+import io.mockk.*
11
 import kotlinx.coroutines.channels.Channel
11
 import kotlinx.coroutines.channels.Channel
12
 import kotlinx.coroutines.runBlocking
12
 import kotlinx.coroutines.runBlocking
13
 import org.junit.jupiter.api.Test
13
 import org.junit.jupiter.api.Test
14
 
14
 
15
 internal class MessageHandlerTest {
15
 internal class MessageHandlerTest {
16
 
16
 
17
-    private val ircClient = mock<IrcClient>()
17
+    private val ircClient = mockk<IrcClient>()
18
 
18
 
19
-    private val nickProcessor = mock<MessageProcessor> {
20
-        on { commands } doReturn arrayOf("FOO", "NICK")
19
+    private val nickProcessor = mockk<MessageProcessor> {
20
+        every { commands } returns arrayOf("FOO", "NICK")
21
+        every { process(any()) } returns emptyList()
21
     }
22
     }
22
 
23
 
23
-    private val joinProcessor = mock<MessageProcessor> {
24
-        on { commands } doReturn arrayOf("BAR", "JOIN")
24
+    private val joinProcessor = mockk<MessageProcessor> {
25
+        every { commands } returns arrayOf("BAR", "JOIN")
26
+        every { process(any()) } returns emptyList()
25
     }
27
     }
26
 
28
 
29
+    private val eventHandler1 = mockk<EventHandler>()
30
+    private val eventHandler2 = mockk<EventHandler>()
31
+
27
     @Test
32
     @Test
28
-    fun `passes message on to correct processor`() = runBlocking<Unit> {
33
+    fun `passes message on to correct processor`() = runBlocking {
29
         val handler = MessageHandler(listOf(joinProcessor, nickProcessor), emptyList(), mutableListOf())
34
         val handler = MessageHandler(listOf(joinProcessor, nickProcessor), emptyList(), mutableListOf())
30
         val message = IrcMessage(emptyMap(), null, "JOIN", emptyList())
35
         val message = IrcMessage(emptyMap(), null, "JOIN", emptyList())
31
 
36
 
35
             handler.processMessages(ircClient, this)
40
             handler.processMessages(ircClient, this)
36
         }
41
         }
37
 
42
 
38
-        verify(joinProcessor).process(message)
43
+        verify {
44
+            joinProcessor.process(message)
45
+        }
39
     }
46
     }
40
 
47
 
41
     @Test
48
     @Test
42
-    fun `reads multiple messages`() = runBlocking<Unit> {
49
+    fun `reads multiple messages`() = runBlocking {
43
         val handler = MessageHandler(listOf(joinProcessor, nickProcessor), emptyList(), mutableListOf())
50
         val handler = MessageHandler(listOf(joinProcessor, nickProcessor), emptyList(), mutableListOf())
44
         val joinMessage = IrcMessage(emptyMap(), null, "JOIN", emptyList())
51
         val joinMessage = IrcMessage(emptyMap(), null, "JOIN", emptyList())
45
         val nickMessage = IrcMessage(emptyMap(), null, "NICK", emptyList())
52
         val nickMessage = IrcMessage(emptyMap(), null, "NICK", emptyList())
53
             handler.processMessages(ircClient, this)
60
             handler.processMessages(ircClient, this)
54
         }
61
         }
55
 
62
 
56
-        with(inOrder(joinProcessor, nickProcessor)) {
57
-            verify(joinProcessor).process(joinMessage)
58
-            verify(nickProcessor).process(nickMessage)
63
+        verifyOrder {
64
+            joinProcessor.process(joinMessage)
65
+            nickProcessor.process(nickMessage)
59
         }
66
         }
60
     }
67
     }
61
 
68
 
62
     @Test
69
     @Test
63
     fun `invokes all event handler with all returned events`() = runBlocking {
70
     fun `invokes all event handler with all returned events`() = runBlocking {
64
-        val eventHandler1 = mock<EventHandler>()
65
-        val eventHandler2 = mock<EventHandler>()
66
         val handler = MessageHandler(listOf(joinProcessor, nickProcessor), emptyList(), mutableListOf(eventHandler1, eventHandler2))
71
         val handler = MessageHandler(listOf(joinProcessor, nickProcessor), emptyList(), mutableListOf(eventHandler1, eventHandler2))
67
         val joinMessage = IrcMessage(emptyMap(), null, "JOIN", emptyList())
72
         val joinMessage = IrcMessage(emptyMap(), null, "JOIN", emptyList())
68
-        whenever(joinProcessor.process(any())).thenReturn(listOf(ServerConnected(EventMetadata(TestConstants.time)), ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn")))
73
+
74
+        every { joinProcessor.process(any()) } returns listOf(ServerConnected(EventMetadata(TestConstants.time)), ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
69
 
75
 
70
         with(Channel<IrcMessage>(1)) {
76
         with(Channel<IrcMessage>(1)) {
71
             send(joinMessage)
77
             send(joinMessage)
73
             handler.processMessages(ircClient, this)
79
             handler.processMessages(ircClient, this)
74
         }
80
         }
75
 
81
 
76
-        verify(eventHandler1).processEvent(same(ircClient), isA<ServerConnected>())
77
-        verify(eventHandler1).processEvent(same(ircClient), isA<ServerWelcome>())
78
-        verify(eventHandler2).processEvent(same(ircClient), isA<ServerConnected>())
79
-        verify(eventHandler2).processEvent(same(ircClient), isA<ServerWelcome>())
82
+        verify {
83
+            eventHandler1.processEvent(refEq(ircClient), ofType<ServerConnected>())
84
+            eventHandler1.processEvent(refEq(ircClient), ofType<ServerWelcome>())
85
+            eventHandler2.processEvent(refEq(ircClient), ofType<ServerConnected>())
86
+            eventHandler2.processEvent(refEq(ircClient), ofType<ServerWelcome>())
87
+        }
80
     }
88
     }
81
 
89
 
82
     @Test
90
     @Test
83
     fun `sends custom events to all handlers`() {
91
     fun `sends custom events to all handlers`() {
84
-        val eventHandler1 = mock<EventHandler>()
85
-        val eventHandler2 = mock<EventHandler>()
86
         val handler = MessageHandler(emptyList(), emptyList(), mutableListOf(eventHandler1, eventHandler2))
92
         val handler = MessageHandler(emptyList(), emptyList(), mutableListOf(eventHandler1, eventHandler2))
87
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
93
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
88
 
94
 
89
-        verify(eventHandler1).processEvent(same(ircClient), isA<ServerWelcome>())
90
-        verify(eventHandler2).processEvent(same(ircClient), isA<ServerWelcome>())
95
+        verify {
96
+            eventHandler1.processEvent(refEq(ircClient), ofType<ServerWelcome>())
97
+            eventHandler2.processEvent(refEq(ircClient), ofType<ServerWelcome>())
98
+        }
91
     }
99
     }
92
 
100
 
93
     @Test
101
     @Test
94
     fun `sends custom events to all emitters`() {
102
     fun `sends custom events to all emitters`() {
95
         val handler = MessageHandler(emptyList(), emptyList(), emptyList())
103
         val handler = MessageHandler(emptyList(), emptyList(), emptyList())
96
-        val emitter1 = mock<(IrcEvent) -> Unit>()
97
-        val emitter2 = mock<(IrcEvent) -> Unit>()
104
+        val emitter1 = mockk<(IrcEvent) -> Unit> {
105
+            every { this@mockk(any<IrcEvent>()) } just Runs
106
+        }
107
+        val emitter2 = mockk<(IrcEvent) -> Unit>  {
108
+            every { this@mockk(any<IrcEvent>()) } just Runs
109
+        }
98
         handler.addEmitter(emitter1)
110
         handler.addEmitter(emitter1)
99
         handler.addEmitter(emitter2)
111
         handler.addEmitter(emitter2)
100
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
112
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
101
 
113
 
102
-        verify(emitter1).invoke(isA<ServerWelcome>())
103
-        verify(emitter2).invoke(isA<ServerWelcome>())
114
+        verify {
115
+            emitter1(ofType<ServerWelcome>())
116
+            emitter2(ofType<ServerWelcome>())
117
+        }
104
     }
118
     }
105
 
119
 
106
     @Test
120
     @Test
107
     fun `sends events to handlers but not mutators or emitters if process only is true`() {
121
     fun `sends events to handlers but not mutators or emitters if process only is true`() {
108
-        val mutator = mock<EventMutator>()
109
-        val eventHandler1 = mock<EventHandler>()
110
-        val eventHandler2 = mock<EventHandler>()
122
+        val mutator = mockk<EventMutator>()
111
         val handler = MessageHandler(emptyList(), listOf(mutator), listOf(eventHandler1, eventHandler2))
123
         val handler = MessageHandler(emptyList(), listOf(mutator), listOf(eventHandler1, eventHandler2))
112
-        val emitter = mock<(IrcEvent) -> Unit>()
124
+        val emitter = mockk<(IrcEvent) -> Unit>()
113
         handler.addEmitter(emitter)
125
         handler.addEmitter(emitter)
114
 
126
 
115
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"), true)
127
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"), true)
116
 
128
 
117
-        verify(eventHandler1).processEvent(same(ircClient), isA<ServerWelcome>())
118
-        verify(eventHandler2).processEvent(same(ircClient), isA<ServerWelcome>())
119
-        verify(emitter, never()).invoke(any())
120
-        verify(mutator, never()).mutateEvent(any(), any(), any())
129
+        verify {
130
+            eventHandler1.processEvent(refEq(ircClient), ofType<ServerWelcome>())
131
+            eventHandler2.processEvent(refEq(ircClient), ofType<ServerWelcome>())
132
+        }
133
+        verify(inverse = true) {
134
+            emitter.invoke(any())
135
+            mutator.mutateEvent(any(), any(), any())
136
+        }
121
     }
137
     }
122
 
138
 
123
     @Test
139
     @Test
124
     fun `mutates events in order`() {
140
     fun `mutates events in order`() {
125
-        val eventMutator1 = mock<EventMutator> {
126
-            on { mutateEvent(any(), any(), isA<ServerWelcome>()) } doReturn listOf(ServerReady(EventMetadata(TestConstants.time)))
141
+        val eventMutator1 = mockk<EventMutator> {
142
+            every { mutateEvent(any(), any(), ofType<ServerWelcome>()) } returns listOf(ServerReady(EventMetadata(TestConstants.time)))
127
         }
143
         }
128
-        val eventMutator2 = mock<EventMutator> {
129
-            on { mutateEvent(any(), any(), isA<ServerReady>()) } doReturn listOf(ServerConnected(EventMetadata(TestConstants.time)))
144
+        val eventMutator2 = mockk<EventMutator> {
145
+            every { mutateEvent(any(), any(), ofType<ServerReady>()) } returns  listOf(ServerConnected(EventMetadata(TestConstants.time)))
130
         }
146
         }
131
-        val eventHandler = mock<EventHandler>()
147
+        val eventHandler = mockk<EventHandler>()
132
 
148
 
133
         val handler = MessageHandler(emptyList(), listOf(eventMutator1, eventMutator2), mutableListOf(eventHandler))
149
         val handler = MessageHandler(emptyList(), listOf(eventMutator1, eventMutator2), mutableListOf(eventHandler))
134
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
150
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
135
 
151
 
136
-        verify(eventMutator1).mutateEvent(same(ircClient), same(handler), isA<ServerWelcome>())
137
-        verify(eventMutator2).mutateEvent(same(ircClient), same(handler), isA<ServerReady>())
138
-        verify(eventHandler).processEvent(same(ircClient), isA<ServerConnected>())
139
-        verifyNoMoreInteractions(eventHandler)
152
+        verifyAll {
153
+            eventMutator1.mutateEvent(refEq(ircClient), refEq(handler), ofType<ServerWelcome>())
154
+            eventMutator2.mutateEvent(refEq(ircClient), refEq(handler), ofType<ServerReady>())
155
+            eventHandler.processEvent(refEq(ircClient), ofType<ServerConnected>())
156
+        }
140
     }
157
     }
141
 
158
 
142
     @Test
159
     @Test
143
     fun `allows mutators to fan out events`() {
160
     fun `allows mutators to fan out events`() {
144
-        val eventMutator1 = mock<EventMutator> {
145
-            on { mutateEvent(any(), any(), isA<ServerWelcome>()) } doReturn listOf(
161
+        val eventMutator1 = mockk<EventMutator> {
162
+            every { mutateEvent(any(), any(), ofType<ServerWelcome>()) } returns listOf(
146
                     ServerReady(EventMetadata(TestConstants.time)),
163
                     ServerReady(EventMetadata(TestConstants.time)),
147
                     ServerConnected(EventMetadata(TestConstants.time))
164
                     ServerConnected(EventMetadata(TestConstants.time))
148
             )
165
             )
149
         }
166
         }
150
-        val eventMutator2 = mock<EventMutator> {
151
-            on { mutateEvent(any(), any(), isA<ServerReady>()) } doReturn listOf(ServerReady(EventMetadata(TestConstants.time)))
152
-            on { mutateEvent(any(), any(), isA<ServerConnected>()) } doReturn listOf(ServerConnected(EventMetadata(TestConstants.time)))
167
+        val eventMutator2 = mockk<EventMutator> {
168
+            every { mutateEvent(any(), any(), ofType<ServerReady>()) } returns listOf(ServerReady(EventMetadata(TestConstants.time)))
169
+            every { mutateEvent(any(), any(), ofType<ServerConnected>()) } returns listOf(ServerConnected(EventMetadata(TestConstants.time)))
153
         }
170
         }
154
-        val eventHandler = mock<EventHandler>()
171
+        val eventHandler = mockk<EventHandler>()
155
 
172
 
156
         val handler = MessageHandler(emptyList(), listOf(eventMutator1, eventMutator2), mutableListOf(eventHandler))
173
         val handler = MessageHandler(emptyList(), listOf(eventMutator1, eventMutator2), mutableListOf(eventHandler))
157
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
174
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
158
 
175
 
159
-        with(inOrder(eventMutator2, eventHandler)) {
160
-            verify(eventMutator2).mutateEvent(same(ircClient), same(handler), isA<ServerReady>())
161
-            verify(eventMutator2).mutateEvent(same(ircClient), same(handler), isA<ServerConnected>())
162
-            verify(eventHandler).processEvent(same(ircClient), isA<ServerReady>())
163
-            verify(eventHandler).processEvent(same(ircClient), isA<ServerConnected>())
176
+        verifyOrder {
177
+            eventMutator2.mutateEvent(refEq(ircClient), refEq(handler), ofType<ServerReady>())
178
+            eventMutator2.mutateEvent(refEq(ircClient), refEq(handler), ofType<ServerConnected>())
179
+            eventHandler.processEvent(refEq(ircClient), ofType<ServerReady>())
180
+            eventHandler.processEvent(refEq(ircClient), ofType<ServerConnected>())
164
         }
181
         }
165
     }
182
     }
166
 
183
 
167
     @Test
184
     @Test
168
     fun `allows mutators to suppress events`() {
185
     fun `allows mutators to suppress events`() {
169
-        val eventMutator1 = mock<EventMutator> {
170
-            on { mutateEvent(any(), any(), isA<ServerWelcome>()) } doReturn emptyList()
186
+        val eventMutator1 = mockk<EventMutator> {
187
+            every { mutateEvent(any(), any(), ofType<ServerWelcome>()) } returns emptyList()
171
         }
188
         }
172
-        val eventMutator2 = mock<EventMutator>()
173
-        val eventHandler = mock<EventHandler>()
189
+        val eventMutator2 = mockk<EventMutator>()
190
+        val eventHandler = mockk<EventHandler>()
174
 
191
 
175
         val handler = MessageHandler(emptyList(), listOf(eventMutator1, eventMutator2), mutableListOf(eventHandler))
192
         val handler = MessageHandler(emptyList(), listOf(eventMutator1, eventMutator2), mutableListOf(eventHandler))
176
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
193
         handler.handleEvent(ircClient, ServerWelcome(EventMetadata(TestConstants.time), "the.gibson", "acidBurn"))
177
 
194
 
178
-        verify(eventMutator2, never()).mutateEvent(any(), same(handler), any())
179
-        verify(eventHandler, never()).processEvent(any(), any())
195
+        verify(inverse = true) {
196
+            eventMutator2.mutateEvent(any(), refEq(handler), any())
197
+            eventHandler.processEvent(any(), any())
198
+        }
180
     }
199
     }
181
 
200
 
182
 }
201
 }

+ 21
- 21
src/test/kotlin/com/dmdirc/ktirc/messages/MessageBuildersTest.kt View File

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

+ 11
- 11
src/test/kotlin/com/dmdirc/ktirc/model/SaslStateTest.kt View File

1
 package com.dmdirc.ktirc.model
1
 package com.dmdirc.ktirc.model
2
 
2
 
3
 import com.dmdirc.ktirc.sasl.SaslMechanism
3
 import com.dmdirc.ktirc.sasl.SaslMechanism
4
-import com.nhaarman.mockitokotlin2.doReturn
5
-import com.nhaarman.mockitokotlin2.mock
4
+import io.mockk.every
5
+import io.mockk.mockk
6
 import org.junit.jupiter.api.Assertions.*
6
 import org.junit.jupiter.api.Assertions.*
7
 import org.junit.jupiter.api.Test
7
 import org.junit.jupiter.api.Test
8
 
8
 
9
 internal class SaslStateTest {
9
 internal class SaslStateTest {
10
 
10
 
11
-    private val mech1 = mock<SaslMechanism> {
12
-        on { priority } doReturn 1
13
-        on { ircName } doReturn "mech1"
11
+    private val mech1 = mockk<SaslMechanism> {
12
+        every { priority } returns 1
13
+        every { ircName } returns "mech1"
14
     }
14
     }
15
 
15
 
16
-    private val mech2 = mock<SaslMechanism> {
17
-        on { priority } doReturn 2
18
-        on { ircName } doReturn "mech2"
16
+    private val mech2 = mockk<SaslMechanism> {
17
+        every { priority } returns 2
18
+        every { ircName } returns "mech2"
19
     }
19
     }
20
 
20
 
21
-    private val mech3 = mock<SaslMechanism> {
22
-        on { priority } doReturn 3
23
-        on { ircName } doReturn "mech3"
21
+    private val mech3 = mockk<SaslMechanism> {
22
+        every { priority } returns 3
23
+        every { ircName } returns "mech3"
24
     }
24
     }
25
 
25
 
26
     private val mechanisms = listOf(mech1, mech2, mech3)
26
     private val mechanisms = listOf(mech1, mech2, mech3)

+ 4
- 4
src/test/kotlin/com/dmdirc/ktirc/sasl/ExternalMechanismTest.kt View File

1
 package com.dmdirc.ktirc.sasl
1
 package com.dmdirc.ktirc.sasl
2
 
2
 
3
 import com.dmdirc.ktirc.IrcClient
3
 import com.dmdirc.ktirc.IrcClient
4
-import com.nhaarman.mockitokotlin2.mock
5
-import com.nhaarman.mockitokotlin2.verify
4
+import io.mockk.mockk
5
+import io.mockk.verify
6
 import org.junit.jupiter.api.Test
6
 import org.junit.jupiter.api.Test
7
 
7
 
8
 internal class ExternalMechanismTest {
8
 internal class ExternalMechanismTest {
10
     @Test
10
     @Test
11
     fun `sends + when receiving server message`() {
11
     fun `sends + when receiving server message`() {
12
         val mechanism = ExternalMechanism()
12
         val mechanism = ExternalMechanism()
13
-        val client = mock<IrcClient>()
13
+        val client = mockk<IrcClient>()
14
 
14
 
15
         mechanism.handleAuthenticationEvent(client, null)
15
         mechanism.handleAuthenticationEvent(client, null)
16
 
16
 
17
-        verify(client).send("AUTHENTICATE", "+")
17
+        verify { client.send("AUTHENTICATE", "+") }
18
     }
18
     }
19
 
19
 
20
 }
20
 }

+ 7
- 7
src/test/kotlin/com/dmdirc/ktirc/sasl/PlainMechanismTest.kt View File

3
 import com.dmdirc.ktirc.IrcClient
3
 import com.dmdirc.ktirc.IrcClient
4
 import com.dmdirc.ktirc.SaslConfig
4
 import com.dmdirc.ktirc.SaslConfig
5
 import com.dmdirc.ktirc.model.ServerState
5
 import com.dmdirc.ktirc.model.ServerState
6
-import com.nhaarman.mockitokotlin2.*
6
+import io.mockk.*
7
 import org.junit.jupiter.api.Assertions.assertEquals
7
 import org.junit.jupiter.api.Assertions.assertEquals
8
 import org.junit.jupiter.api.Test
8
 import org.junit.jupiter.api.Test
9
 
9
 
10
 internal class PlainMechanismTest {
10
 internal class PlainMechanismTest {
11
 
11
 
12
-    private val serverState = ServerState("", "")
13
-    private val ircClient = mock<IrcClient> {
14
-        on { serverState } doReturn serverState
12
+    private val fakeServerState = ServerState("", "")
13
+    private val ircClient = mockk<IrcClient> {
14
+        every { serverState } returns fakeServerState
15
     }
15
     }
16
 
16
 
17
     private val mechanism = PlainMechanism(SaslConfig().apply {
17
     private val mechanism = PlainMechanism(SaslConfig().apply {
21
 
21
 
22
     @Test
22
     @Test
23
     fun `sends encoded username and password when first message received`() {
23
     fun `sends encoded username and password when first message received`() {
24
+        val slot = slot<String>()
25
+        every { ircClient.send(eq("AUTHENTICATE"), capture(slot)) } just Runs
24
         mechanism.handleAuthenticationEvent(ircClient, null)
26
         mechanism.handleAuthenticationEvent(ircClient, null)
25
 
27
 
26
-        val captor = argumentCaptor<String>()
27
-        verify(ircClient).send(eq("AUTHENTICATE"), captor.capture())
28
-        val data = String(captor.firstValue.fromBase64()).split('\u0000')
28
+        val data = String(slot.captured.fromBase64()).split('\u0000')
29
         assertEquals("acidB", data[0])
29
         assertEquals("acidB", data[0])
30
         assertEquals("acidB", data[1])
30
         assertEquals("acidB", data[1])
31
         assertEquals("HackThePlan3t!", data[2])
31
         assertEquals("HackThePlan3t!", data[2])

+ 13
- 14
src/test/kotlin/com/dmdirc/ktirc/sasl/SaslMechanismTest.kt View File

2
 
2
 
3
 import com.dmdirc.ktirc.IrcClient
3
 import com.dmdirc.ktirc.IrcClient
4
 import com.dmdirc.ktirc.SaslConfig
4
 import com.dmdirc.ktirc.SaslConfig
5
-import com.nhaarman.mockitokotlin2.inOrder
6
-import com.nhaarman.mockitokotlin2.mock
7
-import com.nhaarman.mockitokotlin2.times
8
-import com.nhaarman.mockitokotlin2.verify
5
+import io.mockk.mockk
6
+import io.mockk.verify
7
+import io.mockk.verifyOrder
9
 import org.junit.jupiter.api.Assertions.assertEquals
8
 import org.junit.jupiter.api.Assertions.assertEquals
10
 import org.junit.jupiter.api.Assertions.assertTrue
9
 import org.junit.jupiter.api.Assertions.assertTrue
11
 import org.junit.jupiter.api.Test
10
 import org.junit.jupiter.api.Test
12
 
11
 
13
 internal class SaslMechanismTest {
12
 internal class SaslMechanismTest {
14
 
13
 
14
+    private val client = mockk<IrcClient>()
15
+
15
     @Test
16
     @Test
16
     fun `creates sasl mechanisms by name`() {
17
     fun `creates sasl mechanisms by name`() {
17
         val mechanisms = SaslConfig().apply { mechanisms("PLAIN", "EXTERNAL") }.createSaslMechanism()
18
         val mechanisms = SaslConfig().apply { mechanisms("PLAIN", "EXTERNAL") }.createSaslMechanism()
29
 
30
 
30
     @Test
31
     @Test
31
     fun `base64 encodes authentication data`() {
32
     fun `base64 encodes authentication data`() {
32
-        val client = mock<IrcClient>()
33
         client.sendAuthenticationData("abcdef")
33
         client.sendAuthenticationData("abcdef")
34
-        verify(client).send("AUTHENTICATE", "YWJjZGVm")
34
+        verify { client.send("AUTHENTICATE", "YWJjZGVm") }
35
     }
35
     }
36
 
36
 
37
     @Test
37
     @Test
38
     fun `chunks authentication data into 400 byte lines`() {
38
     fun `chunks authentication data into 400 byte lines`() {
39
-        val client = mock<IrcClient>()
40
         client.sendAuthenticationData("abcdef".repeat(120))
39
         client.sendAuthenticationData("abcdef".repeat(120))
41
-        with (inOrder(client)) {
42
-            verify(client, times(2)).send("AUTHENTICATE", "YWJjZGVm".repeat(50))
43
-            verify(client).send("AUTHENTICATE", "YWJjZGVm".repeat(20))
40
+        verifyOrder {
41
+            client.send("AUTHENTICATE", "YWJjZGVm".repeat(50))
42
+            client.send("AUTHENTICATE", "YWJjZGVm".repeat(50))
43
+            client.send("AUTHENTICATE", "YWJjZGVm".repeat(20))
44
         }
44
         }
45
     }
45
     }
46
 
46
 
47
     @Test
47
     @Test
48
     fun `sends blank line if data is exactly 400 bytes`() {
48
     fun `sends blank line if data is exactly 400 bytes`() {
49
-        val client = mock<IrcClient>()
50
         client.sendAuthenticationData("abcdef".repeat(50))
49
         client.sendAuthenticationData("abcdef".repeat(50))
51
-        with (inOrder(client)) {
52
-            verify(client).send("AUTHENTICATE", "YWJjZGVm".repeat(50))
53
-            verify(client).send("AUTHENTICATE", "+")
50
+        verifyOrder {
51
+            client.send("AUTHENTICATE", "YWJjZGVm".repeat(50))
52
+            client.send("AUTHENTICATE", "+")
54
         }
53
         }
55
     }
54
     }
56
 
55
 

+ 34
- 34
src/test/kotlin/com/dmdirc/ktirc/sasl/ScramMechanismTest.kt View File

3
 import com.dmdirc.ktirc.IrcClient
3
 import com.dmdirc.ktirc.IrcClient
4
 import com.dmdirc.ktirc.SaslConfig
4
 import com.dmdirc.ktirc.SaslConfig
5
 import com.dmdirc.ktirc.model.ServerState
5
 import com.dmdirc.ktirc.model.ServerState
6
-import com.nhaarman.mockitokotlin2.doReturn
7
-import com.nhaarman.mockitokotlin2.mock
8
-import com.nhaarman.mockitokotlin2.verify
6
+import io.mockk.every
7
+import io.mockk.mockk
8
+import io.mockk.verify
9
 import org.junit.jupiter.api.Assertions.assertEquals
9
 import org.junit.jupiter.api.Assertions.assertEquals
10
 import org.junit.jupiter.api.Test
10
 import org.junit.jupiter.api.Test
11
 
11
 
12
 internal class ScramMechanismTest {
12
 internal class ScramMechanismTest {
13
 
13
 
14
-    private val serverState = ServerState("", "")
15
-    private val ircClient = mock<IrcClient> {
16
-        on { serverState } doReturn serverState
14
+    private val fakeServerState = ServerState("", "")
15
+    private val ircClient = mockk<IrcClient> {
16
+        every { serverState } returns fakeServerState
17
     }
17
     }
18
 
18
 
19
     @Test
19
     @Test
25
 
25
 
26
         mechanism.handleAuthenticationEvent(ircClient, "+".toByteArray())
26
         mechanism.handleAuthenticationEvent(ircClient, "+".toByteArray())
27
 
27
 
28
-        val nonce = (serverState.sasl.mechanismState as ScramState).clientNonce
29
-        verify(ircClient).send("AUTHENTICATE", "n,,n=user,r=$nonce".toByteArray().toBase64())
28
+        val nonce = (fakeServerState.sasl.mechanismState as ScramState).clientNonce
29
+        verify { ircClient.send("AUTHENTICATE", "n,,n=user,r=$nonce".toByteArray().toBase64()) }
30
     }
30
     }
31
 
31
 
32
     @Test
32
     @Test
36
             password = "pencil"
36
             password = "pencil"
37
         })
37
         })
38
 
38
 
39
-        serverState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
39
+        fakeServerState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
40
 
40
 
41
         mechanism.handleAuthenticationEvent(ircClient, "m=future".toByteArray())
41
         mechanism.handleAuthenticationEvent(ircClient, "m=future".toByteArray())
42
 
42
 
43
-        verify(ircClient).send("AUTHENTICATE", "*")
43
+        verify { ircClient.send("AUTHENTICATE", "*") }
44
     }
44
     }
45
 
45
 
46
     @Test
46
     @Test
50
             password = "pencil"
50
             password = "pencil"
51
         })
51
         })
52
 
52
 
53
-        serverState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
53
+        fakeServerState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
54
 
54
 
55
         mechanism.handleAuthenticationEvent(ircClient, "e=whoops".toByteArray())
55
         mechanism.handleAuthenticationEvent(ircClient, "e=whoops".toByteArray())
56
 
56
 
57
-        verify(ircClient).send("AUTHENTICATE", "*")
57
+        verify { ircClient.send("AUTHENTICATE", "*") }
58
     }
58
     }
59
 
59
 
60
     @Test
60
     @Test
64
             password = "pencil"
64
             password = "pencil"
65
         })
65
         })
66
 
66
 
67
-        serverState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
67
+        fakeServerState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
68
 
68
 
69
         mechanism.handleAuthenticationEvent(ircClient, "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92".toByteArray())
69
         mechanism.handleAuthenticationEvent(ircClient, "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92".toByteArray())
70
 
70
 
71
-        verify(ircClient).send("AUTHENTICATE", "*")
71
+        verify { ircClient.send("AUTHENTICATE", "*") }
72
     }
72
     }
73
 
73
 
74
     @Test
74
     @Test
78
             password = "pencil"
78
             password = "pencil"
79
         })
79
         })
80
 
80
 
81
-        serverState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
81
+        fakeServerState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
82
 
82
 
83
         mechanism.handleAuthenticationEvent(ircClient, "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=leet".toByteArray())
83
         mechanism.handleAuthenticationEvent(ircClient, "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=leet".toByteArray())
84
 
84
 
85
-        verify(ircClient).send("AUTHENTICATE", "*")
85
+        verify { ircClient.send("AUTHENTICATE", "*") }
86
     }
86
     }
87
 
87
 
88
     @Test
88
     @Test
92
             password = "pencil"
92
             password = "pencil"
93
         })
93
         })
94
 
94
 
95
-        serverState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
95
+        fakeServerState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
96
 
96
 
97
         mechanism.handleAuthenticationEvent(ircClient, "rs=QSXCR+Q6sek8bf92,i=4096".toByteArray())
97
         mechanism.handleAuthenticationEvent(ircClient, "rs=QSXCR+Q6sek8bf92,i=4096".toByteArray())
98
 
98
 
99
-        verify(ircClient).send("AUTHENTICATE", "*")
99
+        verify { ircClient.send("AUTHENTICATE", "*") }
100
     }
100
     }
101
 
101
 
102
     @Test
102
     @Test
106
             password = "pencil"
106
             password = "pencil"
107
         })
107
         })
108
 
108
 
109
-        serverState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
109
+        fakeServerState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage)
110
 
110
 
111
         mechanism.handleAuthenticationEvent(ircClient, "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,i=4096".toByteArray())
111
         mechanism.handleAuthenticationEvent(ircClient, "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,i=4096".toByteArray())
112
 
112
 
113
-        verify(ircClient).send("AUTHENTICATE", "*")
113
+        verify { ircClient.send("AUTHENTICATE", "*") }
114
     }
114
     }
115
 
115
 
116
     @Test
116
     @Test
120
             password = "pencil"
120
             password = "pencil"
121
         })
121
         })
122
 
122
 
123
-        serverState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage, clientNonce = "fyko+d2lbbFgONRv9qkxdawL")
123
+        fakeServerState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage, clientNonce = "fyko+d2lbbFgONRv9qkxdawL")
124
 
124
 
125
         mechanism.handleAuthenticationEvent(ircClient, "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096".toByteArray())
125
         mechanism.handleAuthenticationEvent(ircClient, "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096".toByteArray())
126
 
126
 
127
-        (serverState.sasl.mechanismState as ScramState).let {
127
+        (fakeServerState.sasl.mechanismState as ScramState).let {
128
             assertEquals(ScramStage.Finishing, it.scramStage)
128
             assertEquals(ScramStage.Finishing, it.scramStage)
129
             assertEquals("fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j", it.serverNonce)
129
             assertEquals("fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j", it.serverNonce)
130
             assertEquals(4096, it.iterCount)
130
             assertEquals(4096, it.iterCount)
141
             password = "pencil"
141
             password = "pencil"
142
         })
142
         })
143
 
143
 
144
-        serverState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage, clientNonce = "fyko+d2lbbFgONRv9qkxdawL")
144
+        fakeServerState.sasl.mechanismState = ScramState(scramStage = ScramStage.SendingSecondMessage, clientNonce = "fyko+d2lbbFgONRv9qkxdawL")
145
 
145
 
146
         mechanism.handleAuthenticationEvent(ircClient, "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096".toByteArray())
146
         mechanism.handleAuthenticationEvent(ircClient, "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096".toByteArray())
147
 
147
 
148
-        verify(ircClient).send("AUTHENTICATE", "c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=".toByteArray().toBase64())
148
+        verify { ircClient.send("AUTHENTICATE", "c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=".toByteArray().toBase64()) }
149
     }
149
     }
150
 
150
 
151
     @Test
151
     @Test
155
             password = "pencil"
155
             password = "pencil"
156
         })
156
         })
157
 
157
 
158
-        serverState.sasl.mechanismState = ScramState(scramStage = ScramStage.Finishing)
158
+        fakeServerState.sasl.mechanismState = ScramState(scramStage = ScramStage.Finishing)
159
 
159
 
160
         mechanism.handleAuthenticationEvent(ircClient, "m=future".toByteArray())
160
         mechanism.handleAuthenticationEvent(ircClient, "m=future".toByteArray())
161
 
161
 
162
-        verify(ircClient).send("AUTHENTICATE", "*")
162
+        verify { ircClient.send("AUTHENTICATE", "*") }
163
     }
163
     }
164
 
164
 
165
     @Test
165
     @Test
169
             password = "pencil"
169
             password = "pencil"
170
         })
170
         })
171
 
171
 
172
-        serverState.sasl.mechanismState = ScramState(scramStage = ScramStage.Finishing)
172
+        fakeServerState.sasl.mechanismState = ScramState(scramStage = ScramStage.Finishing)
173
 
173
 
174
         mechanism.handleAuthenticationEvent(ircClient, "e=whoops".toByteArray())
174
         mechanism.handleAuthenticationEvent(ircClient, "e=whoops".toByteArray())
175
 
175
 
176
-        verify(ircClient).send("AUTHENTICATE", "*")
176
+        verify { ircClient.send("AUTHENTICATE", "*") }
177
     }
177
     }
178
 
178
 
179
     @Test
179
     @Test
183
             password = "pencil"
183
             password = "pencil"
184
         })
184
         })
185
 
185
 
186
-        serverState.sasl.mechanismState = ScramState(
186
+        fakeServerState.sasl.mechanismState = ScramState(
187
                 scramStage = ScramStage.Finishing,
187
                 scramStage = ScramStage.Finishing,
188
                 saltedPassword = "HZbuOlKbWl+eR8AfIposuKbhX30=".fromBase64(),
188
                 saltedPassword = "HZbuOlKbWl+eR8AfIposuKbhX30=".fromBase64(),
189
                 authMessage = "n=user,r=fyko+d2lbbFgONRv9qkxdawL,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096,c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j".toByteArray())
189
                 authMessage = "n=user,r=fyko+d2lbbFgONRv9qkxdawL,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096,c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j".toByteArray())
190
 
190
 
191
         mechanism.handleAuthenticationEvent(ircClient, "".toByteArray())
191
         mechanism.handleAuthenticationEvent(ircClient, "".toByteArray())
192
 
192
 
193
-        verify(ircClient).send("AUTHENTICATE", "*")
193
+        verify { ircClient.send("AUTHENTICATE", "*") }
194
     }
194
     }
195
 
195
 
196
     @Test
196
     @Test
200
             password = "pencil"
200
             password = "pencil"
201
         })
201
         })
202
 
202
 
203
-        serverState.sasl.mechanismState = ScramState(
203
+        fakeServerState.sasl.mechanismState = ScramState(
204
                 scramStage = ScramStage.Finishing,
204
                 scramStage = ScramStage.Finishing,
205
                 saltedPassword = "HZbuOlKbWl+eR8AfIposuKbhX30=".fromBase64(),
205
                 saltedPassword = "HZbuOlKbWl+eR8AfIposuKbhX30=".fromBase64(),
206
                 authMessage = "n=user,r=fyko+d2lbbFgONRv9qkxdawL,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096,c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j".toByteArray())
206
                 authMessage = "n=user,r=fyko+d2lbbFgONRv9qkxdawL,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096,c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j".toByteArray())
207
 
207
 
208
         mechanism.handleAuthenticationEvent(ircClient, "v=rmF9pqV8S7suAoZWja4dJRkF=".toByteArray())
208
         mechanism.handleAuthenticationEvent(ircClient, "v=rmF9pqV8S7suAoZWja4dJRkF=".toByteArray())
209
 
209
 
210
-        verify(ircClient).send("AUTHENTICATE", "*")
210
+        verify { ircClient.send("AUTHENTICATE", "*") }
211
     }
211
     }
212
 
212
 
213
     @Test
213
     @Test
217
             password = "pencil"
217
             password = "pencil"
218
         })
218
         })
219
 
219
 
220
-        serverState.sasl.mechanismState = ScramState(
220
+        fakeServerState.sasl.mechanismState = ScramState(
221
                 scramStage = ScramStage.Finishing,
221
                 scramStage = ScramStage.Finishing,
222
                 saltedPassword = "HZbuOlKbWl+eR8AfIposuKbhX30=".fromBase64(),
222
                 saltedPassword = "HZbuOlKbWl+eR8AfIposuKbhX30=".fromBase64(),
223
                 authMessage = "n=user,r=fyko+d2lbbFgONRv9qkxdawL,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096,c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j".toByteArray())
223
                 authMessage = "n=user,r=fyko+d2lbbFgONRv9qkxdawL,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096,c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j".toByteArray())
224
 
224
 
225
         mechanism.handleAuthenticationEvent(ircClient, "v=rmF9pqV8S7suAoZWja4dJRkFsKQ=".toByteArray())
225
         mechanism.handleAuthenticationEvent(ircClient, "v=rmF9pqV8S7suAoZWja4dJRkFsKQ=".toByteArray())
226
 
226
 
227
-        verify(ircClient).send("AUTHENTICATE", "+")
227
+        verify { ircClient.send("AUTHENTICATE", "+") }
228
     }
228
     }
229
 
229
 
230
 }
230
 }

Loading…
Cancel
Save