Skip to content

Commit 2581932

Browse files
Handle start explicitly
1 parent 6440c61 commit 2581932

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

stream-android-core/src/main/java/io/getstream/android/core/internal/client/StreamClientImpl.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,11 @@ internal class StreamClientImpl<T>(
141141
.start()
142142
.flatMap { tokenManager.loadIfAbsent() }
143143
.flatMap { token -> connectSocketSession(token) }
144+
.flatMap { connected ->
145+
cidWatcher.start().map {
146+
connected
147+
}
148+
}
144149
.fold(
145150
onSuccess = { connected ->
146151
logger.d { "Connected to socket: $connected" }

stream-android-core/src/test/java/io/getstream/android/core/internal/client/StreamClientIImplTest.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,7 +1047,35 @@ class StreamClientIImplTest {
10471047
val result = client.connect()
10481048

10491049
assertTrue(result.isSuccess)
1050+
verify(exactly = 2) { cidWatcher.start() }
1051+
}
1052+
1053+
@Test
1054+
fun `connect fails when StreamCidWatcher start fails`() = runTest {
1055+
val client = createClient(this)
1056+
every { socketSession.subscribe(any<StreamClientListener>(), any()) } returns
1057+
Result.success(mockk(relaxed = true))
1058+
1059+
val token = StreamToken.fromString("tok")
1060+
coEvery { tokenManager.loadIfAbsent() } returns Result.success(token)
1061+
1062+
val connectedUser = mockk<StreamConnectedUser>(relaxed = true)
1063+
val connectedState = StreamConnectionState.Connected(connectedUser, "conn-2")
1064+
coEvery { socketSession.connect(any()) } returns Result.success(connectedState)
1065+
1066+
val startError = IllegalStateException("Unable to start watcher")
1067+
every { cidWatcher.start() } returns Result.failure(startError)
1068+
1069+
val result = client.connect()
1070+
1071+
assertTrue(result.isFailure)
1072+
assertSame(startError, result.exceptionOrNull())
10501073
verify(exactly = 1) { cidWatcher.start() }
1074+
verify(exactly = 0) { connectionIdHolder.setConnectionId(any()) }
1075+
val state = connFlow.value
1076+
assertTrue(state is StreamConnectionState.Disconnected)
1077+
val disconnected = state as StreamConnectionState.Disconnected
1078+
assertSame(startError, disconnected.cause)
10511079
}
10521080

10531081
@Test

0 commit comments

Comments
 (0)