1 /* 2 * Copyright (C) 2021 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 com.android.imsserviceentitlement.entitlement; 18 19 import static com.google.common.truth.Truth.assertThat; 20 21 import android.content.Context; 22 23 import androidx.test.core.app.ApplicationProvider; 24 import androidx.test.runner.AndroidJUnit4; 25 26 import com.android.imsserviceentitlement.entitlement.EntitlementConfiguration.ClientBehavior; 27 28 import org.junit.Before; 29 import org.junit.Test; 30 import org.junit.runner.RunWith; 31 32 @RunWith(AndroidJUnit4.class) 33 public class EntitlementConfigurationTest { 34 private static final String RAW_XML = 35 "<wap-provisioningdoc version=\"1.1\">\n" 36 + " <characteristic type=\"VERS\">\n" 37 + " <parm name=\"version\" value=\"1\"/>\n" 38 + " <parm name=\"validity\" value=\"1728000\"/>\n" 39 + " </characteristic>\n" 40 + " <characteristic type=\"TOKEN\">\n" 41 + " <parm name=\"token\" value=\"kZYfCEpSsMr88KZVmab5UsZVzl+nWSsX\"/>\n" 42 + " <parm name=\"validity\" value=\"3600\"/>\n" 43 + " </characteristic>\n" 44 + " <characteristic type=\"APPLICATION\">\n" 45 + " <parm name=\"AppID\" value=\"ap2004\"/>\n" 46 + " <parm name=\"EntitlementStatus\" value=\"1\"/>\n" 47 + " </characteristic>\n" 48 + " <characteristic type=\"APPLICATION\">\n" 49 + " <parm name=\"AppID\" value=\"ap2003\"/>\n" 50 + " <parm name=\"EntitlementStatus\" value=\"0\"/>\n" 51 + " </characteristic>\n" 52 + "</wap-provisioningdoc>\n"; 53 private static final String RAW_XML_NO_TOKEN_VALIDITY = 54 "<wap-provisioningdoc version=\"1.1\">\n" 55 + " <characteristic type=\"VERS\">\n" 56 + " <parm name=\"version\" value=\"1\"/>\n" 57 + " <parm name=\"validity\" value=\"1728000\"/>\n" 58 + " </characteristic>\n" 59 + " <characteristic type=\"TOKEN\">\n" 60 + " <parm name=\"token\" value=\"kZYfCEpSsMr88KZVmab5UsZVzl+nWSsX\"/>\n" 61 + " </characteristic>\n" 62 + " <characteristic type=\"APPLICATION\">\n" 63 + " <parm name=\"AppID\" value=\"ap2004\"/>\n" 64 + " <parm name=\"EntitlementStatus\" value=\"1\"/>\n" 65 + " </characteristic>\n" 66 + " <characteristic type=\"APPLICATION\">\n" 67 + " <parm name=\"AppID\" value=\"ap2003\"/>\n" 68 + " <parm name=\"EntitlementStatus\" value=\"0\"/>\n" 69 + " </characteristic>\n" 70 + "</wap-provisioningdoc>\n"; 71 private static final int SUB_ID = 1; 72 73 private Context mContext; 74 private EntitlementConfiguration mConfiguration; 75 76 @Before setUp()77 public void setUp() { 78 mContext = ApplicationProvider.getApplicationContext(); 79 mConfiguration = new EntitlementConfiguration(mContext, SUB_ID); 80 mConfiguration.reset(); 81 } 82 83 @Test updateConfigurations_verifyConfigs()84 public void updateConfigurations_verifyConfigs() { 85 mConfiguration.update(RAW_XML); 86 87 assertThat(mConfiguration.getVolteStatus()).isEqualTo(0); 88 assertThat(mConfiguration.getVoWifiStatus()).isEqualTo(1); 89 assertThat(mConfiguration.getSmsOverIpStatus()).isEqualTo(2); 90 assertThat(mConfiguration.getToken().get()).isEqualTo("kZYfCEpSsMr88KZVmab5UsZVzl+nWSsX"); 91 assertThat(mConfiguration.getTokenValidity()).isEqualTo(3600); 92 assertThat(mConfiguration.entitlementValidation()).isEqualTo( 93 ClientBehavior.VALID_DURING_VALIDITY); 94 } 95 96 @Test updateConfigurations_reset_verifyDefaultValues()97 public void updateConfigurations_reset_verifyDefaultValues() { 98 mConfiguration.update(RAW_XML); 99 mConfiguration.reset(); 100 101 assertThat(mConfiguration.getVolteStatus()).isEqualTo(2); 102 assertThat(mConfiguration.getVoWifiStatus()).isEqualTo(2); 103 assertThat(mConfiguration.getSmsOverIpStatus()).isEqualTo(2); 104 assertThat(mConfiguration.getToken().isPresent()).isFalse(); 105 assertThat(mConfiguration.getTokenValidity()).isEqualTo(0); 106 assertThat(mConfiguration.entitlementValidation()).isEqualTo(ClientBehavior.NEEDS_TO_RESET); 107 } 108 109 @Test updateConfigurations_noTokenValidity_tokenValid()110 public void updateConfigurations_noTokenValidity_tokenValid() { 111 mConfiguration.update(RAW_XML_NO_TOKEN_VALIDITY); 112 113 assertThat(mConfiguration.getToken().get()).isEqualTo("kZYfCEpSsMr88KZVmab5UsZVzl+nWSsX"); 114 assertThat(mConfiguration.getTokenValidity()).isEqualTo(0); 115 } 116 } 117