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 private static final int ENTITLEMENT_VERSION = 2; 92 93 private Context mContext; 94 private EntitlementConfiguration mConfiguration; 95 96 @Before setUp()97 public void setUp() { 98 mContext = ApplicationProvider.getApplicationContext(); 99 mConfiguration = new EntitlementConfiguration(mContext, SUB_ID); 100 mConfiguration.reset(); 101 } 102 103 @Test updateConfigurations_verifyConfigs()104 public void updateConfigurations_verifyConfigs() { 105 mConfiguration.update(ENTITLEMENT_VERSION, RAW_XML); 106 107 assertThat(mConfiguration.getEntitlementVersion()).isEqualTo(ENTITLEMENT_VERSION); 108 assertThat(mConfiguration.getRawXml()).isEqualTo(RAW_XML); 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(ENTITLEMENT_VERSION, RAW_XML); 119 mConfiguration.reset(); 120 121 assertThat(mConfiguration.getEntitlementVersion()).isEqualTo(ENTITLEMENT_VERSION); 122 assertThat(mConfiguration.getRawXml()).isEqualTo(null); 123 assertThat(mConfiguration.getToken().isPresent()).isFalse(); 124 assertThat(mConfiguration.getTokenValidity()).isEqualTo(0); 125 assertThat(mConfiguration.entitlementValidation()).isEqualTo(ClientBehavior.NEEDS_TO_RESET); 126 } 127 128 @Test updateConfigurations_noTokenValidity_tokenValid()129 public void updateConfigurations_noTokenValidity_tokenValid() { 130 mConfiguration.update(ENTITLEMENT_VERSION, RAW_XML_NO_TOKEN_VALIDITY); 131 132 assertThat(mConfiguration.getEntitlementVersion()).isEqualTo(ENTITLEMENT_VERSION); 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(ENTITLEMENT_VERSION, RAW_XML_NO_VERS_VERSION); 140 141 assertThat(mConfiguration.getEntitlementVersion()).isEqualTo(ENTITLEMENT_VERSION); 142 assertThat(mConfiguration.getVersion()).isEqualTo("0"); 143 } 144 } 145