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 String RAW_XML_NO_VERS_VERSION = 72 "<wap-provisioningdoc version=\"1.1\">\n" 73 + " <characteristic type=\"VERS\">\n" 74 + " <parm name=\"version\" value=\"\"/>\n" 75 + " <parm name=\"validity\" value=\"1728000\"/>\n" 76 + " </characteristic>\n" 77 + " <characteristic type=\"TOKEN\">\n" 78 + " <parm name=\"token\" value=\"kZYfCEpSsMr88KZVmab5UsZVzl+nWSsX\"/>\n" 79 + " <parm name=\"validity\" value=\"3600\"/>\n" 80 + " </characteristic>\n" 81 + " <characteristic type=\"APPLICATION\">\n" 82 + " <parm name=\"AppID\" value=\"ap2004\"/>\n" 83 + " <parm name=\"EntitlementStatus\" value=\"1\"/>\n" 84 + " </characteristic>\n" 85 + " <characteristic type=\"APPLICATION\">\n" 86 + " <parm name=\"AppID\" value=\"ap2003\"/>\n" 87 + " <parm name=\"EntitlementStatus\" value=\"0\"/>\n" 88 + " </characteristic>\n" 89 + "</wap-provisioningdoc>\n"; 90 private static final int SUB_ID = 1; 91 92 private Context mContext; 93 private EntitlementConfiguration mConfiguration; 94 95 @Before setUp()96 public void setUp() { 97 mContext = ApplicationProvider.getApplicationContext(); 98 mConfiguration = new EntitlementConfiguration(mContext, SUB_ID); 99 mConfiguration.reset(); 100 } 101 102 @Test updateConfigurations_verifyConfigs()103 public void updateConfigurations_verifyConfigs() { 104 mConfiguration.update(RAW_XML); 105 106 assertThat(mConfiguration.getVolteStatus()).isEqualTo(0); 107 assertThat(mConfiguration.getVoWifiStatus()).isEqualTo(1); 108 assertThat(mConfiguration.getSmsOverIpStatus()).isEqualTo(2); 109 assertThat(mConfiguration.getToken().get()).isEqualTo("kZYfCEpSsMr88KZVmab5UsZVzl+nWSsX"); 110 assertThat(mConfiguration.getTokenValidity()).isEqualTo(3600); 111 assertThat(mConfiguration.getVersion()).isEqualTo("1"); 112 assertThat(mConfiguration.entitlementValidation()).isEqualTo( 113 ClientBehavior.VALID_DURING_VALIDITY); 114 } 115 116 @Test updateConfigurations_reset_verifyDefaultValues()117 public void updateConfigurations_reset_verifyDefaultValues() { 118 mConfiguration.update(RAW_XML); 119 mConfiguration.reset(); 120 121 assertThat(mConfiguration.getVolteStatus()).isEqualTo(2); 122 assertThat(mConfiguration.getVoWifiStatus()).isEqualTo(2); 123 assertThat(mConfiguration.getSmsOverIpStatus()).isEqualTo(2); 124 assertThat(mConfiguration.getToken().isPresent()).isFalse(); 125 assertThat(mConfiguration.getTokenValidity()).isEqualTo(0); 126 assertThat(mConfiguration.entitlementValidation()).isEqualTo(ClientBehavior.NEEDS_TO_RESET); 127 } 128 129 @Test updateConfigurations_noTokenValidity_tokenValid()130 public void updateConfigurations_noTokenValidity_tokenValid() { 131 mConfiguration.update(RAW_XML_NO_TOKEN_VALIDITY); 132 133 assertThat(mConfiguration.getToken().get()).isEqualTo("kZYfCEpSsMr88KZVmab5UsZVzl+nWSsX"); 134 assertThat(mConfiguration.getTokenValidity()).isEqualTo(0); 135 } 136 137 @Test updateConfigurations_noVersVersion_getDefaultValue()138 public void updateConfigurations_noVersVersion_getDefaultValue() { 139 mConfiguration.update(RAW_XML_NO_VERS_VERSION); 140 141 assertThat(mConfiguration.getVersion()).isEqualTo("0"); 142 } 143 } 144