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.remoteprovisioner.unittest; 18 19 import static org.junit.Assert.assertEquals; 20 import static org.junit.Assert.assertTrue; 21 22 import android.content.Context; 23 24 import androidx.test.core.app.ApplicationProvider; 25 import androidx.test.runner.AndroidJUnit4; 26 27 import com.android.remoteprovisioner.SettingsManager; 28 29 import org.junit.After; 30 import org.junit.Before; 31 import org.junit.BeforeClass; 32 import org.junit.Test; 33 import org.junit.runner.RunWith; 34 35 import java.time.Duration; 36 37 @RunWith(AndroidJUnit4.class) 38 public class SettingsManagerTest { 39 40 private static Context sContext; 41 42 @BeforeClass init()43 public static void init() { 44 sContext = ApplicationProvider.getApplicationContext(); 45 } 46 47 @Before setUp()48 public void setUp() { 49 SettingsManager.clearPreferences(sContext); 50 } 51 52 @After tearDown()53 public void tearDown() { 54 SettingsManager.clearPreferences(sContext); 55 } 56 57 @Test testCheckDefaults()58 public void testCheckDefaults() throws Exception { 59 assertEquals(SettingsManager.EXTRA_SIGNED_KEYS_AVAILABLE_DEFAULT, 60 SettingsManager.getExtraSignedKeysAvailable(sContext)); 61 assertEquals(SettingsManager.EXPIRING_BY_MS_DEFAULT, 62 SettingsManager.getExpiringBy(sContext).toMillis()); 63 assertEquals(SettingsManager.URL_DEFAULT, 64 SettingsManager.getUrl(sContext)); 65 assertEquals(0, SettingsManager.getFailureCounter(sContext)); 66 } 67 68 @Test testCheckIdSettings()69 public void testCheckIdSettings() throws Exception { 70 int defaultRandom = SettingsManager.getId(sContext); 71 assertTrue("Default ID out of bounds.", 72 defaultRandom < SettingsManager.ID_UPPER_BOUND && defaultRandom >= 0); 73 SettingsManager.generateAndSetId(sContext); 74 int setId = SettingsManager.getId(sContext); 75 assertTrue("Stored ID out of bounds.", 76 setId < SettingsManager.ID_UPPER_BOUND && setId >= 0); 77 SettingsManager.generateAndSetId(sContext); 78 assertEquals("ID should not be updated by a repeated call", 79 setId, SettingsManager.getId(sContext)); 80 } 81 82 @Test testSetDeviceConfig()83 public void testSetDeviceConfig() { 84 int extraKeys = 12; 85 Duration expiringBy = Duration.ofMillis(1000); 86 String url = "https://www.remoteprovisionalot"; 87 assertTrue("Method did not return true on write.", 88 SettingsManager.setDeviceConfig(sContext, extraKeys, expiringBy, url)); 89 assertEquals(extraKeys, SettingsManager.getExtraSignedKeysAvailable(sContext)); 90 assertEquals(expiringBy.toMillis(), SettingsManager.getExpiringBy(sContext).toMillis()); 91 assertEquals(url, SettingsManager.getUrl(sContext)); 92 } 93 94 @Test testFailureCounter()95 public void testFailureCounter() { 96 assertEquals(1, SettingsManager.incrementFailureCounter(sContext)); 97 assertEquals(1, SettingsManager.getFailureCounter(sContext)); 98 for (int i = 1; i < 10; i++) { 99 assertEquals(i + 1, SettingsManager.incrementFailureCounter(sContext)); 100 } 101 SettingsManager.clearFailureCounter(sContext); 102 assertEquals(0, SettingsManager.getFailureCounter(sContext)); 103 SettingsManager.incrementFailureCounter(sContext); 104 assertEquals(1, SettingsManager.getFailureCounter(sContext)); 105 } 106 } 107