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

Commit e8a2be08 authored by Thiébaud Weksteen's avatar Thiébaud Weksteen
Browse files

Use FakePermissionEnforcer for NetworkManagementServiceTest

Update the test to use the new FakePermissionEnforcer class which
contains the logic to verify if a permission has been artificially
granted.

Bug: 269684922
Test: atest FrameworksServicesTests:com.android.server.net.NetworkManagementServiceTest
Change-Id: Iea4ec02d4be27f8043c1a57db11cadfd6d90b3ba
parent 03e451d4
Loading
Loading
Loading
Loading
+7 −24
Original line number Original line Diff line number Diff line
@@ -37,7 +37,6 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.verifyNoMoreInteractions;


import android.annotation.NonNull;
import android.annotation.NonNull;
import android.content.AttributionSource;
import android.content.Context;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager;
import android.net.INetd;
import android.net.INetd;
@@ -50,7 +49,7 @@ import android.os.IBinder;
import android.os.PermissionEnforcer;
import android.os.PermissionEnforcer;
import android.os.Process;
import android.os.Process;
import android.os.RemoteException;
import android.os.RemoteException;
import android.permission.PermissionCheckerManager;
import android.os.test.FakePermissionEnforcer;
import android.platform.test.annotations.Presubmit;
import android.platform.test.annotations.Presubmit;
import android.test.suitebuilder.annotation.SmallTest;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.ArrayMap;
import android.util.ArrayMap;
@@ -90,7 +89,6 @@ public class NetworkManagementServiceTest {
    private ArgumentCaptor<INetdUnsolicitedEventListener> mUnsolListenerCaptor;
    private ArgumentCaptor<INetdUnsolicitedEventListener> mUnsolListenerCaptor;


    private final MockDependencies mDeps = new MockDependencies();
    private final MockDependencies mDeps = new MockDependencies();
    private final MockPermissionEnforcer mPermissionEnforcer = new MockPermissionEnforcer();


    private final class MockDependencies extends NetworkManagementService.Dependencies {
    private final class MockDependencies extends NetworkManagementService.Dependencies {
        @Override
        @Override
@@ -118,24 +116,6 @@ public class NetworkManagementServiceTest {
        }
        }
    }
    }


    private static final class MockPermissionEnforcer extends PermissionEnforcer {
        @Override
        protected int checkPermission(@NonNull String permission,
                @NonNull AttributionSource source) {
            String[] granted = new String [] {
                android.Manifest.permission.NETWORK_SETTINGS,
                android.Manifest.permission.OBSERVE_NETWORK_POLICY,
                android.Manifest.permission.SHUTDOWN
            };
            for (String p : granted) {
                if (p.equals(permission)) {
                    return PermissionCheckerManager.PERMISSION_GRANTED;
                }
            }
            return PermissionCheckerManager.PERMISSION_HARD_DENIED;
        }
    }

    @Before
    @Before
    public void setUp() throws Exception {
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        MockitoAnnotations.initMocks(this);
@@ -145,12 +125,15 @@ public class NetworkManagementServiceTest {
                eq(ConnectivityManager.class));
                eq(ConnectivityManager.class));
        doReturn(mCm).when(mContext).getSystemService(eq(Context.CONNECTIVITY_SERVICE));
        doReturn(mCm).when(mContext).getSystemService(eq(Context.CONNECTIVITY_SERVICE));
        // The AIDL stub will use PermissionEnforcer to check permission from the caller.
        // The AIDL stub will use PermissionEnforcer to check permission from the caller.
        // Mock the service. See MockPermissionEnforcer above.
        // Mock the service and grant the expected permissions.
        FakePermissionEnforcer permissionEnforcer = new FakePermissionEnforcer();
        permissionEnforcer.grant(android.Manifest.permission.NETWORK_SETTINGS);
        permissionEnforcer.grant(android.Manifest.permission.OBSERVE_NETWORK_POLICY);
        permissionEnforcer.grant(android.Manifest.permission.SHUTDOWN);
        doReturn(Context.PERMISSION_ENFORCER_SERVICE).when(mContext).getSystemServiceName(
        doReturn(Context.PERMISSION_ENFORCER_SERVICE).when(mContext).getSystemServiceName(
                eq(PermissionEnforcer.class));
                eq(PermissionEnforcer.class));
        doReturn(mPermissionEnforcer).when(mContext).getSystemService(
        doReturn(permissionEnforcer).when(mContext).getSystemService(
                eq(Context.PERMISSION_ENFORCER_SERVICE));
                eq(Context.PERMISSION_ENFORCER_SERVICE));

        // Start the service and wait until it connects to our socket.
        // Start the service and wait until it connects to our socket.
        mNMService = NetworkManagementService.create(mContext, mDeps);
        mNMService = NetworkManagementService.create(mContext, mDeps);
    }
    }