Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03f75713 authored by Isaac Katzenelson's avatar Isaac Katzenelson
Browse files

Validate NetworkDeviceInfo is not null in HotspotNetwork

Bug: 272512345
Test: atest HotspotNetworkTest
Change-Id: Ib9e7360629f77effa7ff3de2ea0bc20e72d63bdc
parent 61fcbaf7
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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;
+30 −16
Original line number Diff line number Diff line
@@ -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;
    }
}