diff options
Diffstat (limited to 'adservices/apk/unittest')
6 files changed, 158 insertions, 54 deletions
diff --git a/adservices/apk/unittest/src/com/android/adservices/adselection/AdSelectionServiceTest.java b/adservices/apk/unittest/src/com/android/adservices/adselection/AdSelectionServiceTest.java index 53fecba2f1..2b9d9fcae9 100644 --- a/adservices/apk/unittest/src/com/android/adservices/adselection/AdSelectionServiceTest.java +++ b/adservices/apk/unittest/src/com/android/adservices/adselection/AdSelectionServiceTest.java @@ -16,24 +16,36 @@ package com.android.adservices.adselection; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.any; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyBoolean; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.never; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; + import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import static org.mockito.Mockito.any; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.os.IBinder; import androidx.test.core.app.ApplicationProvider; +import com.android.adservices.download.MddJobService; import com.android.adservices.service.Flags; +import com.android.adservices.service.MaintenanceJobService; import com.android.adservices.service.adselection.AdSelectionServiceImpl; +import com.android.adservices.service.common.PackageChangedReceiver; +import com.android.adservices.service.consent.AdServicesApiConsent; +import com.android.adservices.service.consent.ConsentManager; import com.android.dx.mockito.inline.extended.ExtendedMockito; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; import org.mockito.MockitoSession; /** Unit test for {@link AdSelectionService} */ @@ -43,10 +55,27 @@ public class AdSelectionServiceTest { private final Flags mFlagsWithAdSelectionSwitchOff = new FlagsWithKillSwitchOff(); @Mock private AdSelectionServiceImpl mMockAdSelectionServiceImpl; + @Mock private ConsentManager mConsentManagerMock; + @Mock private PackageManager mPackageManagerMock; + + private MockitoSession mStaticMockSession; @Before public void setup() { - MockitoAnnotations.initMocks(this); + mStaticMockSession = + ExtendedMockito.mockitoSession() + .mockStatic(ConsentManager.class) + .spyStatic(AdSelectionServiceImpl.class) + .spyStatic(PackageChangedReceiver.class) + .mockStatic(MddJobService.class) + .mockStatic(MaintenanceJobService.class) + .initMocks(this) + .startMocking(); + } + + @After + public void teardown() { + mStaticMockSession.finishMocking(); } @Test @@ -56,25 +85,36 @@ public class AdSelectionServiceTest { adSelectionService.onCreate(); IBinder binder = adSelectionService.onBind(getIntentForAdSelectionService()); assertNull(binder); + + verify(mConsentManagerMock, never()).getConsent(); + verify(() -> MddJobService.scheduleIfNeeded(any(), anyBoolean()), never()); } @Test public void testBindableAdSelectionServiceKillSwitchOff() { - MockitoSession session = - ExtendedMockito.mockitoSession() - .spyStatic(AdSelectionServiceImpl.class) - .startMocking(); - - ExtendedMockito.doReturn(mMockAdSelectionServiceImpl) + doReturn(mMockAdSelectionServiceImpl) .when(() -> AdSelectionServiceImpl.create(any(Context.class))); - - AdSelectionService adSelectionService = + doReturn(mConsentManagerMock).when(() -> ConsentManager.getInstance(any(Context.class))); + doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(); + ExtendedMockito.doReturn(true) + .when(() -> PackageChangedReceiver.enableReceiver(any(Context.class))); + doReturn(true).when(() -> MddJobService.scheduleIfNeeded(any(), anyBoolean())); + doReturn(true).when(() -> MaintenanceJobService.scheduleIfNeeded(any(), anyBoolean())); + + AdSelectionService adSelectionServiceSpy = new AdSelectionService(mFlagsWithAdSelectionSwitchOff); - adSelectionService.onCreate(); - IBinder binder = adSelectionService.onBind(getIntentForAdSelectionService()); + + spyOn(adSelectionServiceSpy); + doReturn(mPackageManagerMock).when(adSelectionServiceSpy).getPackageManager(); + + adSelectionServiceSpy.onCreate(); + IBinder binder = adSelectionServiceSpy.onBind(getIntentForAdSelectionService()); assertNotNull(binder); - session.finishMocking(); + verify(mConsentManagerMock).getConsent(); + verify(() -> PackageChangedReceiver.enableReceiver(any(Context.class))); + verify(() -> MddJobService.scheduleIfNeeded(any(), anyBoolean())); + verify(() -> MaintenanceJobService.scheduleIfNeeded(any(), anyBoolean())); } private Intent getIntentForAdSelectionService() { diff --git a/adservices/apk/unittest/src/com/android/adservices/customaudience/CustomAudienceServiceTest.java b/adservices/apk/unittest/src/com/android/adservices/customaudience/CustomAudienceServiceTest.java index 4f8ced89f0..10cc1fa6ac 100644 --- a/adservices/apk/unittest/src/com/android/adservices/customaudience/CustomAudienceServiceTest.java +++ b/adservices/apk/unittest/src/com/android/adservices/customaudience/CustomAudienceServiceTest.java @@ -16,24 +16,35 @@ package com.android.adservices.customaudience; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.any; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyBoolean; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.never; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; + import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import static org.mockito.Mockito.any; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.os.IBinder; import androidx.test.core.app.ApplicationProvider; +import com.android.adservices.download.MddJobService; import com.android.adservices.service.Flags; +import com.android.adservices.service.common.PackageChangedReceiver; +import com.android.adservices.service.consent.AdServicesApiConsent; +import com.android.adservices.service.consent.ConsentManager; import com.android.adservices.service.customaudience.CustomAudienceServiceImpl; import com.android.dx.mockito.inline.extended.ExtendedMockito; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; import org.mockito.MockitoSession; public class CustomAudienceServiceTest { @@ -42,10 +53,26 @@ public class CustomAudienceServiceTest { private final Flags mFlagsWithCustomAudienceSwitchOff = new FlagsWithKillSwitchOff(); @Mock private CustomAudienceServiceImpl mMockCustomAudienceServiceImpl; + @Mock private ConsentManager mConsentManagerMock; + @Mock private PackageManager mPackageManagerMock; + + private MockitoSession mStaticMockSession; @Before public void setup() { - MockitoAnnotations.initMocks(this); + mStaticMockSession = + ExtendedMockito.mockitoSession() + .mockStatic(ConsentManager.class) + .spyStatic(CustomAudienceServiceImpl.class) + .spyStatic(PackageChangedReceiver.class) + .mockStatic(MddJobService.class) + .initMocks(this) + .startMocking(); + } + + @After + public void teardown() { + mStaticMockSession.finishMocking(); } @Test @@ -55,26 +82,34 @@ public class CustomAudienceServiceTest { customAudienceService.onCreate(); IBinder binder = customAudienceService.onBind(getIntentForCustomAudienceService()); assertNull(binder); + + verify(mConsentManagerMock, never()).getConsent(); + verify(() -> MddJobService.scheduleIfNeeded(any(), anyBoolean()), never()); } @Test public void testBindableCustomAudienceServiceKillSwitchOff() { - - MockitoSession session = - ExtendedMockito.mockitoSession() - .spyStatic(CustomAudienceServiceImpl.class) - .startMocking(); - - ExtendedMockito.doReturn(mMockCustomAudienceServiceImpl) + doReturn(mMockCustomAudienceServiceImpl) .when(() -> CustomAudienceServiceImpl.create(any(Context.class))); + doReturn(mConsentManagerMock).when(() -> ConsentManager.getInstance(any(Context.class))); + doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(); + ExtendedMockito.doReturn(true) + .when(() -> PackageChangedReceiver.enableReceiver(any(Context.class))); + doReturn(true).when(() -> MddJobService.scheduleIfNeeded(any(), anyBoolean())); - CustomAudienceService customAudienceService = + CustomAudienceService customAudienceServiceSpy = new CustomAudienceService(mFlagsWithCustomAudienceSwitchOff); - customAudienceService.onCreate(); - IBinder binder = customAudienceService.onBind(getIntentForCustomAudienceService()); + + spyOn(customAudienceServiceSpy); + doReturn(mPackageManagerMock).when(customAudienceServiceSpy).getPackageManager(); + + customAudienceServiceSpy.onCreate(); + IBinder binder = customAudienceServiceSpy.onBind(getIntentForCustomAudienceService()); assertNotNull(binder); - session.finishMocking(); + verify(mConsentManagerMock).getConsent(); + verify(() -> PackageChangedReceiver.enableReceiver(any(Context.class))); + verify(() -> MddJobService.scheduleIfNeeded(any(), anyBoolean())); } private Intent getIntentForCustomAudienceService() { diff --git a/adservices/apk/unittest/src/com/android/adservices/measurement/MeasurementServiceTest.java b/adservices/apk/unittest/src/com/android/adservices/measurement/MeasurementServiceTest.java index 865574e6aa..67a6e4e057 100644 --- a/adservices/apk/unittest/src/com/android/adservices/measurement/MeasurementServiceTest.java +++ b/adservices/apk/unittest/src/com/android/adservices/measurement/MeasurementServiceTest.java @@ -27,6 +27,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.os.IBinder; @@ -34,13 +35,17 @@ import android.os.IBinder; import androidx.test.core.app.ApplicationProvider; import com.android.adservices.data.enrollment.EnrollmentDao; +import com.android.adservices.download.MddJobService; import com.android.adservices.service.Flags; import com.android.adservices.service.FlagsFactory; import com.android.adservices.service.common.AppImportanceFilter; +import com.android.adservices.service.common.PackageChangedReceiver; import com.android.adservices.service.consent.AdServicesApiConsent; import com.android.adservices.service.consent.ConsentManager; import com.android.adservices.service.enrollment.EnrollmentData; +import com.android.adservices.service.measurement.AsyncRegistrationQueueJobService; import com.android.adservices.service.measurement.DeleteExpiredJobService; +import com.android.adservices.service.measurement.DeleteUninstalledJobService; import com.android.adservices.service.measurement.MeasurementImpl; import com.android.adservices.service.measurement.attribution.AttributionJobService; import com.android.adservices.service.measurement.reporting.AggregateFallbackReportingJobService; @@ -97,7 +102,9 @@ public class MeasurementServiceTest { // Verification assertNotNull(binder); - verify(mMockConsentManager, times(1)).getConsent(any()); + verify(mMockConsentManager, times(1)).getConsent(); + ExtendedMockito.verify( + () -> PackageChangedReceiver.enableReceiver(any(Context.class))); assertJobScheduled(/* timesCalled */ 1); }); } @@ -114,7 +121,7 @@ public class MeasurementServiceTest { // Verification assertNotNull(binder); - verify(mMockConsentManager, times(1)).getConsent(any()); + verify(mMockConsentManager, times(1)).getConsent(); assertJobScheduled(/* timesCalled */ 0); }); } @@ -131,7 +138,7 @@ public class MeasurementServiceTest { // Verification assertNull(binder); - verify(mMockConsentManager, never()).getConsent(any()); + verify(mMockConsentManager, never()).getConsent(); assertJobScheduled(/* timesCalled */ 0); }); } @@ -160,10 +167,14 @@ public class MeasurementServiceTest { .spyStatic(ConsentManager.class) .spyStatic(EnrollmentDao.class) .spyStatic(EventReportingJobService.class) + .spyStatic(PackageChangedReceiver.class) .spyStatic(EventFallbackReportingJobService.class) .spyStatic(DeleteExpiredJobService.class) + .spyStatic(DeleteUninstalledJobService.class) + .spyStatic(MddJobService.class) .spyStatic(FlagsFactory.class) .spyStatic(MeasurementImpl.class) + .spyStatic(AsyncRegistrationQueueJobService.class) .strictness(Strictness.LENIENT) .startMocking(); try { @@ -176,7 +187,7 @@ public class MeasurementServiceTest { final AdServicesApiConsent mockConsent = mock(AdServicesApiConsent.class); doReturn(consentStatus).when(mockConsent).isGiven(); - doReturn(mockConsent).when(mMockConsentManager).getConsent(any()); + doReturn(mockConsent).when(mMockConsentManager).getConsent(); ExtendedMockito.doReturn(mMockEnrollmentDao) .when(() -> EnrollmentDao.getInstance(any())); @@ -190,6 +201,8 @@ public class MeasurementServiceTest { ExtendedMockito.doReturn(mMockAppImportanceFilter) .when(() -> AppImportanceFilter.create(any(), anyInt(), any())); + ExtendedMockito.doReturn(true) + .when(() -> PackageChangedReceiver.enableReceiver(any(Context.class))); ExtendedMockito.doNothing() .when(() -> AggregateReportingJobService.scheduleIfNeeded(any(), anyBoolean())); ExtendedMockito.doNothing() @@ -209,6 +222,15 @@ public class MeasurementServiceTest { any(), anyBoolean())); ExtendedMockito.doNothing() .when(() -> DeleteExpiredJobService.scheduleIfNeeded(any(), anyBoolean())); + ExtendedMockito.doNothing() + .when(() -> DeleteUninstalledJobService.scheduleIfNeeded(any(), anyBoolean())); + ExtendedMockito.doReturn(true) + .when(() -> MddJobService.scheduleIfNeeded(any(), anyBoolean())); + ExtendedMockito.doNothing() + .when( + () -> + AsyncRegistrationQueueJobService.scheduleIfNeeded( + any(), anyBoolean())); // Execute execute.run(); @@ -236,5 +258,13 @@ public class MeasurementServiceTest { ExtendedMockito.verify( () -> DeleteExpiredJobService.scheduleIfNeeded(any(), anyBoolean()), times(timesCalled)); + ExtendedMockito.verify( + () -> DeleteUninstalledJobService.scheduleIfNeeded(any(), anyBoolean()), + times(timesCalled)); + ExtendedMockito.verify( + () -> MddJobService.scheduleIfNeeded(any(), anyBoolean()), times(timesCalled)); + ExtendedMockito.verify( + () -> AsyncRegistrationQueueJobService.scheduleIfNeeded(any(), anyBoolean()), + times(timesCalled)); } } diff --git a/adservices/apk/unittest/src/com/android/adservices/topics/TopicsServiceTest.java b/adservices/apk/unittest/src/com/android/adservices/topics/TopicsServiceTest.java index 20574aac4b..b43d1c98d3 100644 --- a/adservices/apk/unittest/src/com/android/adservices/topics/TopicsServiceTest.java +++ b/adservices/apk/unittest/src/com/android/adservices/topics/TopicsServiceTest.java @@ -26,7 +26,6 @@ import static org.mockito.Mockito.spy; import android.content.Context; import android.content.Intent; -import android.content.pm.PackageManager; import android.os.IBinder; import androidx.test.core.app.ApplicationProvider; @@ -37,6 +36,7 @@ import com.android.adservices.service.Flags; import com.android.adservices.service.FlagsFactory; import com.android.adservices.service.MaintenanceJobService; import com.android.adservices.service.common.AppImportanceFilter; +import com.android.adservices.service.common.PackageChangedReceiver; import com.android.adservices.service.consent.AdServicesApiConsent; import com.android.adservices.service.consent.ConsentManager; import com.android.adservices.service.stats.AdServicesLoggerImpl; @@ -63,7 +63,6 @@ public class TopicsServiceTest { @Mock AppImportanceFilter mMockAppImportanceFilter; @Mock Flags mMockFlags; @Mock AdServicesApiConsent mMockAdServicesApiConsent; - @Mock PackageManager mMockPackageManager; @Before public void setup() { @@ -84,6 +83,7 @@ public class TopicsServiceTest { .spyStatic(MddJobService.class) .spyStatic(EnrollmentDao.class) .spyStatic(AppImportanceFilter.class) + .spyStatic(PackageChangedReceiver.class) .startMocking(); try { @@ -97,21 +97,13 @@ public class TopicsServiceTest { .when(() -> TopicsWorker.getInstance(any(Context.class))); TopicsService spyTopicsService = spy(new TopicsService()); - doReturn(mMockPackageManager).when(spyTopicsService).getPackageManager(); ExtendedMockito.doReturn(mMockConsentManager) .when(() -> ConsentManager.getInstance(any(Context.class))); doReturn(true).when(mMockAdServicesApiConsent).isGiven(); - doReturn(mMockAdServicesApiConsent) - .when(mMockConsentManager) - .getConsent(mMockPackageManager); + doReturn(mMockAdServicesApiConsent).when(mMockConsentManager).getConsent(); - ExtendedMockito.doReturn(mMockEnrollmentDao) - .when(() -> EnrollmentDao.getInstance(any(Context.class))); - ExtendedMockito.doReturn(mMockAppImportanceFilter) - .when( - () -> - AppImportanceFilter.create( - any(Context.class), anyInt(), any(Supplier.class))); + ExtendedMockito.doReturn(true) + .when(() -> PackageChangedReceiver.enableReceiver(any(Context.class))); ExtendedMockito.doReturn(true) .when( () -> @@ -122,6 +114,14 @@ public class TopicsServiceTest { ExtendedMockito.doReturn(true) .when(() -> MddJobService.scheduleIfNeeded(any(Context.class), eq(false))); + ExtendedMockito.doReturn(mMockEnrollmentDao) + .when(() -> EnrollmentDao.getInstance(any(Context.class))); + ExtendedMockito.doReturn(mMockAppImportanceFilter) + .when( + () -> + AppImportanceFilter.create( + any(Context.class), anyInt(), any(Supplier.class))); + spyTopicsService.onCreate(); IBinder binder = spyTopicsService.onBind(getIntentForTopicsService()); assertNotNull(binder); diff --git a/adservices/apk/unittest/src/com/android/adservices/ui/settings/viewmodels/MainViewModelTest.java b/adservices/apk/unittest/src/com/android/adservices/ui/settings/viewmodels/MainViewModelTest.java index 3bf33879e3..dd65208ca3 100644 --- a/adservices/apk/unittest/src/com/android/adservices/ui/settings/viewmodels/MainViewModelTest.java +++ b/adservices/apk/unittest/src/com/android/adservices/ui/settings/viewmodels/MainViewModelTest.java @@ -25,7 +25,6 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import android.content.Context; -import android.content.pm.PackageManager; import androidx.test.core.app.ApplicationProvider; @@ -48,9 +47,7 @@ public class MainViewModelTest { @Before public void setup() { MockitoAnnotations.initMocks(this); - doReturn(AdServicesApiConsent.GIVEN) - .when(mConsentManager) - .getConsent(any(PackageManager.class)); + doReturn(AdServicesApiConsent.GIVEN).when(mConsentManager).getConsent(); mMainViewModel = new MainViewModel(ApplicationProvider.getApplicationContext(), mConsentManager); } @@ -64,9 +61,7 @@ public class MainViewModelTest { /** Test if getConsent returns false if the {@link ConsentManager} always returns false. */ @Test public void testGetConsentReturnsFalse() { - doReturn(AdServicesApiConsent.REVOKED) - .when(mConsentManager) - .getConsent(any(PackageManager.class)); + doReturn(AdServicesApiConsent.REVOKED).when(mConsentManager).getConsent(); mMainViewModel = new MainViewModel(ApplicationProvider.getApplicationContext(), mConsentManager); diff --git a/adservices/apk/unittest/src/com/android/adservices/ui/settings/viewmodels/TopicsViewModelTest.java b/adservices/apk/unittest/src/com/android/adservices/ui/settings/viewmodels/TopicsViewModelTest.java index 96a54e0dc8..9a4c4c5352 100644 --- a/adservices/apk/unittest/src/com/android/adservices/ui/settings/viewmodels/TopicsViewModelTest.java +++ b/adservices/apk/unittest/src/com/android/adservices/ui/settings/viewmodels/TopicsViewModelTest.java @@ -40,6 +40,7 @@ import java.io.IOException; public class TopicsViewModelTest { private TopicsViewModel mTopicsViewModel; + private BlockedTopicsViewModel mBlockedTopicsViewModel; @Mock private ConsentManager mConsentManager; /** Setup needed before every test in this class. */ @@ -48,11 +49,14 @@ public class TopicsViewModelTest { MockitoAnnotations.initMocks(this); mTopicsViewModel = new TopicsViewModel(ApplicationProvider.getApplicationContext(), mConsentManager); + mBlockedTopicsViewModel = + new BlockedTopicsViewModel( + ApplicationProvider.getApplicationContext(), mConsentManager); } /** Test if getTopics returns no topics if {@link ConsentManager} returns no topics. */ @Test - public void testGetTopicsReturnsNoTopics() throws IOException { + public void testGetTopicsReturnsNoTopics() { ImmutableList<Topic> topicsList = ImmutableList.of(); doReturn(topicsList).when(mConsentManager).getKnownTopicsWithConsent(); @@ -91,7 +95,7 @@ public class TopicsViewModelTest { @Test public void testRestoreTopic() { Topic topic1 = Topic.create(1, 1, 1); - mTopicsViewModel.restoreTopicConsent(topic1); + mBlockedTopicsViewModel.restoreTopicConsent(topic1); verify(mConsentManager, times(1)).restoreConsentForTopic(topic1); } |