• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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 package com.android.adservices.tests.extdata;
17 
18 import static android.adservices.extdata.AdServicesExtDataParams.BOOLEAN_FALSE;
19 import static android.adservices.extdata.AdServicesExtDataParams.BOOLEAN_TRUE;
20 import static android.adservices.extdata.AdServicesExtDataParams.STATE_UNKNOWN;
21 
22 import static com.google.common.truth.Truth.assertThat;
23 
24 import android.adservices.extdata.AdServicesExtDataParams;
25 import android.adservices.extdata.AdServicesExtDataStorageService;
26 import android.adservices.extdata.GetAdServicesExtDataResult;
27 import android.adservices.extdata.IAdServicesExtDataStorageService;
28 import android.adservices.extdata.IGetAdServicesExtDataCallback;
29 import android.content.Intent;
30 import android.os.IBinder;
31 
32 import com.android.adservices.shared.testing.concurrency.FailableOnResultSyncCallback;
33 
34 import org.junit.Test;
35 
36 public final class AdServicesExtDataServiceCtsTest {
37     /** Fake AdServicesExtDataStorageService implementation for testing. */
38     private static final class AdServicesExtDataStorageServiceTestProxy
39             extends AdServicesExtDataStorageService {
40 
41         private AdServicesExtDataParams mParamsStorage = null;
42 
onGetAdServicesExtData()43         public AdServicesExtDataParams onGetAdServicesExtData() {
44             return mParamsStorage;
45         }
46 
onPutAdServicesExtData( AdServicesExtDataParams adServicesExtDataParams, int[] adServicesExtDataFields)47         public void onPutAdServicesExtData(
48                 AdServicesExtDataParams adServicesExtDataParams, int[] adServicesExtDataFields) {
49             // For testing, ignore adServicesExtDataFields. Update entire object.
50             mParamsStorage = adServicesExtDataParams;
51         }
52     }
53 
54     @Test
testAdServicesExtDataStorageService()55     public void testAdServicesExtDataStorageService() throws Exception {
56         // Check service connection
57         AdServicesExtDataStorageServiceTestProxy proxy =
58                 new AdServicesExtDataStorageServiceTestProxy();
59         Intent intent = new Intent();
60         intent.setAction(AdServicesExtDataStorageService.SERVICE_INTERFACE);
61         IBinder remoteObject = proxy.onBind(intent);
62         assertThat(remoteObject).isNotNull();
63 
64         IAdServicesExtDataStorageService service =
65                 IAdServicesExtDataStorageService.Stub.asInterface(remoteObject);
66         assertThat(service).isNotNull();
67 
68         // Update AdExt data
69         AdServicesExtDataParams paramsToUpdate =
70                 new AdServicesExtDataParams(
71                         /*isNotificationDisplayed=*/ BOOLEAN_TRUE,
72                         /*isMeasurementConsented=*/ BOOLEAN_FALSE,
73                         /*isU18Account=*/ BOOLEAN_TRUE,
74                         /*isAdultAccount=*/ BOOLEAN_FALSE,
75                         /*manualInteractionWithConsentStatus=*/ STATE_UNKNOWN,
76                         /*measurementRollbackApexVersion=*/ 200L);
77 
78         SyncAdExtTestCallback putReceiver = new SyncAdExtTestCallback();
79         service.putAdServicesExtData(
80                 paramsToUpdate,
81                 new int[] {}, // Fake service implementation ignores this parameter.
82                 putReceiver);
83 
84         putReceiver.assertFailureReceived();
85 
86         // Get updated AdExt data
87         SyncAdExtTestCallback getReceiver = new SyncAdExtTestCallback();
88         service.getAdServicesExtData(getReceiver);
89 
90         String error = getReceiver.assertFailureReceived();
91         assertThat(error).isNotEmpty();
92     }
93 
94     @Test
testAdServicesExtDataParams()95     public void testAdServicesExtDataParams() {
96         AdServicesExtDataParams adServicesExtDataParams =
97                 new AdServicesExtDataParams(
98                         /* isNotificationDisplayed= */ BOOLEAN_TRUE,
99                         /* isMeasurementConsented= */ BOOLEAN_FALSE,
100                         /* isU18Account= */ BOOLEAN_TRUE,
101                         /* isAdultAccount= */ BOOLEAN_FALSE,
102                         /* manualInteractionWithConsentStatus= */ STATE_UNKNOWN,
103                         /* measurementRollbackApexVersion= */ 200L);
104 
105         assertThat(adServicesExtDataParams.getIsNotificationDisplayed()).isEqualTo(BOOLEAN_TRUE);
106         assertThat(adServicesExtDataParams.getIsMeasurementConsented()).isEqualTo(BOOLEAN_FALSE);
107         assertThat(adServicesExtDataParams.getIsU18Account()).isEqualTo(BOOLEAN_TRUE);
108         assertThat(adServicesExtDataParams.getIsAdultAccount()).isEqualTo(BOOLEAN_FALSE);
109         assertThat(adServicesExtDataParams.getManualInteractionWithConsentStatus())
110                 .isEqualTo(STATE_UNKNOWN);
111         assertThat(adServicesExtDataParams.getMeasurementRollbackApexVersion()).isEqualTo(200L);
112     }
113 
114     private static final class SyncAdExtTestCallback
115             extends FailableOnResultSyncCallback<GetAdServicesExtDataResult, String>
116             implements IGetAdServicesExtDataCallback {
117         @Override
onError(String msg)118         public void onError(String msg) {
119             onFailure(msg);
120         }
121     }
122 }
123