/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.mozilla.fenix.ext import android.net.ConnectivityManager import android.net.Network import android.net.NetworkCapabilities import io.mockk.every import io.mockk.mockk import io.mockk.mockkStatic import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mozilla.fenix.TestApplication import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) @Config(application = TestApplication::class) class ConnectivityManagerTest { private lateinit var connectivityManager: ConnectivityManager @Before fun setup() { connectivityManager = mockk(relaxed = true) mockkStatic("org.mozilla.fenix.ext.ConnectivityManagerKt") } @Test fun `connectManager is online works`() { val network = mockk() val networkCapabilities = mockk() every { connectivityManager.getNetworkCapabilities(network) } returns networkCapabilities every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } returns true every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) } returns true assertTrue(connectivityManager.isOnline(network)) } @Test fun `connectManager is online with null network works`() { val network: Network? = null val networkCapabilities = mockk() every { connectivityManager.getNetworkCapabilities(network) } returns networkCapabilities every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } returns true every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) } returns true assertFalse(connectivityManager.isOnline(network)) } @Test fun `connectManager is online with unvalidated connection works`() { val network = mockk() val networkCapabilities = mockk() every { connectivityManager.getNetworkCapabilities(network) } returns networkCapabilities every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } returns true every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) } returns false assertFalse(connectivityManager.isOnline(network)) } @Test fun `connectManager is online with no connection works`() { val network = mockk() val networkCapabilities = mockk() every { connectivityManager.getNetworkCapabilities(network) } returns networkCapabilities every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) } returns false every { networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) } returns true assertFalse(connectivityManager.isOnline(network)) } }