summaryrefslogtreecommitdiff
path: root/adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionServiceImplTest.java
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-11-04 00:41:00 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-11-04 00:41:00 +0000
commit725bf3e2372b8ab29e521e864d28770fdf2c0443 (patch)
treed094f43841ac9dc9c54fd96ffd940b6f71f8ba39 /adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionServiceImplTest.java
parent190c25efdbd5a5bdbb41a2818cf39a05d0ea9be0 (diff)
parent7b99dc653ed133fef81d0423fee87d45299097e2 (diff)
downloadAdServices-725bf3e2372b8ab29e521e864d28770fdf2c0443.tar.gz
Snap for 9254005 from 7b99dc653ed133fef81d0423fee87d45299097e2 to mainline-ipsec-releaseaml_ips_331910010aml_ips_331312000aml_ips_331310000android13-mainline-ipsec-release
Change-Id: Id77860bb313cd5104abdea4a778d197a1db28861
Diffstat (limited to 'adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionServiceImplTest.java')
-rw-r--r--adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionServiceImplTest.java933
1 files changed, 598 insertions, 335 deletions
diff --git a/adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionServiceImplTest.java b/adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionServiceImplTest.java
index abdb5e6f36..4de41741a4 100644
--- a/adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionServiceImplTest.java
+++ b/adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionServiceImplTest.java
@@ -31,12 +31,13 @@ import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICE
import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_API_CALLED__API_NAME__REMOVE_AD_SELECTION_CONFIG_REMOTE_INFO_OVERRIDE;
import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION;
import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_API_CALLED__API_NAME__RESET_ALL_AD_SELECTION_CONFIG_REMOTE_OVERRIDES;
-import static com.android.adservices.stats.FledgeApiCallStatsMatcher.aCallStatForFledgeApiWithStatus;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyInt;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doThrow;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.eq;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
@@ -71,6 +72,7 @@ import androidx.test.core.app.ApplicationProvider;
import com.android.adservices.MockWebServerRuleFactory;
import com.android.adservices.concurrency.AdServicesExecutors;
+import com.android.adservices.data.DbTestUtil;
import com.android.adservices.data.adselection.AdSelectionDatabase;
import com.android.adservices.data.adselection.AdSelectionEntryDao;
import com.android.adservices.data.adselection.CustomAudienceSignals;
@@ -79,6 +81,7 @@ import com.android.adservices.data.adselection.DBAdSelectionOverride;
import com.android.adservices.data.adselection.DBBuyerDecisionLogic;
import com.android.adservices.data.customaudience.CustomAudienceDao;
import com.android.adservices.data.customaudience.CustomAudienceDatabase;
+import com.android.adservices.data.enrollment.EnrollmentDao;
import com.android.adservices.service.Flags;
import com.android.adservices.service.common.AdServicesHttpsClient;
import com.android.adservices.service.common.AppImportanceFilter;
@@ -121,8 +124,10 @@ import java.time.ZoneOffset;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class AdSelectionServiceImplTest {
@@ -152,47 +157,58 @@ public class AdSelectionServiceImplTest {
AD_SERVICES_API_CALLED__API_NAME__REMOVE_AD_SELECTION_CONFIG_REMOTE_INFO_OVERRIDE;
private static final int SHORT_API_NAME_RESET_ALL_OVERRIDES =
AD_SERVICES_API_CALLED__API_NAME__RESET_ALL_AD_SELECTION_CONFIG_REMOTE_OVERRIDES;
+ private static final String TIMEOUT_MESSAGE = "Timed out:";
private final ExecutorService mLightweightExecutorService =
AdServicesExecutors.getLightWeightExecutor();
private final ExecutorService mBackgroundExecutorService =
AdServicesExecutors.getBackgroundExecutor();
+ private final ScheduledThreadPoolExecutor mScheduledExecutor =
+ AdServicesExecutors.getScheduler();
private final String mSellerReportingPath = "/reporting/seller";
private final String mBuyerReportingPath = "/reporting/buyer";
- private final String mFetchJavaScriptPath = "/fetchJavascript/";
+ private final String mFetchJavaScriptPathSeller = "/fetchJavascript/seller";
+ private final String mFetchJavaScriptPathBuyer = "/fetchJavascript/buyer";
private final String mFetchTrustedScoringSignalsPath = "/fetchTrustedSignals/";
private final AdTechIdentifier mContextualSignals =
AdTechIdentifier.fromString("{\"contextual_signals\":1}");
- private static final String TIMEOUT_MESSAGE = "Timed out:";
private final int mBytesPerPeriod = 1;
private final AdServicesHttpsClient mClient =
new AdServicesHttpsClient(AdServicesExecutors.getBlockingExecutor());
- private Flags mFlags = new FlagsWithEnrollmentCheckEnabledSwitch(false);
- private MockitoSession mStaticMockSession = null;
- @Spy private final AdServicesLogger mAdServicesLoggerSpy = AdServicesLoggerImpl.getInstance();
+ private final AdServicesLogger mAdServicesLoggerMock =
+ ExtendedMockito.mock(AdServicesLoggerImpl.class);
+ @Rule public MockWebServerRule mMockWebServerRule = MockWebServerRuleFactory.createForHttps();
+ // This object access some system APIs
+ @Mock public DevContextFilter mDevContextFilter;
+ @Mock public AppImportanceFilter mAppImportanceFilter;
@Spy
FledgeAuthorizationFilter mFledgeAuthorizationFilterSpy =
- FledgeAuthorizationFilter.create(CONTEXT, mAdServicesLoggerSpy);
+ new FledgeAuthorizationFilter(
+ CONTEXT.getPackageManager(),
+ new EnrollmentDao(CONTEXT, DbTestUtil.getDbHelperForTest()),
+ mAdServicesLoggerMock);
+
+ private Flags mFlags = new FlagsWithEnrollmentCheckEnabledSwitch(false);
@Spy
FledgeAllowListsFilter mFledgeAllowListsFilterSpy =
- new FledgeAllowListsFilter(mFlags, mAdServicesLoggerSpy);
+ new FledgeAllowListsFilter(mFlags, mAdServicesLoggerMock);
- @Rule public MockWebServerRule mMockWebServerRule = MockWebServerRuleFactory.createForHttps();
- // This object access some system APIs
- @Mock public DevContextFilter mDevContextFilter;
- @Mock public AppImportanceFilter mAppImportanceFilter;
+ private MockitoSession mStaticMockSession = null;
@Mock private ConsentManager mConsentManagerMock;
private CustomAudienceDao mCustomAudienceDao;
private AdSelectionEntryDao mAdSelectionEntryDao;
private AdSelectionConfig.Builder mAdSelectionConfigBuilder;
+ private Uri mBiddingLogicUri;
+ private CustomAudienceSignals mCustomAudienceSignals;
+
@Before
public void setUp() {
mStaticMockSession =
ExtendedMockito.mockitoSession()
.spyStatic(JSScriptEngine.class)
- // mAdServicesLoggerSpy is not referenced in many tests
+ // mAdServicesLoggerMock is not referenced in many tests
.strictness(Strictness.LENIENT)
.initMocks(this)
.startMocking();
@@ -208,16 +224,36 @@ public class AdSelectionServiceImplTest {
.build()
.adSelectionEntryDao();
+ mBiddingLogicUri = (mMockWebServerRule.uriForPath(mFetchJavaScriptPathBuyer));
+
+ mCustomAudienceSignals =
+ CustomAudienceSignalsFixture.aCustomAudienceSignalsBuilder()
+ .setBuyer(AdTechIdentifier.fromString(mBiddingLogicUri.getHost()))
+ .build();
+
+ Map<AdTechIdentifier, AdSelectionSignals> perBuyerSignals =
+ Map.of(
+ AdTechIdentifier.fromString("test.com"),
+ AdSelectionSignals.fromString("{\"buyer_signals\":1}"),
+ AdTechIdentifier.fromString("test2.com"),
+ AdSelectionSignals.fromString("{\"buyer_signals\":2}"),
+ AdTechIdentifier.fromString("test3.com"),
+ AdSelectionSignals.fromString("{\"buyer_signals\":3}"),
+ AdTechIdentifier.fromString(mBiddingLogicUri.getHost()),
+ AdSelectionSignals.fromString("{\"buyer_signals\":0}"));
+
mAdSelectionConfigBuilder =
AdSelectionConfigFixture.anAdSelectionConfigBuilder()
.setSeller(
AdTechIdentifier.fromString(
mMockWebServerRule
- .uriForPath(mFetchJavaScriptPath)
+ .uriForPath(mFetchJavaScriptPathSeller)
.getHost()))
- .setDecisionLogicUri(mMockWebServerRule.uriForPath(mFetchJavaScriptPath))
+ .setDecisionLogicUri(
+ mMockWebServerRule.uriForPath(mFetchJavaScriptPathSeller))
.setTrustedScoringSignalsUri(
- mMockWebServerRule.uriForPath(mFetchTrustedScoringSignalsPath));
+ mMockWebServerRule.uriForPath(mFetchTrustedScoringSignalsPath))
+ .setPerBuyerSignals(perBuyerSignals);
}
@After
@@ -229,11 +265,13 @@ public class AdSelectionServiceImplTest {
@Test
public void testReportImpressionSuccess() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
+ Uri biddingLogicUri = (mMockWebServerRule.uriForPath(mFetchJavaScriptPathBuyer));
+
String sellerDecisionLogicJs =
"function reportResult(ad_selection_config, render_uri, bid, contextual_signals) {"
+ " \n"
@@ -260,19 +298,16 @@ public class AdSelectionServiceImplTest {
DBBuyerDecisionLogic dbBuyerDecisionLogic =
new DBBuyerDecisionLogic.Builder()
- .setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
+ .setBiddingLogicUri(biddingLogicUri)
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
- .setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
+ .setBiddingLogicUri(biddingLogicUri)
.setWinningAdRenderUri(RENDER_URI)
.setWinningAdBid(BID)
.setCreationTimestamp(ACTIVATION_TIME)
@@ -296,9 +331,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -314,26 +350,23 @@ public class AdSelectionServiceImplTest {
assertTrue(callback.mIsSuccess);
RecordedRequest fetchRequest = server.takeRequest();
- assertEquals(mFetchJavaScriptPath, fetchRequest.getPath());
+ assertEquals(mFetchJavaScriptPathSeller, fetchRequest.getPath());
List<String> notifications =
ImmutableList.of(server.takeRequest().getPath(), server.takeRequest().getPath());
assertThat(notifications).containsExactly(mSellerReportingPath, mBuyerReportingPath);
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION, STATUS_SUCCESS);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_SUCCESS));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_SUCCESS),
+ anyInt());
}
@Test
public void testReportImpressionWithRevokedUserConsentSuccess() throws Exception {
- doReturn(AdServicesApiConsent.REVOKED).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.REVOKED).when(mConsentManagerMock).getConsent();
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -361,13 +394,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -393,9 +423,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -412,20 +443,16 @@ public class AdSelectionServiceImplTest {
assertTrue(callback.mIsSuccess);
assertEquals(0, server.getRequestCount());
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_USER_CONSENT_REVOKED);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_USER_CONSENT_REVOKED));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_USER_CONSENT_REVOKED),
+ anyInt());
}
@Test
public void testReportImpressionFailsWhenReportResultTakesTooLong() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -463,13 +490,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -495,9 +519,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -515,19 +540,16 @@ public class AdSelectionServiceImplTest {
assertEquals(callback.mFledgeErrorResponse.getStatusCode(), STATUS_INTERNAL_ERROR);
assertTrue(callback.mFledgeErrorResponse.getErrorMessage().contains(TIMEOUT_MESSAGE));
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION, STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_INTERNAL_ERROR));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_INTERNAL_ERROR),
+ anyInt());
}
@Test
public void testReportImpressionFailsWhenReportWinTakesTooLong() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -565,13 +587,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -597,9 +616,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -617,19 +637,16 @@ public class AdSelectionServiceImplTest {
assertEquals(callback.mFledgeErrorResponse.getStatusCode(), STATUS_INTERNAL_ERROR);
assertTrue(callback.mFledgeErrorResponse.getErrorMessage().contains(TIMEOUT_MESSAGE));
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION, STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_INTERNAL_ERROR));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_INTERNAL_ERROR),
+ anyInt());
}
@Test
public void testReportImpressionFailsWhenOverallJSTimesOut() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -673,13 +690,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -705,9 +719,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -725,19 +740,16 @@ public class AdSelectionServiceImplTest {
assertEquals(callback.mFledgeErrorResponse.getStatusCode(), STATUS_INTERNAL_ERROR);
assertTrue(callback.mFledgeErrorResponse.getErrorMessage().contains(TIMEOUT_MESSAGE));
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION, STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_INTERNAL_ERROR));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_INTERNAL_ERROR),
+ anyInt());
}
@Test
public void testReportImpressionFailsWhenJSFetchTakesTooLong() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -776,13 +788,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -808,9 +817,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -828,19 +838,16 @@ public class AdSelectionServiceImplTest {
assertEquals(callback.mFledgeErrorResponse.getStatusCode(), STATUS_INTERNAL_ERROR);
assertTrue(callback.mFledgeErrorResponse.getErrorMessage().contains(TIMEOUT_MESSAGE));
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION, STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_INTERNAL_ERROR));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_INTERNAL_ERROR),
+ anyInt());
}
@Test
public void testReportImpressionFailsWithInvalidAdSelectionId() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -874,13 +881,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -906,9 +910,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -926,20 +931,16 @@ public class AdSelectionServiceImplTest {
assertFalse(callback.mIsSuccess);
assertEquals(callback.mFledgeErrorResponse.getStatusCode(), STATUS_INVALID_ARGUMENT);
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_INVALID_ARGUMENT);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_INVALID_ARGUMENT));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_INVALID_ARGUMENT),
+ anyInt());
}
@Test
public void testReportImpressionBadSellerJavascriptFailsWithInternalError() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -973,13 +974,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -1004,9 +1002,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1024,19 +1023,16 @@ public class AdSelectionServiceImplTest {
assertFalse(callback.mIsSuccess);
assertEquals(callback.mFledgeErrorResponse.getStatusCode(), STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION, STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_INTERNAL_ERROR));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_INTERNAL_ERROR),
+ anyInt());
}
@Test
public void testReportImpressionBadBuyerJavascriptFailsWithInternalError() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -1070,13 +1066,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(inValidBuyerDecisionLogicJsMissingCurlyBracket)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -1102,9 +1095,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1122,19 +1116,16 @@ public class AdSelectionServiceImplTest {
assertFalse(callback.mIsSuccess);
assertEquals(callback.mFledgeErrorResponse.getStatusCode(), STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION, STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_INTERNAL_ERROR));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_INTERNAL_ERROR),
+ anyInt());
}
@Test
public void testReportImpressionUseDevOverrideForSellerJS() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -1168,13 +1159,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -1220,9 +1208,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1241,19 +1230,16 @@ public class AdSelectionServiceImplTest {
assertThat(notifications).containsExactly(mSellerReportingPath, mBuyerReportingPath);
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION, STATUS_SUCCESS);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_SUCCESS));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_SUCCESS),
+ anyInt());
}
@Test
public void testOverrideAdSelectionConfigRemoteInfoSuccess() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
DevContext.builder()
@@ -1270,9 +1256,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1294,16 +1281,14 @@ public class AdSelectionServiceImplTest {
adSelectionConfig),
TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy).logFledgeApiCallStats(SHORT_API_NAME_OVERRIDE, STATUS_SUCCESS);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(SHORT_API_NAME_OVERRIDE, STATUS_SUCCESS));
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(eq(SHORT_API_NAME_OVERRIDE), eq(STATUS_SUCCESS), anyInt());
}
@Test
public void testOverrideAdSelectionConfigRemoteInfoWithRevokedUserConsentSuccess()
throws Exception {
- doReturn(AdServicesApiConsent.REVOKED).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.REVOKED).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
@@ -1321,9 +1306,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1345,17 +1331,14 @@ public class AdSelectionServiceImplTest {
adSelectionConfig),
TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy)
- .logFledgeApiCallStats(SHORT_API_NAME_OVERRIDE, STATUS_USER_CONSENT_REVOKED);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- SHORT_API_NAME_OVERRIDE, STATUS_USER_CONSENT_REVOKED));
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(SHORT_API_NAME_OVERRIDE), eq(STATUS_USER_CONSENT_REVOKED), anyInt());
}
@Test
public void testOverrideAdSelectionConfigRemoteInfoFailsWithDevOptionsDisabled() {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(DevContext.createForDevOptionsDisabled());
@@ -1368,9 +1351,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1393,17 +1377,14 @@ public class AdSelectionServiceImplTest {
adSelectionConfig),
TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy)
- .logFledgeApiCallStats(SHORT_API_NAME_OVERRIDE, STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- SHORT_API_NAME_OVERRIDE, STATUS_INTERNAL_ERROR));
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(SHORT_API_NAME_OVERRIDE), eq(STATUS_INTERNAL_ERROR), anyInt());
}
@Test
public void testRemoveAdSelectionConfigRemoteInfoOverrideSuccess() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
DevContext.builder()
@@ -1420,9 +1401,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1455,18 +1437,15 @@ public class AdSelectionServiceImplTest {
mAdSelectionEntryDao.doesAdSelectionOverrideExistForPackageName(
adSelectionConfigId, TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy)
- .logFledgeApiCallStats(SHORT_API_NAME_REMOVE_OVERRIDE, STATUS_SUCCESS);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- SHORT_API_NAME_REMOVE_OVERRIDE, STATUS_SUCCESS));
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(SHORT_API_NAME_REMOVE_OVERRIDE), eq(STATUS_SUCCESS), anyInt());
}
@Test
public void testRemoveAdSelectionConfigRemoteInfoOverrideWithRevokedUserConsentSuccess()
throws Exception {
- doReturn(AdServicesApiConsent.REVOKED).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.REVOKED).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
@@ -1484,9 +1463,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1519,17 +1499,16 @@ public class AdSelectionServiceImplTest {
mAdSelectionEntryDao.doesAdSelectionOverrideExistForPackageName(
adSelectionConfigId, TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy)
- .logFledgeApiCallStats(SHORT_API_NAME_REMOVE_OVERRIDE, STATUS_USER_CONSENT_REVOKED);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- SHORT_API_NAME_REMOVE_OVERRIDE, STATUS_USER_CONSENT_REVOKED));
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(SHORT_API_NAME_REMOVE_OVERRIDE),
+ eq(STATUS_USER_CONSENT_REVOKED),
+ anyInt());
}
@Test
public void testRemoveAdSelectionConfigRemoteInfoOverrideFailsWithDevOptionsDisabled() {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(DevContext.createForDevOptionsDisabled());
@@ -1542,9 +1521,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1576,18 +1556,15 @@ public class AdSelectionServiceImplTest {
mAdSelectionEntryDao.doesAdSelectionOverrideExistForPackageName(
adSelectionConfigId, TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy)
- .logFledgeApiCallStats(SHORT_API_NAME_REMOVE_OVERRIDE, STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- SHORT_API_NAME_REMOVE_OVERRIDE, STATUS_INTERNAL_ERROR));
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(SHORT_API_NAME_REMOVE_OVERRIDE), eq(STATUS_INTERNAL_ERROR), anyInt());
}
@Test
public void testRemoveAdSelectionConfigRemoteInfoOverrideDoesNotDeleteWithIncorrectPackageName()
throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
String incorrectPackageName = "com.google.ppapi.test.incorrect";
when(mDevContextFilter.createDevContext())
@@ -1606,9 +1583,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1641,18 +1619,15 @@ public class AdSelectionServiceImplTest {
mAdSelectionEntryDao.doesAdSelectionOverrideExistForPackageName(
adSelectionConfigId, TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy)
- .logFledgeApiCallStats(SHORT_API_NAME_REMOVE_OVERRIDE, STATUS_SUCCESS);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- SHORT_API_NAME_REMOVE_OVERRIDE, STATUS_SUCCESS));
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(SHORT_API_NAME_REMOVE_OVERRIDE), eq(STATUS_SUCCESS), anyInt());
}
@Test
public void testResetAllAdSelectionConfigRemoteOverridesDoesNotDeleteWithIncorrectPackageName()
throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
String incorrectPackageName = "com.google.ppapi.test.incorrect";
when(mDevContextFilter.createDevContext())
@@ -1671,9 +1646,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1750,17 +1726,14 @@ public class AdSelectionServiceImplTest {
mAdSelectionEntryDao.doesAdSelectionOverrideExistForPackageName(
adSelectionConfigId3, TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy)
- .logFledgeApiCallStats(SHORT_API_NAME_RESET_ALL_OVERRIDES, STATUS_SUCCESS);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- SHORT_API_NAME_RESET_ALL_OVERRIDES, STATUS_SUCCESS));
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(SHORT_API_NAME_RESET_ALL_OVERRIDES), eq(STATUS_SUCCESS), anyInt());
}
@Test
public void testResetAllAdSelectionConfigRemoteOverridesSuccess() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
DevContext.builder()
@@ -1777,9 +1750,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1856,18 +1830,15 @@ public class AdSelectionServiceImplTest {
mAdSelectionEntryDao.doesAdSelectionOverrideExistForPackageName(
adSelectionConfigId3, TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy)
- .logFledgeApiCallStats(SHORT_API_NAME_RESET_ALL_OVERRIDES, STATUS_SUCCESS);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- SHORT_API_NAME_RESET_ALL_OVERRIDES, STATUS_SUCCESS));
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(SHORT_API_NAME_RESET_ALL_OVERRIDES), eq(STATUS_SUCCESS), anyInt());
}
@Test
public void testResetAllAdSelectionConfigRemoteOverridesWithRevokedUserConsentSuccess()
throws Exception {
- doReturn(AdServicesApiConsent.REVOKED).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.REVOKED).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
@@ -1885,9 +1856,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -1964,18 +1936,16 @@ public class AdSelectionServiceImplTest {
mAdSelectionEntryDao.doesAdSelectionOverrideExistForPackageName(
adSelectionConfigId3, TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- SHORT_API_NAME_RESET_ALL_OVERRIDES, STATUS_USER_CONSENT_REVOKED);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- SHORT_API_NAME_RESET_ALL_OVERRIDES, STATUS_USER_CONSENT_REVOKED));
+ eq(SHORT_API_NAME_RESET_ALL_OVERRIDES),
+ eq(STATUS_USER_CONSENT_REVOKED),
+ anyInt());
}
@Test
public void testResetAllAdSelectionConfigRemoteOverridesFailsWithDevOptionsDisabled() {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(DevContext.createForDevOptionsDisabled());
@@ -1988,9 +1958,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2065,12 +2036,11 @@ public class AdSelectionServiceImplTest {
mAdSelectionEntryDao.doesAdSelectionOverrideExistForPackageName(
adSelectionConfigId3, TEST_PACKAGE_NAME));
- verify(mAdServicesLoggerSpy)
- .logFledgeApiCallStats(SHORT_API_NAME_RESET_ALL_OVERRIDES, STATUS_INTERNAL_ERROR);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- SHORT_API_NAME_RESET_ALL_OVERRIDES, STATUS_INTERNAL_ERROR));
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(SHORT_API_NAME_RESET_ALL_OVERRIDES),
+ eq(STATUS_INTERNAL_ERROR),
+ anyInt());
}
@Test
@@ -2087,9 +2057,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2101,7 +2072,7 @@ public class AdSelectionServiceImplTest {
@Test
public void testReportImpressionForegroundCheckEnabledFails_throwsException() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(DevContext.createForDevOptionsDisabled());
@@ -2122,9 +2093,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2151,7 +2123,7 @@ public class AdSelectionServiceImplTest {
@Test
public void testReportImpressionForegroundCheckDisabled_acceptBackgroundApp() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(DevContext.createForDevOptionsDisabled());
@@ -2178,9 +2150,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
FlagsWithOverriddenFledgeChecks.createFlagsWithFledgeChecksDisabled(),
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2205,7 +2178,7 @@ public class AdSelectionServiceImplTest {
@Test
public void testOverrideAdSelectionForegroundCheckEnabledFails_throwsException()
throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
@@ -2230,9 +2203,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2260,9 +2234,9 @@ public class AdSelectionServiceImplTest {
@Test
public void testOverrideAdSelectionForegroundCheckDisabled_acceptBackgroundApp()
throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
@@ -2287,9 +2261,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
FlagsWithOverriddenFledgeChecks.createFlagsWithFledgeChecksDisabled(),
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2309,7 +2284,7 @@ public class AdSelectionServiceImplTest {
@Test
public void testRemoveOverrideForegroundCheckEnabledFails_throwsException() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
@@ -2333,9 +2308,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2358,7 +2334,7 @@ public class AdSelectionServiceImplTest {
@Test
public void testRemoveOverrideForegroundCheckDisabled_acceptBackgroundApp() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
@@ -2382,9 +2358,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
FlagsWithOverriddenFledgeChecks.createFlagsWithFledgeChecksDisabled(),
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2401,7 +2378,7 @@ public class AdSelectionServiceImplTest {
@Test
public void testResetAllOverridesForegroundCheckEnabledFails_throwsException()
throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
@@ -2425,9 +2402,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2448,7 +2426,7 @@ public class AdSelectionServiceImplTest {
@Test
public void testResetAllOverridesForegroundCheckDisabled_acceptBackgroundApp()
throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
when(mDevContextFilter.createDevContext())
.thenReturn(
@@ -2472,9 +2450,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
FlagsWithOverriddenFledgeChecks.createFlagsWithFledgeChecksDisabled(),
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2487,7 +2466,7 @@ public class AdSelectionServiceImplTest {
@Test
public void testReportImpressionFailsWithInvalidPackageName() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
String otherPackageName = CommonFixture.TEST_PACKAGE_NAME + "incorrectPackage";
@@ -2523,13 +2502,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -2555,9 +2531,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2582,7 +2559,7 @@ public class AdSelectionServiceImplTest {
@Test
public void testReportImpressionFailsWhenAppCannotUsePPApi() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
doThrow(new FledgeAuthorizationFilter.AdTechNotAllowedException())
.when(mFledgeAllowListsFilterSpy)
.assertAppCanUsePpapi(
@@ -2621,13 +2598,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -2653,9 +2627,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2676,20 +2651,16 @@ public class AdSelectionServiceImplTest {
callback.mFledgeErrorResponse.getErrorMessage());
// TODO(b/242139312): Remove atLeastOnce once this the double logging is addressed
- Mockito.verify(mAdServicesLoggerSpy, Mockito.atLeastOnce())
+ Mockito.verify(mAdServicesLoggerMock, Mockito.atLeastOnce())
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_CALLER_NOT_ALLOWED);
- verify(mAdServicesLoggerSpy, Mockito.atLeastOnce())
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_CALLER_NOT_ALLOWED));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_CALLER_NOT_ALLOWED),
+ anyInt());
}
@Test
public void testReportImpressionFailsWhenAdTechFailsEnrollmentCheck() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
// Reset flags to perform enrollment check
mFlags = new FlagsWithEnrollmentCheckEnabledSwitch(true);
@@ -2727,13 +2698,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -2759,9 +2727,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2782,20 +2751,16 @@ public class AdSelectionServiceImplTest {
callback.mFledgeErrorResponse.getErrorMessage());
// TODO(b/242139312): Remove atLeastOnce once this the double logging is addressed
- Mockito.verify(mAdServicesLoggerSpy, Mockito.atLeastOnce())
+ Mockito.verify(mAdServicesLoggerMock, Mockito.atLeastOnce())
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_CALLER_NOT_ALLOWED);
- verify(mAdServicesLoggerSpy, Mockito.atLeastOnce())
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_CALLER_NOT_ALLOWED));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_CALLER_NOT_ALLOWED),
+ anyInt());
}
@Test
public void testReportImpressionSucceedsWhenAdTechPassesEnrollmentCheck() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
// Reset flags to perform enrollment check
mFlags = new FlagsWithEnrollmentCheckEnabledSwitch(true);
@@ -2833,13 +2798,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -2873,9 +2835,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -2891,21 +2854,18 @@ public class AdSelectionServiceImplTest {
assertTrue(callback.mIsSuccess);
RecordedRequest fetchRequest = server.takeRequest();
- assertEquals(mFetchJavaScriptPath, fetchRequest.getPath());
+ assertEquals(mFetchJavaScriptPathSeller, fetchRequest.getPath());
List<String> notifications =
ImmutableList.of(server.takeRequest().getPath(), server.takeRequest().getPath());
assertThat(notifications).containsExactly(mSellerReportingPath, mBuyerReportingPath);
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION, STATUS_SUCCESS);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_SUCCESS));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_SUCCESS),
+ anyInt());
}
private AdSelectionOverrideTestCallback callAddOverride(
@@ -2924,7 +2884,9 @@ public class AdSelectionServiceImplTest {
resultLatch.countDown();
return null;
};
- doAnswer(countDownAnswer).when(mAdServicesLoggerSpy).logApiCallStats(any());
+ doAnswer(countDownAnswer)
+ .when(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(anyInt(), anyInt(), anyInt());
adSelectionService.overrideAdSelectionConfigRemoteInfo(
adSelectionConfig, decisionLogicJS, trustedScoringSignals, callback);
@@ -2945,7 +2907,9 @@ public class AdSelectionServiceImplTest {
resultLatch.countDown();
return null;
};
- doAnswer(countDownAnswer).when(mAdServicesLoggerSpy).logApiCallStats(any());
+ doAnswer(countDownAnswer)
+ .when(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(anyInt(), anyInt(), anyInt());
adSelectionService.removeAdSelectionConfigRemoteInfoOverride(adSelectionConfig, callback);
resultLatch.await();
@@ -2954,7 +2918,7 @@ public class AdSelectionServiceImplTest {
@Test
public void testAdSelectionConfigInvalidSellerAndSellerUris() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -2982,13 +2946,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -3016,9 +2977,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
mFlags,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -3038,20 +3000,16 @@ public class AdSelectionServiceImplTest {
assertEquals(
"Error response code mismatch", STATUS_INVALID_ARGUMENT, response.getStatusCode());
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_INVALID_ARGUMENT);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_INVALID_ARGUMENT));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_INVALID_ARGUMENT),
+ anyInt());
}
@Test
public void testReportImpressionSuccessThrottledSubsequentCallFailure() throws Exception {
- doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent(any());
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
@@ -3086,13 +3044,10 @@ public class AdSelectionServiceImplTest {
.setBuyerDecisionLogicJs(buyerDecisionLogicJs)
.build();
- CustomAudienceSignals customAudienceSignals =
- CustomAudienceSignalsFixture.aCustomAudienceSignals();
-
DBAdSelection dbAdSelection =
new DBAdSelection.Builder()
.setAdSelectionId(AD_SELECTION_ID)
- .setCustomAudienceSignals(customAudienceSignals)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
.setContextualSignals(mContextualSignals.toString())
.setBiddingLogicUri(BUYER_BIDDING_LOGIC_URI)
.setWinningAdRenderUri(RENDER_URI)
@@ -3157,9 +3112,10 @@ public class AdSelectionServiceImplTest {
mAppImportanceFilter,
mLightweightExecutorService,
mBackgroundExecutorService,
+ mScheduledExecutor,
CONTEXT,
mConsentManagerMock,
- mAdServicesLoggerSpy,
+ mAdServicesLoggerMock,
flagsWithThrottling,
CallingAppUidSupplierProcessImpl.create(),
mFledgeAuthorizationFilterSpy,
@@ -3182,16 +3138,13 @@ public class AdSelectionServiceImplTest {
assertTrue(callbackFirstCall.mIsSuccess);
RecordedRequest fetchRequest = server.takeRequest();
- assertEquals(mFetchJavaScriptPath, fetchRequest.getPath());
+ assertEquals(mFetchJavaScriptPathSeller, fetchRequest.getPath());
- verify(mAdServicesLoggerSpy)
+ verify(mAdServicesLoggerMock)
.logFledgeApiCallStats(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION, STATUS_SUCCESS);
- verify(mAdServicesLoggerSpy)
- .logApiCallStats(
- aCallStatForFledgeApiWithStatus(
- AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION,
- STATUS_SUCCESS));
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_SUCCESS),
+ anyInt());
assertFalse(callbackSubsequentCall.mIsSuccess);
assertEquals(
@@ -3203,6 +3156,312 @@ public class AdSelectionServiceImplTest {
resetThrottlerToNoRateLimits();
}
+ @Test
+ public void testReportImpressionDoestNotReportWhenUrisDoNotMatchDomain() throws Exception {
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
+
+ // Instantiate a server with different domain from buyer and seller for reporting
+ MockWebServer reportingServer = new MockWebServer();
+ reportingServer.play();
+ Uri sellerReportingUri = Uri.parse(reportingServer.getUrl(mSellerReportingPath).toString());
+ Uri buyerReportingUri = Uri.parse(reportingServer.getUrl(mBuyerReportingPath).toString());
+
+ Uri biddingLogicUri = (mMockWebServerRule.uriForPath(mFetchJavaScriptPathBuyer));
+
+ String sellerDecisionLogicJs =
+ "function reportResult(ad_selection_config, render_uri, bid, contextual_signals) {"
+ + " \n"
+ + " return {'status': 0, 'results': {'signals_for_buyer':"
+ + " '{\"signals_for_buyer\":1}', 'reporting_uri': '"
+ + sellerReportingUri
+ + "' } };\n"
+ + "}";
+
+ String buyerDecisionLogicJs =
+ "function reportWin(ad_selection_signals, per_buyer_signals, signals_for_buyer,"
+ + " contextual_signals, custom_audience_signals) { \n"
+ + " return {'status': 0, 'results': {'reporting_uri': '"
+ + buyerReportingUri
+ + "' } };\n"
+ + "}";
+
+ MockWebServer server =
+ mMockWebServerRule.startMockWebServer(
+ List.of(new MockResponse().setBody(sellerDecisionLogicJs)));
+
+ DBBuyerDecisionLogic dbBuyerDecisionLogic =
+ new DBBuyerDecisionLogic.Builder()
+ .setBiddingLogicUri(biddingLogicUri)
+ .setBuyerDecisionLogicJs(buyerDecisionLogicJs)
+ .build();
+
+ DBAdSelection dbAdSelection =
+ new DBAdSelection.Builder()
+ .setAdSelectionId(AD_SELECTION_ID)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
+ .setContextualSignals(mContextualSignals.toString())
+ .setBiddingLogicUri(biddingLogicUri)
+ .setWinningAdRenderUri(RENDER_URI)
+ .setWinningAdBid(BID)
+ .setCreationTimestamp(ACTIVATION_TIME)
+ .setCallerPackageName(CommonFixture.TEST_PACKAGE_NAME)
+ .build();
+
+ mAdSelectionEntryDao.persistAdSelection(dbAdSelection);
+ mAdSelectionEntryDao.persistBuyerDecisionLogic(dbBuyerDecisionLogic);
+
+ AdSelectionConfig adSelectionConfig = mAdSelectionConfigBuilder.build();
+
+ when(mDevContextFilter.createDevContext())
+ .thenReturn(DevContext.createForDevOptionsDisabled());
+
+ AdSelectionServiceImpl adSelectionService =
+ new AdSelectionServiceImpl(
+ mAdSelectionEntryDao,
+ mCustomAudienceDao,
+ mClient,
+ mDevContextFilter,
+ mAppImportanceFilter,
+ mLightweightExecutorService,
+ mBackgroundExecutorService,
+ mScheduledExecutor,
+ CONTEXT,
+ mConsentManagerMock,
+ mAdServicesLoggerMock,
+ mFlags,
+ CallingAppUidSupplierProcessImpl.create(),
+ mFledgeAuthorizationFilterSpy,
+ mFledgeAllowListsFilterSpy);
+
+ ReportImpressionInput input =
+ new ReportImpressionInput.Builder()
+ .setAdSelectionId(AD_SELECTION_ID)
+ .setAdSelectionConfig(adSelectionConfig)
+ .setCallerPackageName(TEST_PACKAGE_NAME)
+ .build();
+ ReportImpressionTestCallback callback = callReportImpression(adSelectionService, input);
+ assertTrue(callback.mIsSuccess);
+ RecordedRequest fetchRequest = server.takeRequest();
+ assertEquals(mFetchJavaScriptPathSeller, fetchRequest.getPath());
+
+ // Assert that reporting didn't happen
+ assertEquals(reportingServer.getRequestCount(), 0);
+
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_SUCCESS),
+ anyInt());
+ }
+
+ @Test
+ public void testReportImpressionOnlyReportsBuyerWhenSellerReportingUriDoesNotMatchDomain()
+ throws Exception {
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
+
+ Uri buyerReportingUri = mMockWebServerRule.uriForPath(mBuyerReportingPath);
+
+ // Instantiate a server with a different domain than seller
+ MockWebServer sellerServer = new MockWebServer();
+ sellerServer.play();
+ Uri sellerReportingUri = Uri.parse(sellerServer.getUrl(mSellerReportingPath).toString());
+
+ Uri biddingLogicUri = (mMockWebServerRule.uriForPath(mFetchJavaScriptPathBuyer));
+
+ String sellerDecisionLogicJs =
+ "function reportResult(ad_selection_config, render_uri, bid, contextual_signals) {"
+ + " \n"
+ + " return {'status': 0, 'results': {'signals_for_buyer':"
+ + " '{\"signals_for_buyer\":1}', 'reporting_uri': '"
+ + sellerReportingUri
+ + "' } };\n"
+ + "}";
+
+ String buyerDecisionLogicJs =
+ "function reportWin(ad_selection_signals, per_buyer_signals, signals_for_buyer,"
+ + " contextual_signals, custom_audience_signals) { \n"
+ + " return {'status': 0, 'results': {'reporting_uri': '"
+ + buyerReportingUri
+ + "' } };\n"
+ + "}";
+
+ MockWebServer server =
+ mMockWebServerRule.startMockWebServer(
+ List.of(
+ new MockResponse().setBody(sellerDecisionLogicJs),
+ new MockResponse()));
+
+ DBBuyerDecisionLogic dbBuyerDecisionLogic =
+ new DBBuyerDecisionLogic.Builder()
+ .setBiddingLogicUri(biddingLogicUri)
+ .setBuyerDecisionLogicJs(buyerDecisionLogicJs)
+ .build();
+
+ DBAdSelection dbAdSelection =
+ new DBAdSelection.Builder()
+ .setAdSelectionId(AD_SELECTION_ID)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
+ .setContextualSignals(mContextualSignals.toString())
+ .setBiddingLogicUri(biddingLogicUri)
+ .setWinningAdRenderUri(RENDER_URI)
+ .setWinningAdBid(BID)
+ .setCreationTimestamp(ACTIVATION_TIME)
+ .setCallerPackageName(CommonFixture.TEST_PACKAGE_NAME)
+ .build();
+
+ mAdSelectionEntryDao.persistAdSelection(dbAdSelection);
+ mAdSelectionEntryDao.persistBuyerDecisionLogic(dbBuyerDecisionLogic);
+
+ AdSelectionConfig adSelectionConfig = mAdSelectionConfigBuilder.build();
+
+ when(mDevContextFilter.createDevContext())
+ .thenReturn(DevContext.createForDevOptionsDisabled());
+
+ AdSelectionServiceImpl adSelectionService =
+ new AdSelectionServiceImpl(
+ mAdSelectionEntryDao,
+ mCustomAudienceDao,
+ mClient,
+ mDevContextFilter,
+ mAppImportanceFilter,
+ mLightweightExecutorService,
+ mBackgroundExecutorService,
+ mScheduledExecutor,
+ CONTEXT,
+ mConsentManagerMock,
+ mAdServicesLoggerMock,
+ mFlags,
+ CallingAppUidSupplierProcessImpl.create(),
+ mFledgeAuthorizationFilterSpy,
+ mFledgeAllowListsFilterSpy);
+
+ ReportImpressionInput input =
+ new ReportImpressionInput.Builder()
+ .setAdSelectionId(AD_SELECTION_ID)
+ .setAdSelectionConfig(adSelectionConfig)
+ .setCallerPackageName(TEST_PACKAGE_NAME)
+ .build();
+ ReportImpressionTestCallback callback = callReportImpression(adSelectionService, input);
+ assertTrue(callback.mIsSuccess);
+ RecordedRequest fetchRequest = server.takeRequest();
+ assertEquals(mFetchJavaScriptPathSeller, fetchRequest.getPath());
+
+ assertEquals(mBuyerReportingPath, server.takeRequest().getPath());
+
+ // Assert that buyer reporting didn't happen
+ assertEquals(sellerServer.getRequestCount(), 0);
+
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_SUCCESS),
+ anyInt());
+ }
+
+ @Test
+ public void testReportImpressionOnlyReportsSellerWhenBuyerReportingUriDoesNotMatchDomain()
+ throws Exception {
+ doReturn(AdServicesApiConsent.GIVEN).when(mConsentManagerMock).getConsent();
+
+ Uri sellerReportingUri = mMockWebServerRule.uriForPath(mSellerReportingPath);
+
+ // Instantiate a server with a different domain than buyer
+ MockWebServer buyerServer = new MockWebServer();
+ buyerServer.play();
+ Uri buyerReportingUri = Uri.parse(buyerServer.getUrl(mBuyerReportingPath).toString());
+
+ Uri biddingLogicUri = (mMockWebServerRule.uriForPath(mFetchJavaScriptPathBuyer));
+
+ String sellerDecisionLogicJs =
+ "function reportResult(ad_selection_config, render_uri, bid, contextual_signals) {"
+ + " \n"
+ + " return {'status': 0, 'results': {'signals_for_buyer':"
+ + " '{\"signals_for_buyer\":1}', 'reporting_uri': '"
+ + sellerReportingUri
+ + "' } };\n"
+ + "}";
+
+ String buyerDecisionLogicJs =
+ "function reportWin(ad_selection_signals, per_buyer_signals, signals_for_buyer,"
+ + " contextual_signals, custom_audience_signals) { \n"
+ + " return {'status': 0, 'results': {'reporting_uri': '"
+ + buyerReportingUri
+ + "' } };\n"
+ + "}";
+
+ MockWebServer server =
+ mMockWebServerRule.startMockWebServer(
+ List.of(
+ new MockResponse().setBody(sellerDecisionLogicJs),
+ new MockResponse()));
+
+ DBBuyerDecisionLogic dbBuyerDecisionLogic =
+ new DBBuyerDecisionLogic.Builder()
+ .setBiddingLogicUri(biddingLogicUri)
+ .setBuyerDecisionLogicJs(buyerDecisionLogicJs)
+ .build();
+
+ DBAdSelection dbAdSelection =
+ new DBAdSelection.Builder()
+ .setAdSelectionId(AD_SELECTION_ID)
+ .setCustomAudienceSignals(mCustomAudienceSignals)
+ .setContextualSignals(mContextualSignals.toString())
+ .setBiddingLogicUri(biddingLogicUri)
+ .setWinningAdRenderUri(RENDER_URI)
+ .setWinningAdBid(BID)
+ .setCreationTimestamp(ACTIVATION_TIME)
+ .setCallerPackageName(CommonFixture.TEST_PACKAGE_NAME)
+ .build();
+
+ mAdSelectionEntryDao.persistAdSelection(dbAdSelection);
+ mAdSelectionEntryDao.persistBuyerDecisionLogic(dbBuyerDecisionLogic);
+
+ AdSelectionConfig adSelectionConfig = mAdSelectionConfigBuilder.build();
+
+ when(mDevContextFilter.createDevContext())
+ .thenReturn(DevContext.createForDevOptionsDisabled());
+
+ AdSelectionServiceImpl adSelectionService =
+ new AdSelectionServiceImpl(
+ mAdSelectionEntryDao,
+ mCustomAudienceDao,
+ mClient,
+ mDevContextFilter,
+ mAppImportanceFilter,
+ mLightweightExecutorService,
+ mBackgroundExecutorService,
+ mScheduledExecutor,
+ CONTEXT,
+ mConsentManagerMock,
+ mAdServicesLoggerMock,
+ mFlags,
+ CallingAppUidSupplierProcessImpl.create(),
+ mFledgeAuthorizationFilterSpy,
+ mFledgeAllowListsFilterSpy);
+
+ ReportImpressionInput input =
+ new ReportImpressionInput.Builder()
+ .setAdSelectionId(AD_SELECTION_ID)
+ .setAdSelectionConfig(adSelectionConfig)
+ .setCallerPackageName(TEST_PACKAGE_NAME)
+ .build();
+ ReportImpressionTestCallback callback = callReportImpression(adSelectionService, input);
+ assertTrue(callback.mIsSuccess);
+ RecordedRequest fetchRequest = server.takeRequest();
+ assertEquals(mFetchJavaScriptPathSeller, fetchRequest.getPath());
+
+ assertEquals(mSellerReportingPath, server.takeRequest().getPath());
+
+ // Assert that buyer reporting didn't happen
+ assertEquals(buyerServer.getRequestCount(), 0);
+
+ verify(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(
+ eq(AD_SERVICES_API_CALLED__API_NAME__REPORT_IMPRESSION),
+ eq(STATUS_SUCCESS),
+ anyInt());
+ }
+
/**
* Given Throttler is singleton, & shared across tests, this method should be invoked after
* tests that impose restrictive rate limits.
@@ -3225,7 +3484,9 @@ public class AdSelectionServiceImplTest {
resultLatch.countDown();
return null;
};
- doAnswer(countDownAnswer).when(mAdServicesLoggerSpy).logApiCallStats(any());
+ doAnswer(countDownAnswer)
+ .when(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(anyInt(), anyInt(), anyInt());
adSelectionService.resetAllAdSelectionConfigRemoteOverrides(callback);
resultLatch.await();
@@ -3245,7 +3506,9 @@ public class AdSelectionServiceImplTest {
resultLatch.countDown();
return null;
};
- doAnswer(countDownAnswer).when(mAdServicesLoggerSpy).logApiCallStats(any());
+ doAnswer(countDownAnswer)
+ .when(mAdServicesLoggerMock)
+ .logFledgeApiCallStats(anyInt(), anyInt(), anyInt());
adSelectionService.reportImpression(requestParams, callback);
resultLatch.await();