blob: 7e3e358d9e6cdf7a810f170bce3342b1f9a5cc95 [file] [log] [blame]
/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.adservices.service.adselection;
import static org.junit.Assert.assertEquals;
import android.adservices.adselection.AdWithBid;
import android.adservices.adselection.SignedContextualAds;
import android.adservices.adselection.SignedContextualAdsFixture;
import android.adservices.common.AdData;
import android.adservices.common.AdDataFixture;
import android.adservices.common.AdFilters;
import android.adservices.common.AppInstallFilters;
import android.adservices.common.CommonFixture;
import com.android.adservices.customaudience.DBCustomAudienceFixture;
import com.android.adservices.data.customaudience.DBCustomAudience;
import com.google.common.collect.ImmutableList;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@RunWith(MockitoJUnitRunner.class)
public class AdFiltererNoOpImplTest {
private static final AdData.Builder AD_DATA_BUILDER =
AdDataFixture.getValidFilterAdDataBuilderByBuyer(CommonFixture.VALID_BUYER_1, 0);
private static final SignedContextualAds.Builder CONTEXTUAL_ADS_BUILDER =
SignedContextualAdsFixture.aSignedContextualAdBuilder()
.setAdsWithBid(ImmutableList.of(new AdWithBid(AD_DATA_BUILDER.build(), 1.0)))
.setBuyer(CommonFixture.VALID_BUYER_1)
.setDecisionLogicUri(
CommonFixture.getUri(CommonFixture.VALID_BUYER_1, "/decisionPath/"));
private AdFilterer mAdFilterer;
@Before
public void setup() {
mAdFilterer = new AdFiltererNoOpImpl();
}
@Test
public void testFilterNullAdFilters() {
final AdData adData = AD_DATA_BUILDER.setAdFilters(null).build();
final SignedContextualAds contextualAds =
CONTEXTUAL_ADS_BUILDER
.setAdsWithBid(ImmutableList.of(new AdWithBid(adData, 1.0)))
.build();
assertEquals(contextualAds, mAdFilterer.filterContextualAds(contextualAds));
}
@Test
public void testFilterNullComponentFilters() {
final AdData adData =
AD_DATA_BUILDER
.setAdFilters(
new AdFilters.Builder()
.setAppInstallFilters(null)
.setFrequencyCapFilters(null)
.build())
.build();
final SignedContextualAds contextualAds =
CONTEXTUAL_ADS_BUILDER
.setAdsWithBid(ImmutableList.of(new AdWithBid(adData, 1.0)))
.build();
assertEquals(contextualAds, mAdFilterer.filterContextualAds(contextualAds));
}
@Test
public void testAppInstallFilter() {
AppInstallFilters appFilters =
new AppInstallFilters.Builder()
.setPackageNames(Collections.singleton(CommonFixture.TEST_PACKAGE_NAME_1))
.build();
final AdData adData =
AD_DATA_BUILDER
.setAdFilters(
new AdFilters.Builder().setAppInstallFilters(appFilters).build())
.build();
final SignedContextualAds contextualAds =
CONTEXTUAL_ADS_BUILDER
.setAdsWithBid(ImmutableList.of(new AdWithBid(adData, 1.0)))
.build();
assertEquals(contextualAds, mAdFilterer.filterContextualAds(contextualAds));
}
@Test
public void testMultipleApps() {
AppInstallFilters appFilters =
new AppInstallFilters.Builder()
.setPackageNames(
new HashSet<>(
Arrays.asList(
CommonFixture.TEST_PACKAGE_NAME_1,
CommonFixture.TEST_PACKAGE_NAME_2)))
.build();
final AdData adData =
AD_DATA_BUILDER
.setAdFilters(
new AdFilters.Builder().setAppInstallFilters(appFilters).build())
.build();
final SignedContextualAds contextualAds =
CONTEXTUAL_ADS_BUILDER
.setAdsWithBid(ImmutableList.of(new AdWithBid(adData, 1.0)))
.build();
assertEquals(contextualAds, mAdFilterer.filterContextualAds(contextualAds));
}
@Test
public void testMultipleAds() {
AppInstallFilters appFilters1 =
new AppInstallFilters.Builder()
.setPackageNames(
new HashSet<>(Arrays.asList(CommonFixture.TEST_PACKAGE_NAME_1)))
.build();
AppInstallFilters appFilters2 =
new AppInstallFilters.Builder()
.setPackageNames(
new HashSet<>(Arrays.asList(CommonFixture.TEST_PACKAGE_NAME_2)))
.build();
final AdData adData1 =
AD_DATA_BUILDER
.setAdFilters(
new AdFilters.Builder().setAppInstallFilters(appFilters1).build())
.build();
final AdData adData2 =
AD_DATA_BUILDER
.setAdFilters(
new AdFilters.Builder().setAppInstallFilters(appFilters2).build())
.build();
final SignedContextualAds contextualAds =
CONTEXTUAL_ADS_BUILDER
.setAdsWithBid(
ImmutableList.of(
new AdWithBid(adData1, 1.0), new AdWithBid(adData2, 2.0)))
.build();
assertEquals(contextualAds, mAdFilterer.filterContextualAds(contextualAds));
}
@Test
public void testFilterOnCustomAudience() {
List<DBCustomAudience> caList =
DBCustomAudienceFixture.getListOfBuyersCustomAudiences(
Arrays.asList(CommonFixture.VALID_BUYER_1, CommonFixture.VALID_BUYER_2));
assertEquals(caList, mAdFilterer.filterCustomAudiences(caList));
}
}