188 lines
7.2 KiB
Kotlin
188 lines
7.2 KiB
Kotlin
/*
|
|
* Copyright (C) 2019 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.net
|
|
|
|
import android.os.Build
|
|
import androidx.test.filters.SmallTest
|
|
import com.android.modules.utils.build.SdkLevel
|
|
import com.android.testutils.assertParcelingIsLossless
|
|
import com.android.testutils.DevSdkIgnoreRule
|
|
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo
|
|
import com.android.testutils.DevSdkIgnoreRunner
|
|
import org.junit.Assert.assertFalse
|
|
import org.junit.Assert.assertTrue
|
|
import org.junit.Rule
|
|
import org.junit.Test
|
|
import org.junit.runner.RunWith
|
|
import kotlin.test.assertEquals
|
|
import kotlin.test.assertNotEquals
|
|
|
|
@SmallTest
|
|
@RunWith(DevSdkIgnoreRunner::class)
|
|
@IgnoreUpTo(Build.VERSION_CODES.Q)
|
|
class CaptivePortalDataTest {
|
|
@Rule @JvmField
|
|
val ignoreRule = DevSdkIgnoreRule()
|
|
|
|
private val data = CaptivePortalData.Builder()
|
|
.setRefreshTime(123L)
|
|
.setUserPortalUrl(Uri.parse("https://portal.example.com/test"))
|
|
.setVenueInfoUrl(Uri.parse("https://venue.example.com/test"))
|
|
.setSessionExtendable(true)
|
|
.setBytesRemaining(456L)
|
|
.setExpiryTime(789L)
|
|
.setCaptive(true)
|
|
.apply {
|
|
if (SdkLevel.isAtLeastS()) {
|
|
setVenueFriendlyName("venue friendly name")
|
|
}
|
|
}
|
|
.build()
|
|
|
|
private val dataFromPasspoint = CaptivePortalData.Builder()
|
|
.setCaptive(true)
|
|
.apply {
|
|
if (SdkLevel.isAtLeastS()) {
|
|
setVenueFriendlyName("venue friendly name")
|
|
setUserPortalUrl(Uri.parse("https://tc.example.com/passpoint"),
|
|
CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_PASSPOINT)
|
|
setVenueInfoUrl(Uri.parse("https://venue.example.com/passpoint"),
|
|
CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_PASSPOINT)
|
|
}
|
|
}
|
|
.build()
|
|
|
|
private fun makeBuilder() = CaptivePortalData.Builder(data)
|
|
|
|
@Test
|
|
fun testParcelUnparcel() {
|
|
assertParcelingIsLossless(data)
|
|
assertParcelingIsLossless(dataFromPasspoint)
|
|
|
|
assertParcelingIsLossless(makeBuilder().setUserPortalUrl(null).build())
|
|
assertParcelingIsLossless(makeBuilder().setVenueInfoUrl(null).build())
|
|
}
|
|
|
|
@Test
|
|
fun testEquals() {
|
|
assertEquals(data, makeBuilder().build())
|
|
|
|
assertNotEqualsAfterChange { it.setRefreshTime(456L) }
|
|
assertNotEqualsAfterChange { it.setUserPortalUrl(Uri.parse("https://example.com/")) }
|
|
assertNotEqualsAfterChange { it.setUserPortalUrl(null) }
|
|
assertNotEqualsAfterChange { it.setVenueInfoUrl(Uri.parse("https://example.com/")) }
|
|
assertNotEqualsAfterChange { it.setVenueInfoUrl(null) }
|
|
assertNotEqualsAfterChange { it.setSessionExtendable(false) }
|
|
assertNotEqualsAfterChange { it.setBytesRemaining(789L) }
|
|
assertNotEqualsAfterChange { it.setExpiryTime(12L) }
|
|
assertNotEqualsAfterChange { it.setCaptive(false) }
|
|
|
|
if (SdkLevel.isAtLeastS()) {
|
|
assertNotEqualsAfterChange { it.setVenueFriendlyName("another friendly name") }
|
|
assertNotEqualsAfterChange { it.setVenueFriendlyName(null) }
|
|
|
|
assertEquals(dataFromPasspoint, CaptivePortalData.Builder(dataFromPasspoint).build())
|
|
assertNotEqualsAfterChange { it.setUserPortalUrl(
|
|
Uri.parse("https://tc.example.com/passpoint")) }
|
|
assertNotEqualsAfterChange { it.setUserPortalUrl(
|
|
Uri.parse("https://tc.example.com/passpoint"),
|
|
CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_OTHER) }
|
|
assertNotEqualsAfterChange { it.setUserPortalUrl(
|
|
Uri.parse("https://tc.example.com/other"),
|
|
CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_PASSPOINT) }
|
|
assertNotEqualsAfterChange { it.setUserPortalUrl(
|
|
Uri.parse("https://tc.example.com/passpoint"),
|
|
CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_OTHER) }
|
|
assertNotEqualsAfterChange { it.setVenueInfoUrl(
|
|
Uri.parse("https://venue.example.com/passpoint")) }
|
|
assertNotEqualsAfterChange { it.setVenueInfoUrl(
|
|
Uri.parse("https://venue.example.com/other"),
|
|
CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_PASSPOINT) }
|
|
assertNotEqualsAfterChange { it.setVenueInfoUrl(
|
|
Uri.parse("https://venue.example.com/passpoint"),
|
|
CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_OTHER) }
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun testUserPortalUrl() {
|
|
assertEquals(Uri.parse("https://portal.example.com/test"), data.userPortalUrl)
|
|
}
|
|
|
|
@Test
|
|
fun testVenueInfoUrl() {
|
|
assertEquals(Uri.parse("https://venue.example.com/test"), data.venueInfoUrl)
|
|
}
|
|
|
|
@Test
|
|
fun testIsSessionExtendable() {
|
|
assertTrue(data.isSessionExtendable)
|
|
}
|
|
|
|
@Test
|
|
fun testByteLimit() {
|
|
assertEquals(456L, data.byteLimit)
|
|
// Test byteLimit unset.
|
|
assertEquals(-1L, CaptivePortalData.Builder(null).build().byteLimit)
|
|
}
|
|
|
|
@Test
|
|
fun testRefreshTimeMillis() {
|
|
assertEquals(123L, data.refreshTimeMillis)
|
|
}
|
|
|
|
@Test
|
|
fun testExpiryTimeMillis() {
|
|
assertEquals(789L, data.expiryTimeMillis)
|
|
// Test expiryTimeMillis unset.
|
|
assertEquals(-1L, CaptivePortalData.Builder(null).build().expiryTimeMillis)
|
|
}
|
|
|
|
@Test
|
|
fun testIsCaptive() {
|
|
assertTrue(data.isCaptive)
|
|
assertFalse(makeBuilder().setCaptive(false).build().isCaptive)
|
|
}
|
|
|
|
@Test @IgnoreUpTo(Build.VERSION_CODES.R)
|
|
fun testVenueFriendlyName() {
|
|
assertEquals("venue friendly name", data.venueFriendlyName)
|
|
}
|
|
|
|
@Test @IgnoreUpTo(Build.VERSION_CODES.R)
|
|
fun testGetVenueInfoUrlSource() {
|
|
assertEquals(CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_OTHER,
|
|
data.venueInfoUrlSource)
|
|
assertEquals(CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_PASSPOINT,
|
|
dataFromPasspoint.venueInfoUrlSource)
|
|
}
|
|
|
|
@Test @IgnoreUpTo(Build.VERSION_CODES.R)
|
|
fun testGetUserPortalUrlSource() {
|
|
assertEquals(CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_OTHER,
|
|
data.userPortalUrlSource)
|
|
assertEquals(CaptivePortalData.CAPTIVE_PORTAL_DATA_SOURCE_PASSPOINT,
|
|
dataFromPasspoint.userPortalUrlSource)
|
|
}
|
|
|
|
private fun CaptivePortalData.mutate(mutator: (CaptivePortalData.Builder) -> Unit) =
|
|
CaptivePortalData.Builder(this).apply { mutator(this) }.build()
|
|
|
|
private fun assertNotEqualsAfterChange(mutator: (CaptivePortalData.Builder) -> Unit) {
|
|
assertNotEquals(data, data.mutate(mutator))
|
|
}
|
|
} |