Merge "Remove tests that are duplicated in CTS." into udc-dev

This commit is contained in:
Andrew Sapperstein
2023-04-26 22:04:41 +00:00
committed by Android (Google) Code Review
8 changed files with 1 additions and 1411 deletions

View File

@@ -185,6 +185,7 @@ public final class NetworkProviderInfo implements Parcelable {
*/
@NonNull
public Builder setExtras(@NonNull Bundle extras) {
Objects.requireNonNull(extras);
mExtras = extras;
return this;
}

View File

@@ -1,139 +0,0 @@
/*
* Copyright (C) 2023 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.wifi.sharedconnectivity.app;
import static android.net.wifi.WifiInfo.SECURITY_TYPE_EAP;
import static android.net.wifi.WifiInfo.SECURITY_TYPE_WEP;
import static android.net.wifi.sharedconnectivity.app.HotspotNetwork.NETWORK_TYPE_CELLULAR;
import static android.net.wifi.sharedconnectivity.app.HotspotNetworkConnectionStatus.CONNECTION_STATUS_ENABLING_HOTSPOT;
import static android.net.wifi.sharedconnectivity.app.HotspotNetworkConnectionStatus.CONNECTION_STATUS_TETHERING_TIMEOUT;
import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE_TYPE_TABLET;
import static com.google.common.truth.Truth.assertThat;
import android.os.Bundle;
import android.os.Parcel;
import androidx.test.filters.SmallTest;
import org.junit.Test;
import java.util.Arrays;
/**
* Unit tests for {@link HotspotNetworkConnectionStatus}.
*/
@SmallTest
public class HotspotNetworkConnectionStatusTest {
private static final long DEVICE_ID = 11L;
private static final NetworkProviderInfo NETWORK_PROVIDER_INFO =
new NetworkProviderInfo.Builder("TEST_NAME", "TEST_MODEL")
.setDeviceType(DEVICE_TYPE_TABLET).setConnectionStrength(2)
.setBatteryPercentage(50).build();
private static final int NETWORK_TYPE = NETWORK_TYPE_CELLULAR;
private static final String NETWORK_NAME = "TEST_NETWORK";
private static final String HOTSPOT_SSID = "TEST_SSID";
private static final String HOTSPOT_BSSID = "TEST _BSSID";
private static final int[] HOTSPOT_SECURITY_TYPES = {SECURITY_TYPE_WEP, SECURITY_TYPE_EAP};
private static final long DEVICE_ID_1 = 111L;
private static final String BUNDLE_KEY = "INT-KEY";
private static final int BUNDLE_VALUE = 1;
/**
* Verifies parcel serialization/deserialization.
*/
@Test
public void testParcelOperation() {
HotspotNetworkConnectionStatus status = buildConnectionStatusBuilder().build();
Parcel parcelW = Parcel.obtain();
status.writeToParcel(parcelW, 0);
byte[] bytes = parcelW.marshall();
parcelW.recycle();
Parcel parcelR = Parcel.obtain();
parcelR.unmarshall(bytes, 0, bytes.length);
parcelR.setDataPosition(0);
HotspotNetworkConnectionStatus fromParcel =
HotspotNetworkConnectionStatus.CREATOR.createFromParcel(parcelR);
assertThat(fromParcel).isEqualTo(status);
assertThat(fromParcel.hashCode()).isEqualTo(status.hashCode());
}
/**
* Verifies the Equals operation
*/
@Test
public void testEqualsOperation() {
HotspotNetworkConnectionStatus status1 = buildConnectionStatusBuilder().build();
HotspotNetworkConnectionStatus status2 = buildConnectionStatusBuilder().build();
assertThat(status1).isEqualTo(status2);
HotspotNetworkConnectionStatus.Builder builder = buildConnectionStatusBuilder()
.setStatus(CONNECTION_STATUS_TETHERING_TIMEOUT);
assertThat(builder.build()).isNotEqualTo(status1);
builder = buildConnectionStatusBuilder()
.setHotspotNetwork(buildHotspotNetworkBuilder().setDeviceId(DEVICE_ID_1).build());
assertThat(builder.build()).isNotEqualTo(status1);
}
/**
* Verifies the get methods return the expected data.
*/
@Test
public void testGetMethods() {
HotspotNetworkConnectionStatus status = buildConnectionStatusBuilder().build();
assertThat(status.getStatus()).isEqualTo(CONNECTION_STATUS_ENABLING_HOTSPOT);
assertThat(status.getHotspotNetwork()).isEqualTo(buildHotspotNetworkBuilder().build());
assertThat(status.getExtras().getInt(BUNDLE_KEY)).isEqualTo(BUNDLE_VALUE);
}
@Test
public void testHashCode() {
HotspotNetworkConnectionStatus status1 = buildConnectionStatusBuilder().build();
HotspotNetworkConnectionStatus status2 = buildConnectionStatusBuilder().build();
assertThat(status1.hashCode()).isEqualTo(status2.hashCode());
}
private HotspotNetworkConnectionStatus.Builder buildConnectionStatusBuilder() {
return new HotspotNetworkConnectionStatus.Builder()
.setStatus(CONNECTION_STATUS_ENABLING_HOTSPOT)
.setHotspotNetwork(buildHotspotNetworkBuilder().build())
.setExtras(buildBundle());
}
private Bundle buildBundle() {
Bundle bundle = new Bundle();
bundle.putInt(BUNDLE_KEY, BUNDLE_VALUE);
return bundle;
}
private HotspotNetwork.Builder buildHotspotNetworkBuilder() {
HotspotNetwork.Builder builder = new HotspotNetwork.Builder()
.setDeviceId(DEVICE_ID)
.setNetworkProviderInfo(NETWORK_PROVIDER_INFO)
.setHostNetworkType(NETWORK_TYPE)
.setNetworkName(NETWORK_NAME)
.setHotspotSsid(HOTSPOT_SSID)
.setHotspotBssid(HOTSPOT_BSSID);
Arrays.stream(HOTSPOT_SECURITY_TYPES).forEach(builder::addHotspotSecurityType);
return builder;
}
}

View File

@@ -1,182 +0,0 @@
/*
* Copyright (C) 2023 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.wifi.sharedconnectivity.app;
import static android.net.wifi.WifiInfo.SECURITY_TYPE_EAP;
import static android.net.wifi.WifiInfo.SECURITY_TYPE_PSK;
import static android.net.wifi.WifiInfo.SECURITY_TYPE_WEP;
import static android.net.wifi.sharedconnectivity.app.HotspotNetwork.NETWORK_TYPE_CELLULAR;
import static android.net.wifi.sharedconnectivity.app.HotspotNetwork.NETWORK_TYPE_WIFI;
import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE_TYPE_PHONE;
import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE_TYPE_TABLET;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertThrows;
import android.os.Bundle;
import android.os.Parcel;
import android.util.ArraySet;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.Arrays;
/**
* Unit tests for {@link HotspotNetwork}.
*/
@SmallTest
@RunWith(AndroidJUnit4.class)
public class HotspotNetworkTest {
private static final long DEVICE_ID = 11L;
private static final NetworkProviderInfo NETWORK_PROVIDER_INFO =
new NetworkProviderInfo.Builder("TEST_NAME", "TEST_MODEL")
.setDeviceType(DEVICE_TYPE_TABLET).setConnectionStrength(2)
.setBatteryPercentage(50).build();
private static final int NETWORK_TYPE = NETWORK_TYPE_CELLULAR;
private static final String NETWORK_NAME = "TEST_NETWORK";
private static final String HOTSPOT_SSID = "TEST_SSID";
private static final String HOTSPOT_BSSID = "TEST _BSSID";
private static final int[] HOTSPOT_SECURITY_TYPES = {SECURITY_TYPE_WEP, SECURITY_TYPE_EAP};
private static final String BUNDLE_KEY = "INT-KEY";
private static final int BUNDLE_VALUE = 1;
private static final long DEVICE_ID_1 = 111L;
private static final NetworkProviderInfo NETWORK_PROVIDER_INFO1 =
new NetworkProviderInfo.Builder("TEST_NAME", "TEST_MODEL")
.setDeviceType(DEVICE_TYPE_PHONE).setConnectionStrength(2)
.setBatteryPercentage(50).build();
private static final int NETWORK_TYPE_1 = NETWORK_TYPE_WIFI;
private static final String NETWORK_NAME_1 = "TEST_NETWORK1";
private static final String HOTSPOT_SSID_1 = "TEST_SSID1";
private static final String HOTSPOT_BSSID_1 = "TEST _BSSID1";
private static final int[] HOTSPOT_SECURITY_TYPES_1 = {SECURITY_TYPE_PSK, SECURITY_TYPE_EAP};
/**
* Verifies parcel serialization/deserialization.
*/
@Test
public void testParcelOperation() {
HotspotNetwork network = buildHotspotNetworkBuilder(true).build();
Parcel parcelW = Parcel.obtain();
network.writeToParcel(parcelW, 0);
byte[] bytes = parcelW.marshall();
parcelW.recycle();
Parcel parcelR = Parcel.obtain();
parcelR.unmarshall(bytes, 0, bytes.length);
parcelR.setDataPosition(0);
HotspotNetwork fromParcel = HotspotNetwork.CREATOR.createFromParcel(parcelR);
assertThat(fromParcel).isEqualTo(network);
assertThat(fromParcel.hashCode()).isEqualTo(network.hashCode());
}
/**
* Verifies the Equals operation
*/
@Test
public void testEqualsOperation() {
HotspotNetwork network1 = buildHotspotNetworkBuilder(true).build();
HotspotNetwork network2 = buildHotspotNetworkBuilder(true).build();
assertThat(network1).isEqualTo(network2);
HotspotNetwork.Builder builder = buildHotspotNetworkBuilder(true).setDeviceId(DEVICE_ID_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder(true).setNetworkProviderInfo(NETWORK_PROVIDER_INFO1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder(true).setHostNetworkType(NETWORK_TYPE_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder(true).setNetworkName(NETWORK_NAME_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder(true).setHotspotSsid(HOTSPOT_SSID_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder(true).setHotspotBssid(HOTSPOT_BSSID_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder(true);
HotspotNetwork.Builder builder1 = buildHotspotNetworkBuilder(true);
Arrays.stream(HOTSPOT_SECURITY_TYPES_1).forEach(builder1::addHotspotSecurityType);
assertThat(builder1.build()).isNotEqualTo(builder.build());
}
/**
* Verifies the get methods return the expected data.
*/
@Test
public void testGetMethods() {
HotspotNetwork network = buildHotspotNetworkBuilder(true).build();
ArraySet<Integer> securityTypes = new ArraySet<>();
Arrays.stream(HOTSPOT_SECURITY_TYPES).forEach(securityTypes::add);
assertThat(network.getDeviceId()).isEqualTo(DEVICE_ID);
assertThat(network.getNetworkProviderInfo()).isEqualTo(NETWORK_PROVIDER_INFO);
assertThat(network.getHostNetworkType()).isEqualTo(NETWORK_TYPE);
assertThat(network.getNetworkName()).isEqualTo(NETWORK_NAME);
assertThat(network.getHotspotSsid()).isEqualTo(HOTSPOT_SSID);
assertThat(network.getHotspotBssid()).isEqualTo(HOTSPOT_BSSID);
assertThat(network.getHotspotSecurityTypes()).containsExactlyElementsIn(securityTypes);
assertThat(network.getExtras().getInt(BUNDLE_KEY)).isEqualTo(BUNDLE_VALUE);
}
@Test
public void testHashCode() {
HotspotNetwork network1 = buildHotspotNetworkBuilder(true).build();
HotspotNetwork network2 = buildHotspotNetworkBuilder(true).build();
assertThat(network1.hashCode()).isEqualTo(network2.hashCode());
}
@Test
public void networkProviderInfoNotSet_shouldThrowException() {
Exception e = assertThrows(IllegalArgumentException.class,
() -> buildHotspotNetworkBuilder(false).build());
assertThat(e.getMessage()).contains("NetworkProviderInfo");
}
private HotspotNetwork.Builder buildHotspotNetworkBuilder(boolean withNetworkProviderInfo) {
HotspotNetwork.Builder builder = new HotspotNetwork.Builder()
.setDeviceId(DEVICE_ID)
.setHostNetworkType(NETWORK_TYPE)
.setNetworkName(NETWORK_NAME)
.setHotspotSsid(HOTSPOT_SSID)
.setHotspotBssid(HOTSPOT_BSSID)
.setExtras(buildBundle());
Arrays.stream(HOTSPOT_SECURITY_TYPES).forEach(builder::addHotspotSecurityType);
if (withNetworkProviderInfo) {
builder.setNetworkProviderInfo(NETWORK_PROVIDER_INFO);
}
return builder;
}
private Bundle buildBundle() {
Bundle bundle = new Bundle();
bundle.putInt(BUNDLE_KEY, BUNDLE_VALUE);
return bundle;
}
}

View File

@@ -1,131 +0,0 @@
/*
* Copyright (C) 2023 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.wifi.sharedconnectivity.app;
import static android.net.wifi.WifiInfo.SECURITY_TYPE_WEP;
import static android.net.wifi.sharedconnectivity.app.KnownNetwork.NETWORK_SOURCE_NEARBY_SELF;
import static android.net.wifi.sharedconnectivity.app.KnownNetworkConnectionStatus.CONNECTION_STATUS_SAVED;
import static android.net.wifi.sharedconnectivity.app.KnownNetworkConnectionStatus.CONNECTION_STATUS_SAVE_FAILED;
import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE_TYPE_TABLET;
import static com.google.common.truth.Truth.assertThat;
import android.os.Bundle;
import android.os.Parcel;
import androidx.test.filters.SmallTest;
import org.junit.Test;
import java.util.Arrays;
/**
* Unit tests for {@link KnownNetworkConnectionStatus}.
*/
@SmallTest
public class KnownNetworkConnectionStatusTest {
private static final int NETWORK_SOURCE = NETWORK_SOURCE_NEARBY_SELF;
private static final String SSID = "TEST_SSID";
private static final int[] SECURITY_TYPES = {SECURITY_TYPE_WEP};
private static final NetworkProviderInfo NETWORK_PROVIDER_INFO =
new NetworkProviderInfo.Builder("TEST_NAME", "TEST_MODEL")
.setDeviceType(DEVICE_TYPE_TABLET).setConnectionStrength(2)
.setBatteryPercentage(50).build();
private static final String SSID_1 = "TEST_SSID1";
private static final String BUNDLE_KEY = "INT-KEY";
private static final int BUNDLE_VALUE = 1;
/**
* Verifies parcel serialization/deserialization.
*/
@Test
public void testParcelOperation() {
KnownNetworkConnectionStatus status = buildConnectionStatusBuilder().build();
Parcel parcelW = Parcel.obtain();
status.writeToParcel(parcelW, 0);
byte[] bytes = parcelW.marshall();
parcelW.recycle();
Parcel parcelR = Parcel.obtain();
parcelR.unmarshall(bytes, 0, bytes.length);
parcelR.setDataPosition(0);
KnownNetworkConnectionStatus fromParcel =
KnownNetworkConnectionStatus.CREATOR.createFromParcel(parcelR);
assertThat(fromParcel).isEqualTo(status);
assertThat(fromParcel.hashCode()).isEqualTo(status.hashCode());
}
/**
* Verifies the Equals operation
*/
@Test
public void testEqualsOperation() {
KnownNetworkConnectionStatus status1 = buildConnectionStatusBuilder().build();
KnownNetworkConnectionStatus status2 = buildConnectionStatusBuilder().build();
assertThat(status1).isEqualTo(status2);
KnownNetworkConnectionStatus.Builder builder = buildConnectionStatusBuilder()
.setStatus(CONNECTION_STATUS_SAVE_FAILED);
assertThat(builder.build()).isNotEqualTo(status1);
builder = buildConnectionStatusBuilder()
.setKnownNetwork(buildKnownNetworkBuilder().setSsid(SSID_1).build());
assertThat(builder.build()).isNotEqualTo(status1);
}
/**
* Verifies the get methods return the expected data.
*/
@Test
public void testGetMethods() {
KnownNetworkConnectionStatus status = buildConnectionStatusBuilder().build();
assertThat(status.getStatus()).isEqualTo(CONNECTION_STATUS_SAVED);
assertThat(status.getKnownNetwork()).isEqualTo(buildKnownNetworkBuilder().build());
assertThat(status.getExtras().getInt(BUNDLE_KEY)).isEqualTo(BUNDLE_VALUE);
}
@Test
public void testHashCode() {
KnownNetworkConnectionStatus status1 = buildConnectionStatusBuilder().build();
KnownNetworkConnectionStatus status2 = buildConnectionStatusBuilder().build();
assertThat(status1.hashCode()).isEqualTo(status2.hashCode());
}
private KnownNetworkConnectionStatus.Builder buildConnectionStatusBuilder() {
return new KnownNetworkConnectionStatus.Builder()
.setStatus(CONNECTION_STATUS_SAVED)
.setKnownNetwork(buildKnownNetworkBuilder().build())
.setExtras(buildBundle());
}
private Bundle buildBundle() {
Bundle bundle = new Bundle();
bundle.putInt(BUNDLE_KEY, BUNDLE_VALUE);
return bundle;
}
private KnownNetwork.Builder buildKnownNetworkBuilder() {
KnownNetwork.Builder builder = new KnownNetwork.Builder().setNetworkSource(NETWORK_SOURCE)
.setSsid(SSID).setNetworkProviderInfo(NETWORK_PROVIDER_INFO);
Arrays.stream(SECURITY_TYPES).forEach(builder::addSecurityType);
return builder;
}
}

View File

@@ -1,144 +0,0 @@
/*
* Copyright (C) 2023 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.wifi.sharedconnectivity.app;
import static android.net.wifi.WifiInfo.SECURITY_TYPE_PSK;
import static android.net.wifi.WifiInfo.SECURITY_TYPE_WEP;
import static android.net.wifi.sharedconnectivity.app.KnownNetwork.NETWORK_SOURCE_CLOUD_SELF;
import static android.net.wifi.sharedconnectivity.app.KnownNetwork.NETWORK_SOURCE_NEARBY_SELF;
import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE_TYPE_PHONE;
import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE_TYPE_TABLET;
import static com.google.common.truth.Truth.assertThat;
import android.os.Bundle;
import android.os.Parcel;
import android.util.ArraySet;
import androidx.test.filters.SmallTest;
import org.junit.Test;
import java.util.Arrays;
/**
* Unit tests for {@link KnownNetwork}.
*/
@SmallTest
public class KnownNetworkTest {
private static final int NETWORK_SOURCE = NETWORK_SOURCE_NEARBY_SELF;
private static final String SSID = "TEST_SSID";
private static final int[] SECURITY_TYPES = {SECURITY_TYPE_WEP};
private static final NetworkProviderInfo NETWORK_PROVIDER_INFO =
new NetworkProviderInfo.Builder("TEST_NAME", "TEST_MODEL")
.setDeviceType(DEVICE_TYPE_TABLET).setConnectionStrength(2)
.setBatteryPercentage(50).build();
private static final String BUNDLE_KEY = "INT-KEY";
private static final int BUNDLE_VALUE = 1;
private static final int NETWORK_SOURCE_1 = NETWORK_SOURCE_CLOUD_SELF;
private static final String SSID_1 = "TEST_SSID1";
private static final int[] SECURITY_TYPES_1 = {SECURITY_TYPE_PSK};
private static final NetworkProviderInfo NETWORK_PROVIDER_INFO1 =
new NetworkProviderInfo.Builder("TEST_NAME_1", "TEST_MODEL_1")
.setDeviceType(DEVICE_TYPE_PHONE).setConnectionStrength(3)
.setBatteryPercentage(33).build();
/**
* Verifies parcel serialization/deserialization.
*/
@Test
public void testParcelOperation() {
KnownNetwork network = buildKnownNetworkBuilder().build();
Parcel parcelW = Parcel.obtain();
network.writeToParcel(parcelW, 0);
byte[] bytes = parcelW.marshall();
parcelW.recycle();
Parcel parcelR = Parcel.obtain();
parcelR.unmarshall(bytes, 0, bytes.length);
parcelR.setDataPosition(0);
KnownNetwork fromParcel = KnownNetwork.CREATOR.createFromParcel(parcelR);
assertThat(fromParcel).isEqualTo(network);
assertThat(fromParcel.hashCode()).isEqualTo(network.hashCode());
}
/**
* Verifies the Equals operation
*/
@Test
public void testEqualsOperation() {
KnownNetwork network1 = buildKnownNetworkBuilder().build();
KnownNetwork network2 = buildKnownNetworkBuilder().build();
assertThat(network1).isEqualTo(network2);
KnownNetwork.Builder builder = buildKnownNetworkBuilder()
.setNetworkSource(NETWORK_SOURCE_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildKnownNetworkBuilder().setSsid(SSID_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildKnownNetworkBuilder();
Arrays.stream(SECURITY_TYPES_1).forEach(builder::addSecurityType);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildKnownNetworkBuilder().setNetworkProviderInfo(NETWORK_PROVIDER_INFO1);
assertThat(builder.build()).isNotEqualTo(network1);
}
/**
* Verifies the get methods return the expected data.
*/
@Test
public void testGetMethods() {
KnownNetwork network = buildKnownNetworkBuilder().build();
ArraySet<Integer> securityTypes = new ArraySet<>();
Arrays.stream(SECURITY_TYPES).forEach(securityTypes::add);
assertThat(network.getNetworkSource()).isEqualTo(NETWORK_SOURCE);
assertThat(network.getSsid()).isEqualTo(SSID);
assertThat(network.getSecurityTypes()).containsExactlyElementsIn(securityTypes);
assertThat(network.getNetworkProviderInfo()).isEqualTo(NETWORK_PROVIDER_INFO);
assertThat(network.getExtras().getInt(BUNDLE_KEY)).isEqualTo(BUNDLE_VALUE);
}
@Test
public void testHashCode() {
KnownNetwork network1 = buildKnownNetworkBuilder().build();
KnownNetwork network2 = buildKnownNetworkBuilder().build();
assertThat(network1.hashCode()).isEqualTo(network2.hashCode());
}
private KnownNetwork.Builder buildKnownNetworkBuilder() {
KnownNetwork.Builder builder = new KnownNetwork.Builder().setNetworkSource(NETWORK_SOURCE)
.setSsid(SSID).setNetworkProviderInfo(NETWORK_PROVIDER_INFO)
.setExtras(buildBundle());
Arrays.stream(SECURITY_TYPES).forEach(builder::addSecurityType);
return builder;
}
private Bundle buildBundle() {
Bundle bundle = new Bundle();
bundle.putInt(BUNDLE_KEY, BUNDLE_VALUE);
return bundle;
}
}

View File

@@ -1,134 +0,0 @@
/*
* Copyright (C) 2023 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.wifi.sharedconnectivity.app;
import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE_TYPE_LAPTOP;
import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE_TYPE_PHONE;
import static com.google.common.truth.Truth.assertThat;
import android.os.Bundle;
import android.os.Parcel;
import androidx.test.filters.SmallTest;
import org.junit.Test;
/**
* Unit tests for {@link NetworkProviderInfo}.
*/
@SmallTest
public class NetworkProviderInfoTest {
private static final int DEVICE_TYPE = DEVICE_TYPE_PHONE;
private static final String DEVICE_NAME = "TEST_NAME";
private static final String DEVICE_MODEL = "TEST_MODEL";
private static final int BATTERY_PERCENTAGE = 50;
private static final int CONNECTION_STRENGTH = 2;
private static final String BUNDLE_KEY = "INT-KEY";
private static final int BUNDLE_VALUE = 1;
private static final int DEVICE_TYPE_1 = DEVICE_TYPE_LAPTOP;
private static final String DEVICE_NAME_1 = "TEST_NAME1";
private static final String DEVICE_MODEL_1 = "TEST_MODEL1";
private static final int BATTERY_PERCENTAGE_1 = 30;
private static final int CONNECTION_STRENGTH_1 = 1;
/**
* Verifies parcel serialization/deserialization.
*/
@Test
public void testParcelOperation() {
NetworkProviderInfo info = buildNetworkProviderInfoBuilder().build();
Parcel parcelW = Parcel.obtain();
info.writeToParcel(parcelW, 0);
byte[] bytes = parcelW.marshall();
parcelW.recycle();
Parcel parcelR = Parcel.obtain();
parcelR.unmarshall(bytes, 0, bytes.length);
parcelR.setDataPosition(0);
NetworkProviderInfo fromParcel = NetworkProviderInfo.CREATOR.createFromParcel(parcelR);
assertThat(fromParcel).isEqualTo(info);
assertThat(fromParcel.hashCode()).isEqualTo(info.hashCode());
}
/**
* Verifies the Equals operation
*/
@Test
public void testEqualsOperation() {
NetworkProviderInfo info1 = buildNetworkProviderInfoBuilder().build();
NetworkProviderInfo info2 = buildNetworkProviderInfoBuilder().build();
assertThat(info1).isEqualTo(info2);
NetworkProviderInfo.Builder builder = buildNetworkProviderInfoBuilder().setDeviceType(
DEVICE_TYPE_1);
assertThat(builder.build()).isNotEqualTo(info1);
builder = buildNetworkProviderInfoBuilder().setDeviceName(DEVICE_NAME_1);
assertThat(builder.build()).isNotEqualTo(info1);
builder = buildNetworkProviderInfoBuilder().setModelName(DEVICE_MODEL_1);
assertThat(builder.build()).isNotEqualTo(info1);
builder = buildNetworkProviderInfoBuilder()
.setBatteryPercentage(BATTERY_PERCENTAGE_1);
assertThat(builder.build()).isNotEqualTo(info1);
builder = buildNetworkProviderInfoBuilder()
.setConnectionStrength(CONNECTION_STRENGTH_1);
assertThat(builder.build()).isNotEqualTo(info1);
}
/**
* Verifies the get methods return the expected data.
*/
@Test
public void testGetMethods() {
NetworkProviderInfo info = buildNetworkProviderInfoBuilder().build();
assertThat(info.getDeviceType()).isEqualTo(DEVICE_TYPE);
assertThat(info.getDeviceName()).isEqualTo(DEVICE_NAME);
assertThat(info.getModelName()).isEqualTo(DEVICE_MODEL);
assertThat(info.getBatteryPercentage()).isEqualTo(BATTERY_PERCENTAGE);
assertThat(info.getConnectionStrength()).isEqualTo(CONNECTION_STRENGTH);
assertThat(info.getExtras().getInt(BUNDLE_KEY)).isEqualTo(BUNDLE_VALUE);
}
@Test
public void testHashCode() {
NetworkProviderInfo info1 = buildNetworkProviderInfoBuilder().build();
NetworkProviderInfo info2 = buildNetworkProviderInfoBuilder().build();
assertThat(info1.hashCode()).isEqualTo(info2.hashCode());
}
private NetworkProviderInfo.Builder buildNetworkProviderInfoBuilder() {
return new NetworkProviderInfo.Builder(DEVICE_NAME, DEVICE_MODEL).setDeviceType(DEVICE_TYPE)
.setBatteryPercentage(BATTERY_PERCENTAGE)
.setConnectionStrength(CONNECTION_STRENGTH)
.setExtras(buildBundle());
}
private Bundle buildBundle() {
Bundle bundle = new Bundle();
bundle.putInt(BUNDLE_KEY, BUNDLE_VALUE);
return bundle;
}
}

View File

@@ -1,566 +0,0 @@
/*
* Copyright (C) 2023 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.wifi.sharedconnectivity.app;
import static android.net.wifi.WifiInfo.SECURITY_TYPE_EAP;
import static android.net.wifi.WifiInfo.SECURITY_TYPE_WEP;
import static android.net.wifi.sharedconnectivity.app.HotspotNetwork.NETWORK_TYPE_CELLULAR;
import static android.net.wifi.sharedconnectivity.app.KnownNetwork.NETWORK_SOURCE_NEARBY_SELF;
import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE_TYPE_TABLET;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.res.Resources;
import android.net.wifi.sharedconnectivity.service.ISharedConnectivityService;
import android.os.Bundle;
import android.os.RemoteException;
import androidx.test.filters.SmallTest;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Executor;
/**
* Unit tests for {@link SharedConnectivityManager}.
*/
@SmallTest
public class SharedConnectivityManagerTest {
private static final long DEVICE_ID = 11L;
private static final NetworkProviderInfo NETWORK_PROVIDER_INFO =
new NetworkProviderInfo.Builder("TEST_NAME", "TEST_MODEL")
.setDeviceType(DEVICE_TYPE_TABLET).setConnectionStrength(2)
.setBatteryPercentage(50).build();
private static final int NETWORK_TYPE = NETWORK_TYPE_CELLULAR;
private static final String NETWORK_NAME = "TEST_NETWORK";
private static final String HOTSPOT_SSID = "TEST_SSID";
private static final int[] HOTSPOT_SECURITY_TYPES = {SECURITY_TYPE_WEP, SECURITY_TYPE_EAP};
private static final int NETWORK_SOURCE = NETWORK_SOURCE_NEARBY_SELF;
private static final String SSID = "TEST_SSID";
private static final int[] SECURITY_TYPES = {SECURITY_TYPE_WEP};
private static final String SERVICE_PACKAGE_NAME = "TEST_PACKAGE";
private static final String SERVICE_INTENT_ACTION = "TEST_INTENT_ACTION";
@Mock
Context mContext;
@Mock
ISharedConnectivityService mService;
@Mock
Executor mExecutor;
@Mock
SharedConnectivityClientCallback mClientCallback, mClientCallback2;
@Mock
Resources mResources;
@Mock
ISharedConnectivityService.Stub mIBinder;
private static final ComponentName COMPONENT_NAME =
new ComponentName("dummypkg", "dummycls");
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
setResources(mContext);
}
@Test
public void resourcesNotDefined_createShouldReturnNull() {
when(mResources.getString(anyInt())).thenThrow(new Resources.NotFoundException());
assertThat(SharedConnectivityManager.create(mContext)).isNull();
}
@Test
public void resourceStringsAreEmpty_createShouldReturnNull() {
when(mResources.getString(anyInt())).thenReturn("");
assertThat(SharedConnectivityManager.create(mContext)).isNull();
}
@Test
public void bindingToServiceOnFirstCallbackRegistration() {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.registerCallback(mExecutor, mClientCallback);
verify(mContext).bindService(any(Intent.class), any(ServiceConnection.class), anyInt());
}
@Test
public void bindIsCalledOnceOnMultipleCallbackRegistrations() throws Exception {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.registerCallback(mExecutor, mClientCallback);
verify(mContext, times(1)).bindService(any(Intent.class), any(ServiceConnection.class),
anyInt());
manager.registerCallback(mExecutor, mClientCallback2);
verify(mContext, times(1)).bindService(any(Intent.class), any(ServiceConnection.class),
anyInt());
}
@Test
public void unbindIsCalledOnLastCallbackUnregistrations() throws Exception {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.registerCallback(mExecutor, mClientCallback);
manager.registerCallback(mExecutor, mClientCallback2);
manager.unregisterCallback(mClientCallback);
verify(mContext, never()).unbindService(
any(ServiceConnection.class));
manager.unregisterCallback(mClientCallback2);
verify(mContext, times(1)).unbindService(
any(ServiceConnection.class));
}
@Test
public void registerCallback_serviceNotConnected_canUnregisterAndReregister() {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.registerCallback(mExecutor, mClientCallback);
manager.unregisterCallback(mClientCallback);
manager.registerCallback(mExecutor, mClientCallback);
verify(mClientCallback, never()).onRegisterCallbackFailed(any(Exception.class));
}
@Test
public void registerCallback_serviceConnected() throws Exception {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
manager.registerCallback(mExecutor, mClientCallback);
verify(mService).registerCallback(any());
verify(mClientCallback, never()).onRegisterCallbackFailed(any(Exception.class));
}
@Test
public void registerCallback_doubleRegistration_shouldFail() throws Exception {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
manager.registerCallback(mExecutor, mClientCallback);
manager.registerCallback(mExecutor, mClientCallback);
verify(mClientCallback).onRegisterCallbackFailed(any(IllegalStateException.class));
}
@Test
public void registerCallback_remoteException_shouldFail() throws Exception {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).registerCallback(any());
manager.registerCallback(mExecutor, mClientCallback);
verify(mClientCallback).onRegisterCallbackFailed(any(RemoteException.class));
}
@Test
public void unregisterCallback_withoutRegisteringFirst_serviceNotConnected_shouldFail() {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
assertThat(manager.unregisterCallback(mClientCallback)).isFalse();
}
@Test
public void unregisterCallback_withoutRegisteringFirst_serviceConnected_shouldFail() {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
assertThat(manager.unregisterCallback(mClientCallback)).isFalse();
}
@Test
public void unregisterCallback() throws Exception {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
manager.registerCallback(mExecutor, mClientCallback);
assertThat(manager.unregisterCallback(mClientCallback)).isTrue();
verify(mService).unregisterCallback(any());
}
@Test
public void unregisterCallback_doubleUnregistration_serviceConnected_shouldFail() {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
manager.registerCallback(mExecutor, mClientCallback);
manager.unregisterCallback(mClientCallback);
assertThat(manager.unregisterCallback(mClientCallback)).isFalse();
}
@Test
public void unregisterCallback_doubleUnregistration_serviceNotConnected_shouldFail() {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
manager.registerCallback(mExecutor, mClientCallback);
manager.unregisterCallback(mClientCallback);
assertThat(manager.unregisterCallback(mClientCallback)).isFalse();
}
@Test
public void unregisterCallback_remoteException_shouldFail() throws Exception {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).unregisterCallback(any());
assertThat(manager.unregisterCallback(mClientCallback)).isFalse();
}
@Test
public void onServiceConnected() {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.registerCallback(mExecutor, mClientCallback);
manager.getServiceConnection().onServiceConnected(COMPONENT_NAME, mIBinder);
verify(mClientCallback).onServiceConnected();
}
@Test
public void onServiceDisconnected() {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.registerCallback(mExecutor, mClientCallback);
manager.getServiceConnection().onServiceConnected(COMPONENT_NAME, mIBinder);
manager.getServiceConnection().onServiceDisconnected(COMPONENT_NAME);
verify(mClientCallback).onServiceDisconnected();
}
@Test
public void connectHotspotNetwork_serviceNotConnected_shouldFail() {
HotspotNetwork network = buildHotspotNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
assertThat(manager.connectHotspotNetwork(network)).isFalse();
}
@Test
public void connectHotspotNetwork() throws RemoteException {
HotspotNetwork network = buildHotspotNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
manager.connectHotspotNetwork(network);
verify(mService).connectHotspotNetwork(network);
}
@Test
public void connectHotspotNetwork_remoteException_shouldFail() throws RemoteException {
HotspotNetwork network = buildHotspotNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).connectHotspotNetwork(network);
assertThat(manager.connectHotspotNetwork(network)).isFalse();
}
@Test
public void disconnectHotspotNetwork_serviceNotConnected_shouldFail() {
HotspotNetwork network = buildHotspotNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
assertThat(manager.disconnectHotspotNetwork(network)).isFalse();
}
@Test
public void disconnectHotspotNetwork() throws RemoteException {
HotspotNetwork network = buildHotspotNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
manager.disconnectHotspotNetwork(network);
verify(mService).disconnectHotspotNetwork(network);
}
@Test
public void disconnectHotspotNetwork_remoteException_shouldFail() throws RemoteException {
HotspotNetwork network = buildHotspotNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).disconnectHotspotNetwork(any());
assertThat(manager.disconnectHotspotNetwork(network)).isFalse();
}
@Test
public void connectKnownNetwork_serviceNotConnected_shouldFail() throws RemoteException {
KnownNetwork network = buildKnownNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
assertThat(manager.connectKnownNetwork(network)).isFalse();
}
@Test
public void connectKnownNetwork() throws RemoteException {
KnownNetwork network = buildKnownNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
manager.connectKnownNetwork(network);
verify(mService).connectKnownNetwork(network);
}
@Test
public void connectKnownNetwork_remoteException_shouldFail() throws RemoteException {
KnownNetwork network = buildKnownNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).connectKnownNetwork(network);
assertThat(manager.connectKnownNetwork(network)).isFalse();
}
@Test
public void forgetKnownNetwork_serviceNotConnected_shouldFail() {
KnownNetwork network = buildKnownNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
assertThat(manager.forgetKnownNetwork(network)).isFalse();
}
@Test
public void forgetKnownNetwork_serviceConnected() throws RemoteException {
KnownNetwork network = buildKnownNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
manager.forgetKnownNetwork(network);
verify(mService).forgetKnownNetwork(network);
}
@Test
public void forgetKnownNetwork_remoteException_shouldFail() throws RemoteException {
KnownNetwork network = buildKnownNetwork();
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).forgetKnownNetwork(network);
assertThat(manager.forgetKnownNetwork(network)).isFalse();
}
@Test
public void getHotspotNetworks_serviceNotConnected_shouldReturnNull() {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
assertThat(manager.getHotspotNetworks()).isNull();
}
@Test
public void getHotspotNetworks_remoteException_shouldReturnNull() throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).getHotspotNetworks();
assertThat(manager.getHotspotNetworks()).isNull();
}
@Test
public void getHotspotNetworks_shouldReturnNetworksList() throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
List<HotspotNetwork> networks = List.of(buildHotspotNetwork());
manager.setService(mService);
when(mService.getHotspotNetworks()).thenReturn(networks);
assertThat(manager.getHotspotNetworks()).containsExactly(buildHotspotNetwork());
}
@Test
public void getKnownNetworks_serviceNotConnected_shouldReturnNull()
throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
assertThat(manager.getKnownNetworks()).isNull();
}
@Test
public void getKnownNetworks_remoteException_shouldReturnNull() throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).getKnownNetworks();
assertThat(manager.getKnownNetworks()).isNull();
}
@Test
public void getKnownNetworks_shouldReturnNetworksList() throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
List<KnownNetwork> networks = List.of(buildKnownNetwork());
manager.setService(mService);
when(mService.getKnownNetworks()).thenReturn(networks);
assertThat(manager.getKnownNetworks()).containsExactly(buildKnownNetwork());
}
@Test
public void getSettingsState_serviceNotConnected_shouldReturnNull() throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
assertThat(manager.getSettingsState()).isNull();
}
@Test
public void getSettingsState_remoteException_shouldReturnNull() throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).getSettingsState();
assertThat(manager.getSettingsState()).isNull();
}
@Test
public void getSettingsState_serviceConnected_shouldReturnState() throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
SharedConnectivitySettingsState state =
new SharedConnectivitySettingsState.Builder().setInstantTetherEnabled(true)
.setExtras(new Bundle()).build();
manager.setService(mService);
when(mService.getSettingsState()).thenReturn(state);
assertThat(manager.getSettingsState()).isEqualTo(state);
}
@Test
public void getHotspotNetworkConnectionStatus_serviceNotConnected_shouldReturnNull()
throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
assertThat(manager.getHotspotNetworkConnectionStatus()).isNull();
}
@Test
public void getHotspotNetworkConnectionStatus_remoteException_shouldReturnNull()
throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).getHotspotNetworkConnectionStatus();
assertThat(manager.getHotspotNetworkConnectionStatus()).isNull();
}
@Test
public void getHotspotNetworkConnectionStatus_serviceConnected_shouldReturnStatus()
throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
HotspotNetworkConnectionStatus status = new HotspotNetworkConnectionStatus.Builder()
.setStatus(HotspotNetworkConnectionStatus.CONNECTION_STATUS_ENABLING_HOTSPOT)
.setExtras(new Bundle()).build();
manager.setService(mService);
when(mService.getHotspotNetworkConnectionStatus()).thenReturn(status);
assertThat(manager.getHotspotNetworkConnectionStatus()).isEqualTo(status);
}
@Test
public void getKnownNetworkConnectionStatus_serviceNotConnected_shouldReturnNull()
throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(null);
assertThat(manager.getKnownNetworkConnectionStatus()).isNull();
}
@Test
public void getKnownNetworkConnectionStatus_remoteException_shouldReturnNull()
throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
manager.setService(mService);
doThrow(new RemoteException()).when(mService).getKnownNetworkConnectionStatus();
assertThat(manager.getKnownNetworkConnectionStatus()).isNull();
}
@Test
public void getKnownNetworkConnectionStatus_serviceConnected_shouldReturnStatus()
throws RemoteException {
SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
KnownNetworkConnectionStatus status = new KnownNetworkConnectionStatus.Builder()
.setStatus(KnownNetworkConnectionStatus.CONNECTION_STATUS_SAVED)
.setExtras(new Bundle()).build();
manager.setService(mService);
when(mService.getKnownNetworkConnectionStatus()).thenReturn(status);
assertThat(manager.getKnownNetworkConnectionStatus()).isEqualTo(status);
}
private void setResources(@Mock Context context) {
when(context.getResources()).thenReturn(mResources);
when(mResources.getString(anyInt()))
.thenReturn(SERVICE_PACKAGE_NAME, SERVICE_INTENT_ACTION);
}
private HotspotNetwork buildHotspotNetwork() {
HotspotNetwork.Builder builder = new HotspotNetwork.Builder()
.setDeviceId(DEVICE_ID)
.setNetworkProviderInfo(NETWORK_PROVIDER_INFO)
.setHostNetworkType(NETWORK_TYPE)
.setNetworkName(NETWORK_NAME)
.setHotspotSsid(HOTSPOT_SSID);
Arrays.stream(HOTSPOT_SECURITY_TYPES).forEach(builder::addHotspotSecurityType);
return builder.build();
}
private KnownNetwork buildKnownNetwork() {
KnownNetwork.Builder builder = new KnownNetwork.Builder().setNetworkSource(NETWORK_SOURCE)
.setSsid(SSID).setNetworkProviderInfo(NETWORK_PROVIDER_INFO);
Arrays.stream(SECURITY_TYPES).forEach(builder::addSecurityType);
return builder.build();
}
}

