1f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk/* 2f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * Copyright (C) 2017 The Android Open Source Project 3f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * 4f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * except in compliance with the License. You may obtain a copy of the License at 6f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * 7f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * http://www.apache.org/licenses/LICENSE-2.0 8f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * 9f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * Unless required by applicable law or agreed to in writing, software distributed under the 10f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 11f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * KIND, either express or implied. See the License for the specific language governing 12f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk * permissions and limitations under the License. 13f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk */ 14f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 15f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkpackage android.testing; 16f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 17f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport android.content.ContentResolver; 18f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport android.provider.Settings; 19f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport android.provider.Settings.Global; 20f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport android.provider.Settings.Secure; 21f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport android.support.test.InstrumentationRegistry; 22f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport android.support.test.runner.AndroidJUnit4; 23f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport org.junit.Before; 24f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport org.junit.Rule; 25f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport org.junit.Test; 26f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport org.junit.runner.RunWith; 27f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 28f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkimport static org.junit.Assert.*; 29f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 30f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk@RunWith(AndroidJUnit4.class) 31f06a317039a6502252c2b4b1a878520d166a38c6Jason Monkpublic class TestableSettingsProviderTest { 32f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 33f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk public static final String NONEXISTENT_SETTING = "nonexistent_setting"; 34f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk private static final String TAG = "TestableSettingsProviderTest"; 35f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk private ContentResolver mContentResolver; 36f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk @Rule 37f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk public final TestableContext mContext = 38f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk new TestableContext(InstrumentationRegistry.getContext()); 39f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 40f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk @Before 41f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk public void setup() { 42f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk mContentResolver = mContext.getContentResolver(); 43f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk Settings.Secure.putString(mContentResolver, NONEXISTENT_SETTING, null); 44f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk Settings.Global.putString(mContentResolver, NONEXISTENT_SETTING, "initial value"); 45f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk Settings.Global.putString(mContentResolver, Global.DEVICE_PROVISIONED, null); 46f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk } 47f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 48f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk @Test 49f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk public void testInitialValueSecure() { 50f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk String value = Secure.getString(mContentResolver, NONEXISTENT_SETTING); 51f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk assertNull(value); 52f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk } 53f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 54f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk @Test 55f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk public void testInitialValueGlobal() { 56f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk String value = Global.getString(mContentResolver, NONEXISTENT_SETTING); 57f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk assertEquals("initial value", value); 58f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk } 59f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 60f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk @Test 61f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk public void testSeparateTables() { 62f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk Secure.putString(mContentResolver, NONEXISTENT_SETTING, "something"); 63f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk Global.putString(mContentResolver, NONEXISTENT_SETTING, "else"); 64f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk assertEquals("something", Secure.getString(mContentResolver, NONEXISTENT_SETTING)); 65f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk assertEquals("else", Global.getString(mContentResolver, NONEXISTENT_SETTING)); 66f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk } 67f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 68f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk @Test 69629c20c9991ab8da3732ba554794fffd7922f185Chris Wren public void testSeparateUsers() { 70629c20c9991ab8da3732ba554794fffd7922f185Chris Wren Secure.putStringForUser(mContentResolver, NONEXISTENT_SETTING, "something", 0); 71629c20c9991ab8da3732ba554794fffd7922f185Chris Wren Secure.putStringForUser(mContentResolver, NONEXISTENT_SETTING, "else", 1); 72629c20c9991ab8da3732ba554794fffd7922f185Chris Wren assertEquals("something", 73629c20c9991ab8da3732ba554794fffd7922f185Chris Wren Secure.getStringForUser(mContentResolver, NONEXISTENT_SETTING, 0)); 74629c20c9991ab8da3732ba554794fffd7922f185Chris Wren assertEquals("else", 75629c20c9991ab8da3732ba554794fffd7922f185Chris Wren Secure.getStringForUser(mContentResolver, NONEXISTENT_SETTING, 1)); 76629c20c9991ab8da3732ba554794fffd7922f185Chris Wren } 77629c20c9991ab8da3732ba554794fffd7922f185Chris Wren 78629c20c9991ab8da3732ba554794fffd7922f185Chris Wren @Test 79f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk public void testPassThrough() { 80f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk // Grab the value of a setting that is not overridden. 81f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk assertTrue(Secure.getInt(mContentResolver, Secure.USER_SETUP_COMPLETE, 0) != 0); 82f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk } 83f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 84f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk @Test 85f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk public void testOverrideExisting() { 86f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk // Grab the value of a setting that is overridden and will be different than the actual 87f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk // value. 88f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk assertNull(Global.getString(mContentResolver, Global.DEVICE_PROVISIONED)); 89f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk } 90f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk 91f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk @Test 92f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk public void testRelease() { 93f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk // Verify different value. 94f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk assertNull(Global.getString(mContentResolver, Global.DEVICE_PROVISIONED)); 95f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk mContext.getSettingsProvider().clearValuesAndCheck(mContext); 96f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk // Verify actual value after release. 97f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk assertEquals("1", Global.getString(mContentResolver, Global.DEVICE_PROVISIONED)); 98f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk } 99f06a317039a6502252c2b4b1a878520d166a38c6Jason Monk} 100