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

Commit 060e7605 authored by Thiébaud Weksteen's avatar Thiébaud Weksteen Committed by Android (Google) Code Review
Browse files

Merge "Mock permission checks for NetworkManagementServiceTest"

parents f36c8d70 0e323477
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -17,9 +17,6 @@
package com.android.server;

import static android.Manifest.permission.CONNECTIVITY_INTERNAL;
import static android.Manifest.permission.NETWORK_SETTINGS;
import static android.Manifest.permission.OBSERVE_NETWORK_POLICY;
import static android.Manifest.permission.SHUTDOWN;
import static android.net.ConnectivityManager.FIREWALL_CHAIN_DOZABLE;
import static android.net.ConnectivityManager.FIREWALL_CHAIN_LOW_POWER_STANDBY;
import static android.net.ConnectivityManager.FIREWALL_CHAIN_POWERSAVE;
@@ -63,6 +60,7 @@ import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.INetworkManagementService;
import android.os.PermissionEnforcer;
import android.os.Process;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
@@ -230,6 +228,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub {
     */
    private NetworkManagementService(
            Context context, Dependencies deps) {
        super(PermissionEnforcer.fromContext(context));
        mContext = context;
        mDeps = deps;

+29 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;

import android.annotation.NonNull;
import android.content.AttributionSource;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.INetd;
@@ -46,8 +47,10 @@ import android.net.NetworkPolicyManager;
import android.os.BatteryStats;
import android.os.Binder;
import android.os.IBinder;
import android.os.PermissionEnforcer;
import android.os.Process;
import android.os.RemoteException;
import android.permission.PermissionCheckerManager;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.ArrayMap;

@@ -87,6 +90,7 @@ public class NetworkManagementServiceTest {
    private ArgumentCaptor<INetdUnsolicitedEventListener> mUnsolListenerCaptor;

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

    private final class MockDependencies extends Dependencies {
        @Override
@@ -114,6 +118,24 @@ 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
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
@@ -122,6 +144,13 @@ public class NetworkManagementServiceTest {
        doReturn(Context.CONNECTIVITY_SERVICE).when(mContext).getSystemServiceName(
                eq(ConnectivityManager.class));
        doReturn(mCm).when(mContext).getSystemService(eq(Context.CONNECTIVITY_SERVICE));
        // The AIDL stub will use PermissionEnforcer to check permission from the caller.
        // Mock the service. See MockPermissionEnforcer above.
        doReturn(Context.PERMISSION_ENFORCER_SERVICE).when(mContext).getSystemServiceName(
                eq(PermissionEnforcer.class));
        doReturn(mPermissionEnforcer).when(mContext).getSystemService(
                eq(Context.PERMISSION_ENFORCER_SERVICE));

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