13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)package org.chromium.chrome.browser.identity; 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)import android.test.InstrumentationTestCase; 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)import android.test.suitebuilder.annotation.SmallTest; 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)import junit.framework.Assert; 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)import org.chromium.base.test.util.AdvancedMockContext; 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)import org.chromium.base.test.util.Feature; 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)public class UuidBasedUniqueIdentificationGeneratorTest extends InstrumentationTestCase { 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private static final String FLAG_UUID = "uuid"; 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private AdvancedMockContext mContext; 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) @Override 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) protected void setUp() throws Exception { 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) super.setUp(); 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) mContext = new AdvancedMockContext(getInstrumentation().getTargetContext()); 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) @SmallTest 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) @Feature({"Sync"}) 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public void testGenerationAndRestorationOfUuid() { 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) String preferenceKey = "some_preference_key"; 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) String expectedUniqueId = "myUuid"; 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) TestGenerator generator = new TestGenerator(mContext, preferenceKey, expectedUniqueId); 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Get a unique ID and ensure it is as expected. 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Assert.assertEquals(expectedUniqueId, generator.getUniqueId(null)); 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Asking for a unique ID again, should not try to regenerate it. 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) mContext.clearFlag(FLAG_UUID); 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Assert.assertEquals(expectedUniqueId, generator.getUniqueId(null)); 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) assertFalse(mContext.isFlagSet(FLAG_UUID)); 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // After a restart, the TestGenerator should read the UUID from a preference, instead of 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // asking for it. 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) mContext.clearFlag(FLAG_UUID); 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) generator = new TestGenerator(mContext, preferenceKey, null); 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Assert.assertEquals(expectedUniqueId, generator.getUniqueId(null)); 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) assertFalse(mContext.isFlagSet(FLAG_UUID)); 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) @SmallTest 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) @Feature({"Sync"}) 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public void testTwoDifferentGeneratorsShouldUseDifferentPreferences() { 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) String preferenceKey1 = "some_preference_key"; 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) String preferenceKey2 = "some_other_preference_key"; 543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) String expectedUniqueId1 = "myUuid"; 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) String expectedUniqueId2 = "myOtherUuid"; 563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) TestGenerator generator1 = new TestGenerator(mContext, preferenceKey1, expectedUniqueId1); 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) TestGenerator generator2 = new TestGenerator(mContext, preferenceKey2, expectedUniqueId2); 583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Get a unique ID and ensure it is as expected. 603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Assert.assertEquals(expectedUniqueId1, generator1.getUniqueId(null)); 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Assert.assertEquals(expectedUniqueId2, generator2.getUniqueId(null)); 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Asking for a unique ID again, should not try to regenerate it. 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) mContext.clearFlag(FLAG_UUID); 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Assert.assertEquals(expectedUniqueId1, generator1.getUniqueId(null)); 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) assertFalse(mContext.isFlagSet(FLAG_UUID)); 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) mContext.clearFlag(FLAG_UUID); 683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Assert.assertEquals(expectedUniqueId2, generator2.getUniqueId(null)); 693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) assertFalse(mContext.isFlagSet(FLAG_UUID)); 703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private static class TestGenerator extends UuidBasedUniqueIdentificationGenerator { 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private final AdvancedMockContext mContext; 743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private final String mUuid; 753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) TestGenerator(AdvancedMockContext context, String preferenceKey, String uuid) { 773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) super(context, preferenceKey); 783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) mContext = context; 793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) mUuid = uuid; 803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) @Override 833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) String getUUID() { 843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) mContext.setFlag(FLAG_UUID); 853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return mUuid; 863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 89