diff options
Diffstat (limited to 'adservices/tests/unittest/service-core/src/com/android/adservices/service/common/FledgeAuthorizationFilterTest.java')
-rw-r--r-- | adservices/tests/unittest/service-core/src/com/android/adservices/service/common/FledgeAuthorizationFilterTest.java | 111 |
1 files changed, 59 insertions, 52 deletions
diff --git a/adservices/tests/unittest/service-core/src/com/android/adservices/service/common/FledgeAuthorizationFilterTest.java b/adservices/tests/unittest/service-core/src/com/android/adservices/service/common/FledgeAuthorizationFilterTest.java index 9f62f24c69..dd91a311eb 100644 --- a/adservices/tests/unittest/service-core/src/com/android/adservices/service/common/FledgeAuthorizationFilterTest.java +++ b/adservices/tests/unittest/service-core/src/com/android/adservices/service/common/FledgeAuthorizationFilterTest.java @@ -16,7 +16,12 @@ package com.android.adservices.service.common; -import static com.android.adservices.stats.FledgeApiCallStatsMatcher.aCallStatForFledgeApiWithStatus; +import static android.adservices.common.AdServicesStatusUtils.STATUS_CALLER_NOT_ALLOWED; +import static android.adservices.common.AdServicesStatusUtils.STATUS_PERMISSION_NOT_REQUESTED; +import static android.adservices.common.AdServicesStatusUtils.STATUS_UNAUTHORIZED; + +import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyInt; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.eq; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verifyNoMoreInteractions; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verifyZeroInteractions; @@ -33,6 +38,7 @@ import android.content.pm.PackageManager; import androidx.test.core.app.ApplicationProvider; import com.android.adservices.data.enrollment.EnrollmentDao; +import com.android.adservices.service.PhFlags; import com.android.adservices.service.enrollment.EnrollmentData; import com.android.adservices.service.stats.AdServicesLogger; import com.android.adservices.service.stats.AdServicesLoggerImpl; @@ -44,7 +50,6 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoSession; -import org.mockito.Spy; public class FledgeAuthorizationFilterTest { private static final Context CONTEXT = ApplicationProvider.getApplicationContext(); @@ -59,7 +64,9 @@ public class FledgeAuthorizationFilterTest { @Mock private PackageManager mPackageManager; @Mock private EnrollmentDao mEnrollmentDao; - @Spy private final AdServicesLogger mAdServicesLoggerSpy = AdServicesLoggerImpl.getInstance(); + @Mock private PhFlags mPhFlags; + private final AdServicesLogger mAdServicesLoggerMock = + ExtendedMockito.mock(AdServicesLoggerImpl.class); public MockitoSession mMockitoSession; @@ -71,11 +78,12 @@ public class FledgeAuthorizationFilterTest { ExtendedMockito.mockitoSession() .mockStatic(PermissionHelper.class) .mockStatic(AppManifestConfigHelper.class) + .mockStatic(PhFlags.class) .initMocks(this) .startMocking(); mChecker = new FledgeAuthorizationFilter( - mPackageManager, mEnrollmentDao, mAdServicesLoggerSpy); + mPackageManager, mEnrollmentDao, mAdServicesLoggerMock); } @After @@ -92,7 +100,7 @@ public class FledgeAuthorizationFilterTest { verify(mPackageManager).getPackagesForUid(UID); verifyNoMoreInteractions(mPackageManager); - verifyZeroInteractions(mAdServicesLoggerSpy, mEnrollmentDao); + verifyZeroInteractions(mAdServicesLoggerMock, mEnrollmentDao); } @Test @@ -101,7 +109,7 @@ public class FledgeAuthorizationFilterTest { NullPointerException.class, () -> mChecker.assertCallingPackageName(null, UID, API_NAME_LOGGING_ID)); - verifyZeroInteractions(mPackageManager, mAdServicesLoggerSpy, mEnrollmentDao); + verifyZeroInteractions(mPackageManager, mAdServicesLoggerMock, mEnrollmentDao); } @Test @@ -119,14 +127,9 @@ public class FledgeAuthorizationFilterTest { AdServicesStatusUtils.SECURITY_EXCEPTION_CALLER_NOT_ALLOWED_ON_BEHALF_ERROR_MESSAGE, exception.getMessage()); verify(mPackageManager).getPackagesForUid(UID); - verify(mAdServicesLoggerSpy) - .logFledgeApiCallStats( - API_NAME_LOGGING_ID, AdServicesStatusUtils.STATUS_UNAUTHORIZED); - verify(mAdServicesLoggerSpy) - .logApiCallStats( - aCallStatForFledgeApiWithStatus( - API_NAME_LOGGING_ID, AdServicesStatusUtils.STATUS_UNAUTHORIZED)); - verifyNoMoreInteractions(mPackageManager, mAdServicesLoggerSpy, mEnrollmentDao); + verify(mAdServicesLoggerMock) + .logFledgeApiCallStats(eq(API_NAME_LOGGING_ID), eq(STATUS_UNAUTHORIZED), anyInt()); + verifyNoMoreInteractions(mPackageManager, mAdServicesLoggerMock, mEnrollmentDao); } @Test @@ -144,14 +147,9 @@ public class FledgeAuthorizationFilterTest { AdServicesStatusUtils.SECURITY_EXCEPTION_CALLER_NOT_ALLOWED_ON_BEHALF_ERROR_MESSAGE, exception.getMessage()); verify(mPackageManager).getPackagesForUid(UID); - verify(mAdServicesLoggerSpy) - .logFledgeApiCallStats( - API_NAME_LOGGING_ID, AdServicesStatusUtils.STATUS_UNAUTHORIZED); - verify(mAdServicesLoggerSpy) - .logApiCallStats( - aCallStatForFledgeApiWithStatus( - API_NAME_LOGGING_ID, AdServicesStatusUtils.STATUS_UNAUTHORIZED)); - verifyNoMoreInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerSpy); + verify(mAdServicesLoggerMock) + .logFledgeApiCallStats(eq(API_NAME_LOGGING_ID), eq(STATUS_UNAUTHORIZED), anyInt()); + verifyNoMoreInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerMock); } @Test @@ -160,7 +158,7 @@ public class FledgeAuthorizationFilterTest { mChecker.assertAppDeclaredPermission(CONTEXT, API_NAME_LOGGING_ID); - verifyZeroInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerSpy); + verifyZeroInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerMock); } @Test @@ -175,15 +173,10 @@ public class FledgeAuthorizationFilterTest { assertEquals( AdServicesStatusUtils.SECURITY_EXCEPTION_PERMISSION_NOT_REQUESTED_ERROR_MESSAGE, exception.getMessage()); - verify(mAdServicesLoggerSpy) + verify(mAdServicesLoggerMock) .logFledgeApiCallStats( - API_NAME_LOGGING_ID, AdServicesStatusUtils.STATUS_PERMISSION_NOT_REQUESTED); - verify(mAdServicesLoggerSpy) - .logApiCallStats( - aCallStatForFledgeApiWithStatus( - API_NAME_LOGGING_ID, - AdServicesStatusUtils.STATUS_PERMISSION_NOT_REQUESTED)); - verifyNoMoreInteractions(mAdServicesLoggerSpy); + eq(API_NAME_LOGGING_ID), eq(STATUS_PERMISSION_NOT_REQUESTED), anyInt()); + verifyNoMoreInteractions(mAdServicesLoggerMock); verifyZeroInteractions(mPackageManager, mEnrollmentDao); } @@ -193,7 +186,7 @@ public class FledgeAuthorizationFilterTest { NullPointerException.class, () -> mChecker.assertAppDeclaredPermission(null, API_NAME_LOGGING_ID)); - verifyZeroInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerSpy); + verifyZeroInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerMock); } @Test @@ -204,13 +197,15 @@ public class FledgeAuthorizationFilterTest { when(AppManifestConfigHelper.isAllowedCustomAudiencesAccess( CONTEXT, PACKAGE_NAME, ENROLLMENT_ID)) .thenReturn(true); + when(PhFlags.getInstance()).thenReturn(mPhFlags); + when(mPhFlags.isEnrollmentBlocklisted(ENROLLMENT_ID)).thenReturn(false); mChecker.assertAdTechAllowed( CONTEXT, PACKAGE_NAME, CommonFixture.VALID_BUYER_1, API_NAME_LOGGING_ID); verify(mEnrollmentDao) .getEnrollmentDataForFledgeByAdTechIdentifier(CommonFixture.VALID_BUYER_1); verifyNoMoreInteractions(mEnrollmentDao); - verifyZeroInteractions(mPackageManager, mAdServicesLoggerSpy); + verifyZeroInteractions(mPackageManager, mAdServicesLoggerMock); } @Test @@ -234,15 +229,10 @@ public class FledgeAuthorizationFilterTest { exception.getMessage()); verify(mEnrollmentDao) .getEnrollmentDataForFledgeByAdTechIdentifier(CommonFixture.VALID_BUYER_1); - verify(mAdServicesLoggerSpy) + verify(mAdServicesLoggerMock) .logFledgeApiCallStats( - API_NAME_LOGGING_ID, AdServicesStatusUtils.STATUS_CALLER_NOT_ALLOWED); - verify(mAdServicesLoggerSpy) - .logApiCallStats( - aCallStatForFledgeApiWithStatus( - API_NAME_LOGGING_ID, - AdServicesStatusUtils.STATUS_CALLER_NOT_ALLOWED)); - verifyNoMoreInteractions(mEnrollmentDao, mAdServicesLoggerSpy); + eq(API_NAME_LOGGING_ID), eq(STATUS_CALLER_NOT_ALLOWED), anyInt()); + verifyNoMoreInteractions(mEnrollmentDao, mAdServicesLoggerMock); verifyZeroInteractions(mPackageManager); } @@ -270,19 +260,36 @@ public class FledgeAuthorizationFilterTest { exception.getMessage()); verify(mEnrollmentDao) .getEnrollmentDataForFledgeByAdTechIdentifier(CommonFixture.VALID_BUYER_1); - verify(mAdServicesLoggerSpy) + verify(mAdServicesLoggerMock) .logFledgeApiCallStats( - API_NAME_LOGGING_ID, AdServicesStatusUtils.STATUS_CALLER_NOT_ALLOWED); - verify(mAdServicesLoggerSpy) - .logApiCallStats( - aCallStatForFledgeApiWithStatus( - API_NAME_LOGGING_ID, - AdServicesStatusUtils.STATUS_CALLER_NOT_ALLOWED)); - verifyNoMoreInteractions(mEnrollmentDao, mAdServicesLoggerSpy); + eq(API_NAME_LOGGING_ID), eq(STATUS_CALLER_NOT_ALLOWED), anyInt()); + verifyNoMoreInteractions(mEnrollmentDao, mAdServicesLoggerMock); verifyZeroInteractions(mPackageManager); } @Test + public void testAdTechInBlocklist_throwSecurityException() { + when(mEnrollmentDao.getEnrollmentDataForFledgeByAdTechIdentifier( + CommonFixture.VALID_BUYER_1)) + .thenReturn(ENROLLMENT_DATA); + when(AppManifestConfigHelper.isAllowedCustomAudiencesAccess( + CONTEXT, PACKAGE_NAME, ENROLLMENT_ID)) + .thenReturn(true); + // Add ENROLLMENT_ID to blocklist. + when(PhFlags.getInstance()).thenReturn(mPhFlags); + when(mPhFlags.isEnrollmentBlocklisted(ENROLLMENT_ID)).thenReturn(true); + + assertThrows( + SecurityException.class, + () -> + mChecker.assertAdTechAllowed( + CONTEXT, + PACKAGE_NAME, + CommonFixture.VALID_BUYER_1, + API_NAME_LOGGING_ID)); + } + + @Test public void testAssertAdTechHasPermission_nullContext_throwNpe() { assertThrows( NullPointerException.class, @@ -293,7 +300,7 @@ public class FledgeAuthorizationFilterTest { CommonFixture.VALID_BUYER_1, API_NAME_LOGGING_ID)); - verifyZeroInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerSpy); + verifyZeroInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerMock); } @Test @@ -304,7 +311,7 @@ public class FledgeAuthorizationFilterTest { mChecker.assertAdTechAllowed( CONTEXT, null, CommonFixture.VALID_BUYER_1, API_NAME_LOGGING_ID)); - verifyZeroInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerSpy); + verifyZeroInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerMock); } @Test @@ -315,6 +322,6 @@ public class FledgeAuthorizationFilterTest { mChecker.assertAdTechAllowed( CONTEXT, PACKAGE_NAME, null, API_NAME_LOGGING_ID)); - verifyZeroInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerSpy); + verifyZeroInteractions(mPackageManager, mEnrollmentDao, mAdServicesLoggerMock); } } |