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

Commit 0ace1bfe authored by Tianjie's avatar Tianjie
Browse files

Fix ResumeOnRebootServiceProviderTests

The mock class doesn't support accessing public fields directly. So
switch the ResolvedInfo and ServiceInfo to fake implementations.

Test: atest FrameworksServicesTests:ResumeOnRebootServiceProviderTests
Change-Id: I05d906123988c46a388e1dee7b7096c5f0271288
parent 8ad97c0d
Loading
Loading
Loading
Loading
+18 −20
Original line number Original line Diff line number Diff line
@@ -19,12 +19,12 @@ package com.android.server.locksettings;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;


import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;


import android.Manifest;
import android.Manifest;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
@@ -53,12 +53,9 @@ public class ResumeOnRebootServiceProviderTests {
    Context mMockContext;
    Context mMockContext;
    @Mock
    @Mock
    PackageManager mMockPackageManager;
    PackageManager mMockPackageManager;
    @Mock

    ResolveInfo mMockResolvedInfo;
    ResolveInfo mFakeResolvedInfo;
    @Mock
    ServiceInfo mFakeServiceInfo;
    ServiceInfo mMockServiceInfo;
    @Mock
    ComponentName mMockComponentName;
    @Captor
    @Captor
    ArgumentCaptor<Intent> mIntentArgumentCaptor;
    ArgumentCaptor<Intent> mIntentArgumentCaptor;


@@ -66,8 +63,13 @@ public class ResumeOnRebootServiceProviderTests {
    public void setUp() {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        MockitoAnnotations.initMocks(this);
        when(mMockContext.getUserId()).thenReturn(0);
        when(mMockContext.getUserId()).thenReturn(0);
        when(mMockResolvedInfo.serviceInfo).thenReturn(mMockServiceInfo);

        when(mMockServiceInfo.getComponentName()).thenReturn(mMockComponentName);
        mFakeServiceInfo = new ServiceInfo();
        mFakeServiceInfo.packageName = "fakePackageName";
        mFakeServiceInfo.name = "fakeName";

        mFakeResolvedInfo = new ResolveInfo();
        mFakeResolvedInfo.serviceInfo = mFakeServiceInfo;
    }
    }


    @Test
    @Test
@@ -82,10 +84,9 @@ public class ResumeOnRebootServiceProviderTests {
    @Test
    @Test
    public void serviceNotGuardedWithPermission() throws Exception {
    public void serviceNotGuardedWithPermission() throws Exception {
        ArrayList<ResolveInfo> resultList = new ArrayList<>();
        ArrayList<ResolveInfo> resultList = new ArrayList<>();
        when(mMockServiceInfo.permission).thenReturn("");
        mFakeServiceInfo.permission = "";
        resultList.add(mMockResolvedInfo);
        resultList.add(mFakeResolvedInfo);
        when(mMockPackageManager.queryIntentServices(any(), any())).thenReturn(
        when(mMockPackageManager.queryIntentServices(any(), anyInt())).thenReturn(resultList);
                resultList);
        assertThat(new ResumeOnRebootServiceProvider(mMockContext,
        assertThat(new ResumeOnRebootServiceProvider(mMockContext,
                mMockPackageManager).getServiceConnection()).isNull();
                mMockPackageManager).getServiceConnection()).isNull();
    }
    }
@@ -93,18 +94,15 @@ public class ResumeOnRebootServiceProviderTests {
    @Test
    @Test
    public void serviceResolved() throws Exception {
    public void serviceResolved() throws Exception {
        ArrayList<ResolveInfo> resultList = new ArrayList<>();
        ArrayList<ResolveInfo> resultList = new ArrayList<>();
        resultList.add(mMockResolvedInfo);
        resultList.add(mFakeResolvedInfo);
        when(mMockServiceInfo.permission).thenReturn(
        mFakeServiceInfo.permission = Manifest.permission.BIND_RESUME_ON_REBOOT_SERVICE;
                Manifest.permission.BIND_RESUME_ON_REBOOT_SERVICE);
        when(mMockPackageManager.queryIntentServices(any(), anyInt())).thenReturn(resultList);
        when(mMockPackageManager.queryIntentServices(any(),
                eq(PackageManager.MATCH_SYSTEM_ONLY))).thenReturn(
                resultList);


        assertThat(new ResumeOnRebootServiceProvider(mMockContext,
        assertThat(new ResumeOnRebootServiceProvider(mMockContext,
                mMockPackageManager).getServiceConnection()).isNotNull();
                mMockPackageManager).getServiceConnection()).isNotNull();


        verify(mMockPackageManager).queryIntentServices(mIntentArgumentCaptor.capture(),
        verify(mMockPackageManager).queryIntentServices(mIntentArgumentCaptor.capture(),
                eq(PackageManager.MATCH_SYSTEM_ONLY));
                eq(PackageManager.MATCH_SYSTEM_ONLY | PackageManager.GET_SERVICES));
        assertThat(mIntentArgumentCaptor.getValue().getAction()).isEqualTo(
        assertThat(mIntentArgumentCaptor.getValue().getAction()).isEqualTo(
                ResumeOnRebootService.SERVICE_INTERFACE);
                ResumeOnRebootService.SERVICE_INTERFACE);
    }
    }