View File

@@ -1,115 +0,0 @@
/*
* Copyright (C) 2023 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.wifi.sharedconnectivity.app;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertThrows;
import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Parcel;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.filters.SmallTest;
import org.junit.Test;
/**
* Unit tests for {@link SharedConnectivitySettingsState}.
*/
@SmallTest
public class SharedConnectivitySettingsStateTest {
private static final boolean INSTANT_TETHER_STATE = true;
private static final String INTENT_ACTION = "instant.tether.settings";
private static final boolean INSTANT_TETHER_STATE_1 = false;
private static final String INTENT_ACTION_1 = "instant.tether.settings1";
@Test
public void pendingIntentMutable_buildShouldThrow() {
SharedConnectivitySettingsState.Builder builder =
new SharedConnectivitySettingsState.Builder()
.setInstantTetherEnabled(INSTANT_TETHER_STATE)
.setInstantTetherSettingsPendingIntent(PendingIntent.getActivity(
ApplicationProvider.getApplicationContext(), 0,
new Intent(INTENT_ACTION).setComponent(new ComponentName(
"com.test.package", "TestClass")),
PendingIntent.FLAG_MUTABLE));
Exception e = assertThrows(IllegalArgumentException.class, builder::build);
assertThat(e.getMessage()).contains("Pending intent must be immutable");
}
@Test
public void parcelOperation() {
SharedConnectivitySettingsState state = buildSettingsStateBuilder(INTENT_ACTION).build();
Parcel parcel = Parcel.obtain();
state.writeToParcel(parcel, 0);
parcel.setDataPosition(0);
SharedConnectivitySettingsState fromParcel =
SharedConnectivitySettingsState.CREATOR.createFromParcel(parcel);
assertThat(fromParcel).isEqualTo(state);
assertThat(fromParcel.hashCode()).isEqualTo(state.hashCode());
}
@Test
public void equalsOperation() {
SharedConnectivitySettingsState state1 = buildSettingsStateBuilder(INTENT_ACTION).build();
SharedConnectivitySettingsState state2 = buildSettingsStateBuilder(INTENT_ACTION).build();
assertThat(state1).isEqualTo(state2);
SharedConnectivitySettingsState.Builder builder = buildSettingsStateBuilder(INTENT_ACTION)
.setInstantTetherEnabled(INSTANT_TETHER_STATE_1);
assertThat(builder.build()).isNotEqualTo(state1);
builder = buildSettingsStateBuilder(INTENT_ACTION_1);
assertThat(builder.build()).isNotEqualTo(state1);
}
@Test
public void getMethods() {
SharedConnectivitySettingsState state = buildSettingsStateBuilder(INTENT_ACTION).build();
assertThat(state.isInstantTetherEnabled()).isEqualTo(INSTANT_TETHER_STATE);
assertThat(state.getInstantTetherSettingsPendingIntent())
.isEqualTo(buildPendingIntent(INTENT_ACTION));
}
@Test
public void hashCodeCalculation() {
SharedConnectivitySettingsState state1 = buildSettingsStateBuilder(INTENT_ACTION).build();
SharedConnectivitySettingsState state2 = buildSettingsStateBuilder(INTENT_ACTION).build();
assertThat(state1.hashCode()).isEqualTo(state2.hashCode());
}
private SharedConnectivitySettingsState.Builder buildSettingsStateBuilder(String intentAction) {
return new SharedConnectivitySettingsState.Builder()
.setInstantTetherEnabled(INSTANT_TETHER_STATE)
.setInstantTetherSettingsPendingIntent(buildPendingIntent(intentAction));
}
private PendingIntent buildPendingIntent(String intentAction) {
return PendingIntent.getActivity(
ApplicationProvider.getApplicationContext(), 0,
new Intent(intentAction), PendingIntent.FLAG_IMMUTABLE);
}
}