Make QueueNetworkUtil check for actual connectivity

As from the docs, the isConnectedOrConnecting method "is good for
applications that need to do anything related to the network other than
read or write data. For the latter, call isConnected() instead, which
guarantees that the network is fully usable.".

In the cases used by this method, we want to have a fully working network
as the usage is to transfer data.

https://developer.android.com/reference/android/net/NetworkInfo#isConnected()

MAILAND-3074
This commit is contained in:
Marino Meneghel 2023-04-25 15:35:12 +02:00 committed by Zorica Stojchevska
parent 24ed833afb
commit fdf390c197
2 changed files with 19 additions and 19 deletions

View File

@ -134,7 +134,7 @@ class QueueNetworkUtil @Inject constructor(
private fun hasConn(checkReal: Boolean): Boolean {
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val netInfo = cm.activeNetworkInfo
var hasConnection = netInfo != null && netInfo.isConnectedOrConnecting
var hasConnection = netInfo != null && netInfo.isConnected
val currentStatus = isServerAccessible
if (checkReal) {
hasConnection = hasConnection && isServerAccessible

View File

@ -67,7 +67,7 @@ internal open class QueueNetworkUtilTest {
@Test
fun `should call the listener as soon as the real connectivity is updated`() = with(testInput) {
// given
every { networkInfoMock.isConnectedOrConnecting } returns isConnectedOrConnecting
every { networkInfoMock.isConnected } returns isConnected
queueNetworkUtil.setListener(listenerMock)
// when
@ -82,25 +82,25 @@ internal open class QueueNetworkUtilTest {
private val pingNeededStateInputs = listOf(
TestInput(
serverAccessible = true,
isConnectedOrConnecting = true,
isConnected = true,
connectionState = Constants.ConnectionState.PING_NEEDED,
expectedNetworkStatus = NetworkUtil.METERED
),
TestInput(
serverAccessible = true,
isConnectedOrConnecting = false,
isConnected = false,
connectionState = Constants.ConnectionState.PING_NEEDED,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
),
TestInput(
serverAccessible = false,
isConnectedOrConnecting = true,
isConnected = true,
connectionState = Constants.ConnectionState.PING_NEEDED,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
),
TestInput(
serverAccessible = false,
isConnectedOrConnecting = false,
isConnected = false,
connectionState = Constants.ConnectionState.PING_NEEDED,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
)
@ -109,25 +109,25 @@ internal open class QueueNetworkUtilTest {
private val connectedStateInputs = listOf(
TestInput(
serverAccessible = true,
isConnectedOrConnecting = true,
isConnected = true,
connectionState = Constants.ConnectionState.CONNECTED,
expectedNetworkStatus = NetworkUtil.METERED
),
TestInput(
serverAccessible = true,
isConnectedOrConnecting = false,
isConnected = false,
connectionState = Constants.ConnectionState.CONNECTED,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
),
TestInput(
serverAccessible = false,
isConnectedOrConnecting = true,
isConnected = true,
connectionState = Constants.ConnectionState.CONNECTED,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
),
TestInput(
serverAccessible = false,
isConnectedOrConnecting = false,
isConnected = false,
connectionState = Constants.ConnectionState.CONNECTED,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
)
@ -136,25 +136,25 @@ internal open class QueueNetworkUtilTest {
private val noInternetStateInputs = listOf(
TestInput(
serverAccessible = true,
isConnectedOrConnecting = true,
isConnected = true,
connectionState = Constants.ConnectionState.NO_INTERNET,
expectedNetworkStatus = NetworkUtil.METERED
),
TestInput(
serverAccessible = true,
isConnectedOrConnecting = false,
isConnected = false,
connectionState = Constants.ConnectionState.NO_INTERNET,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
),
TestInput(
serverAccessible = false,
isConnectedOrConnecting = true,
isConnected = true,
connectionState = Constants.ConnectionState.NO_INTERNET,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
),
TestInput(
serverAccessible = false,
isConnectedOrConnecting = false,
isConnected = false,
connectionState = Constants.ConnectionState.NO_INTERNET,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
)
@ -163,25 +163,25 @@ internal open class QueueNetworkUtilTest {
private val cantReachServerInputs = listOf(
TestInput(
serverAccessible = true,
isConnectedOrConnecting = true,
isConnected = true,
connectionState = Constants.ConnectionState.CANT_REACH_SERVER,
expectedNetworkStatus = NetworkUtil.METERED
),
TestInput(
serverAccessible = true,
isConnectedOrConnecting = false,
isConnected = false,
connectionState = Constants.ConnectionState.CANT_REACH_SERVER,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
),
TestInput(
serverAccessible = false,
isConnectedOrConnecting = true,
isConnected = true,
connectionState = Constants.ConnectionState.CANT_REACH_SERVER,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
),
TestInput(
serverAccessible = false,
isConnectedOrConnecting = false,
isConnected = false,
connectionState = Constants.ConnectionState.CANT_REACH_SERVER,
expectedNetworkStatus = NetworkUtil.DISCONNECTED
)
@ -197,7 +197,7 @@ internal open class QueueNetworkUtilTest {
internal data class TestInput(
val serverAccessible: Boolean,
val isConnectedOrConnecting: Boolean,
val isConnected: Boolean,
val connectionState: Constants.ConnectionState,
val expectedNetworkStatus: Int
)