1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)package org.chromium.chrome.browser.identity; 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.test.InstrumentationTestCase; 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.test.suitebuilder.annotation.SmallTest; 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.base.test.util.AdvancedMockContext; 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.base.test.util.Feature; 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.chrome.browser.util.HashUtil; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public class SettingsSecureBasedIdentificationGeneratorTest extends InstrumentationTestCase { 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private static final String FLAG_ANDROID_ID = "android_id"; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @SmallTest 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Feature({"ChromeToMobile", "Omaha"}) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void testAndroidIdSuccessWithSalt() { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String androidId = "42"; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String salt = "mySalt"; 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String expected = HashUtil.getMd5Hash(new HashUtil.Params(androidId).withSalt(salt)); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) runTest(androidId, salt, expected); 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @SmallTest 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Feature({"ChromeToMobile", "Omaha"}) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void testAndroidIdSuccessWithoutSalt() { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String androidId = "42"; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String expected = HashUtil.getMd5Hash(new HashUtil.Params(androidId)); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) runTest(androidId, null, expected); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @SmallTest 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Feature({"ChromeToMobile", "Omaha"}) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void testAndroidIdFailureWithSalt() { 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String androidId = null; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String salt = "mySalt"; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String expected = ""; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) runTest(androidId, salt, expected); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @SmallTest 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Feature({"ChromeToMobile", "Omaha"}) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void testAndroidIdFailureWithoutSalt() { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String androidId = null; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String salt = null; 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String expected = ""; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) runTest(androidId, salt, expected); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private void runTest(String androidId, String salt, String expectedUniqueId) { 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AdvancedMockContext context = new AdvancedMockContext(); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestGenerator generator = new TestGenerator(context, androidId); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Get a unique ID and ensure it is as expected. 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String result = generator.getUniqueId(salt); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assertEquals(expectedUniqueId, result); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private static class TestGenerator extends SettingsSecureBasedIdentificationGenerator { 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final AdvancedMockContext mContext; 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final String mAndroidId; 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestGenerator(AdvancedMockContext context, String androidId) { 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) super(context); 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mContext = context; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mAndroidId = androidId; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) String getAndroidId() { 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mContext.setFlag(FLAG_ANDROID_ID); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mAndroidId; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 79