• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.adservices.customaudience;
18 
19 import android.adservices.common.AdDataFixture;
20 import android.adservices.common.AdSelectionSignals;
21 import android.adservices.common.AdTechIdentifier;
22 import android.adservices.common.CommonFixture;
23 import android.net.Uri;
24 
25 import java.time.Duration;
26 import java.time.Instant;
27 
28 /** Utility class supporting custom audience API unit tests */
29 public final class CustomAudienceFixture {
30 
31     public static final Duration CUSTOM_AUDIENCE_MAX_ACTIVATION_DELAY_IN =
32             Duration.ofMillis(
33                     CommonFixture.FLAGS_FOR_TEST.getFledgeCustomAudienceMaxActivationDelayInMs());
34     public static final Duration CUSTOM_AUDIENCE_MAX_EXPIRE_IN =
35             Duration.ofMillis(CommonFixture.FLAGS_FOR_TEST.getFledgeCustomAudienceMaxExpireInMs());
36     public static final Duration CUSTOM_AUDIENCE_DEFAULT_EXPIRE_IN =
37             Duration.ofMillis(
38                     CommonFixture.FLAGS_FOR_TEST.getFledgeCustomAudienceDefaultExpireInMs());
39     public static final long DAY_IN_SECONDS = 60 * 60 * 24;
40 
41     public static final String VALID_OWNER = CommonFixture.TEST_PACKAGE_NAME;
42     public static final String VALID_NAME = "testCustomAudienceName";
43 
44     public static final Instant VALID_ACTIVATION_TIME =
45             CommonFixture.FIXED_NOW_TRUNCATED_TO_MILLI;
46     public static final Instant VALID_DELAYED_ACTIVATION_TIME =
47             CommonFixture.FIXED_NOW_TRUNCATED_TO_MILLI.plus(
48                     CUSTOM_AUDIENCE_MAX_ACTIVATION_DELAY_IN.dividedBy(2));
49     public static final Instant INVALID_DELAYED_ACTIVATION_TIME =
50             CommonFixture.FIXED_NOW_TRUNCATED_TO_MILLI.plus(
51                     CUSTOM_AUDIENCE_MAX_ACTIVATION_DELAY_IN.multipliedBy(2));
52 
53     public static final Instant VALID_EXPIRATION_TIME =
54             VALID_ACTIVATION_TIME.plus(CUSTOM_AUDIENCE_DEFAULT_EXPIRE_IN);
55     public static final Instant VALID_DELAYED_EXPIRATION_TIME =
56             VALID_DELAYED_ACTIVATION_TIME.plusSeconds(DAY_IN_SECONDS);
57     public static final Instant INVALID_BEFORE_NOW_EXPIRATION_TIME =
58             VALID_ACTIVATION_TIME.minusSeconds(DAY_IN_SECONDS);
59     public static final Instant INVALID_NOW_EXPIRATION_TIME =
60             CommonFixture.FIXED_NOW_TRUNCATED_TO_MILLI.minusSeconds(DAY_IN_SECONDS);
61     public static final Instant INVALID_BEFORE_DELAYED_EXPIRATION_TIME =
62             VALID_DELAYED_ACTIVATION_TIME.minusSeconds(DAY_IN_SECONDS);
63     public static final Instant INVALID_BEYOND_MAX_EXPIRATION_TIME =
64             VALID_ACTIVATION_TIME.plus(CUSTOM_AUDIENCE_MAX_EXPIRE_IN.multipliedBy(2));
65     public static final Instant VALID_LAST_UPDATE_TIME_24_HRS_BEFORE =
66             CommonFixture.FIXED_NOW_TRUNCATED_TO_MILLI.minusSeconds(DAY_IN_SECONDS);
67     public static final Instant INVALID_LAST_UPDATE_TIME_72_DAYS_BEFORE =
68             CommonFixture.FIXED_NOW_TRUNCATED_TO_MILLI.minusSeconds(DAY_IN_SECONDS * 72);
69 
70     public static final AdSelectionSignals VALID_USER_BIDDING_SIGNALS =
71             AdSelectionSignals.fromString("{'valid': 'yep', 'opaque': 'definitely'}");
72 
getValidDailyUpdateUriByBuyer(AdTechIdentifier buyer)73     public static Uri getValidDailyUpdateUriByBuyer(AdTechIdentifier buyer) {
74         return CommonFixture.getUri(buyer, "/update");
75     }
76 
getValidBiddingLogicUriByBuyer(AdTechIdentifier buyer)77     public static Uri getValidBiddingLogicUriByBuyer(AdTechIdentifier buyer) {
78         return CommonFixture.getUri(buyer, "/bidding/logic/here/");
79     }
80 
getValidBuilderForBuyer(AdTechIdentifier buyer)81     public static CustomAudience.Builder getValidBuilderForBuyer(AdTechIdentifier buyer) {
82         return new CustomAudience.Builder()
83                 .setBuyer(buyer)
84                 .setName(CustomAudienceFixture.VALID_NAME)
85                 .setActivationTime(CustomAudienceFixture.VALID_ACTIVATION_TIME)
86                 .setExpirationTime(CustomAudienceFixture.VALID_EXPIRATION_TIME)
87                 .setDailyUpdateUri(CustomAudienceFixture.getValidDailyUpdateUriByBuyer(buyer))
88                 .setUserBiddingSignals(CustomAudienceFixture.VALID_USER_BIDDING_SIGNALS)
89                 .setTrustedBiddingData(
90                         TrustedBiddingDataFixture.getValidTrustedBiddingDataByBuyer(buyer))
91                 .setBiddingLogicUri(CustomAudienceFixture.getValidBiddingLogicUriByBuyer(buyer))
92                 .setAds(AdDataFixture.getValidAdsByBuyer(buyer));
93     }
94 
95     // TODO(b/266837113) Merge with getValidBuilderForBuyer once filters are unhidden
getValidBuilderForBuyerFilters(AdTechIdentifier buyer)96     public static CustomAudience.Builder getValidBuilderForBuyerFilters(AdTechIdentifier buyer) {
97         return new CustomAudience.Builder()
98                 .setBuyer(buyer)
99                 .setName(CustomAudienceFixture.VALID_NAME)
100                 .setActivationTime(CustomAudienceFixture.VALID_ACTIVATION_TIME)
101                 .setExpirationTime(CustomAudienceFixture.VALID_EXPIRATION_TIME)
102                 .setDailyUpdateUri(CustomAudienceFixture.getValidDailyUpdateUriByBuyer(buyer))
103                 .setUserBiddingSignals(CustomAudienceFixture.VALID_USER_BIDDING_SIGNALS)
104                 .setTrustedBiddingData(
105                         TrustedBiddingDataFixture.getValidTrustedBiddingDataByBuyer(buyer))
106                 .setBiddingLogicUri(CustomAudienceFixture.getValidBiddingLogicUriByBuyer(buyer))
107                 .setAds(AdDataFixture.getValidFilterAdsByBuyer(buyer));
108     }
109 }
110