Merge "Validate NetworkDeviceInfo is not null in HotspotNetwork" into udc-dev

This commit is contained in:
Andrew Sapperstein
2023-03-09 22:58:48 +00:00
committed by Android (Google) Code Review
2 changed files with 37 additions and 18 deletions

View File

@@ -207,10 +207,14 @@ public final class HotspotNetwork implements Parcelable {
}
}
private static void validate(long deviceId, @NetworkType int networkType, String networkName) {
private static void validate(long deviceId, @NetworkType int networkType, String networkName,
NetworkProviderInfo networkProviderInfo) {
if (deviceId < 0) {
throw new IllegalArgumentException("DeviceId must be set");
}
if (Objects.isNull(networkProviderInfo)) {
throw new IllegalArgumentException("NetworkProviderInfo must be set");
}
if (networkType != NETWORK_TYPE_CELLULAR && networkType != NETWORK_TYPE_WIFI
&& networkType != NETWORK_TYPE_ETHERNET && networkType != NETWORK_TYPE_UNKNOWN) {
throw new IllegalArgumentException("Illegal network type");
@@ -230,7 +234,8 @@ public final class HotspotNetwork implements Parcelable {
@Nullable @SecurityType ArraySet<Integer> hotspotSecurityTypes) {
validate(deviceId,
networkType,
networkName);
networkName,
networkProviderInfo);
mDeviceId = deviceId;
mNetworkProviderInfo = networkProviderInfo;
mNetworkType = networkType;

View File

@@ -26,12 +26,16 @@ import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertThrows;
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;
@@ -39,6 +43,7 @@ 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 =
@@ -67,7 +72,7 @@ public class HotspotNetworkTest {
*/
@Test
public void testParcelOperation() {
HotspotNetwork network = buildHotspotNetworkBuilder().build();
HotspotNetwork network = buildHotspotNetworkBuilder(true).build();
Parcel parcelW = Parcel.obtain();
network.writeToParcel(parcelW, 0);
@@ -88,30 +93,30 @@ public class HotspotNetworkTest {
*/
@Test
public void testEqualsOperation() {
HotspotNetwork network1 = buildHotspotNetworkBuilder().build();
HotspotNetwork network2 = buildHotspotNetworkBuilder().build();
HotspotNetwork network1 = buildHotspotNetworkBuilder(true).build();
HotspotNetwork network2 = buildHotspotNetworkBuilder(true).build();
assertThat(network1).isEqualTo(network2);
HotspotNetwork.Builder builder = buildHotspotNetworkBuilder().setDeviceId(DEVICE_ID_1);
HotspotNetwork.Builder builder = buildHotspotNetworkBuilder(true).setDeviceId(DEVICE_ID_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder().setNetworkProviderInfo(NETWORK_PROVIDER_INFO1);
builder = buildHotspotNetworkBuilder(true).setNetworkProviderInfo(NETWORK_PROVIDER_INFO1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder().setHostNetworkType(NETWORK_TYPE_1);
builder = buildHotspotNetworkBuilder(true).setHostNetworkType(NETWORK_TYPE_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder().setNetworkName(NETWORK_NAME_1);
builder = buildHotspotNetworkBuilder(true).setNetworkName(NETWORK_NAME_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder().setHotspotSsid(HOTSPOT_SSID_1);
builder = buildHotspotNetworkBuilder(true).setHotspotSsid(HOTSPOT_SSID_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder().setHotspotBssid(HOTSPOT_BSSID_1);
builder = buildHotspotNetworkBuilder(true).setHotspotBssid(HOTSPOT_BSSID_1);
assertThat(builder.build()).isNotEqualTo(network1);
builder = buildHotspotNetworkBuilder();
HotspotNetwork.Builder builder1 = buildHotspotNetworkBuilder();
builder = buildHotspotNetworkBuilder(true);
HotspotNetwork.Builder builder1 = buildHotspotNetworkBuilder(true);
Arrays.stream(HOTSPOT_SECURITY_TYPES_1).forEach(builder1::addHotspotSecurityType);
assertThat(builder1.build()).isNotEqualTo(builder.build());
@@ -122,7 +127,7 @@ public class HotspotNetworkTest {
*/
@Test
public void testGetMethods() {
HotspotNetwork network = buildHotspotNetworkBuilder().build();
HotspotNetwork network = buildHotspotNetworkBuilder(true).build();
ArraySet<Integer> securityTypes = new ArraySet<>();
Arrays.stream(HOTSPOT_SECURITY_TYPES).forEach(securityTypes::add);
@@ -137,21 +142,30 @@ public class HotspotNetworkTest {
@Test
public void testHashCode() {
HotspotNetwork network1 = buildHotspotNetworkBuilder().build();
HotspotNetwork network2 = buildHotspotNetworkBuilder().build();
HotspotNetwork network1 = buildHotspotNetworkBuilder(true).build();
HotspotNetwork network2 = buildHotspotNetworkBuilder(true).build();
assertThat(network1.hashCode()).isEqualTo(network2.hashCode());
}
private HotspotNetwork.Builder buildHotspotNetworkBuilder() {
@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)
.setNetworkProviderInfo(NETWORK_PROVIDER_INFO)
.setHostNetworkType(NETWORK_TYPE)
.setNetworkName(NETWORK_NAME)
.setHotspotSsid(HOTSPOT_SSID)
.setHotspotBssid(HOTSPOT_BSSID);
Arrays.stream(HOTSPOT_SECURITY_TYPES).forEach(builder::addHotspotSecurityType);
if (withNetworkProviderInfo) {
builder.setNetworkProviderInfo(NETWORK_PROVIDER_INFO);
}
return builder;
}
}