- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / android / javatests / src / org / chromium / chrome / browser / identity / UuidBasedUniqueIdentificationGeneratorTest.java
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.identity;
6
7 import android.test.InstrumentationTestCase;
8 import android.test.suitebuilder.annotation.SmallTest;
9
10 import junit.framework.Assert;
11
12 import org.chromium.base.test.util.AdvancedMockContext;
13 import org.chromium.base.test.util.Feature;
14
15 public class UuidBasedUniqueIdentificationGeneratorTest extends InstrumentationTestCase {
16     private static final String FLAG_UUID = "uuid";
17
18     private AdvancedMockContext mContext;
19
20     @Override
21     protected void setUp() throws Exception {
22         super.setUp();
23         mContext = new AdvancedMockContext(getInstrumentation().getTargetContext());
24     }
25
26     @SmallTest
27     @Feature({"Sync"})
28     public void testGenerationAndRestorationOfUuid() {
29         String preferenceKey = "some_preference_key";
30         String expectedUniqueId = "myUuid";
31         TestGenerator generator = new TestGenerator(mContext, preferenceKey, expectedUniqueId);
32
33         // Get a unique ID and ensure it is as expected.
34         Assert.assertEquals(expectedUniqueId, generator.getUniqueId(null));
35
36         // Asking for a unique ID again, should not try to regenerate it.
37         mContext.clearFlag(FLAG_UUID);
38         Assert.assertEquals(expectedUniqueId, generator.getUniqueId(null));
39         assertFalse(mContext.isFlagSet(FLAG_UUID));
40
41         // After a restart, the TestGenerator should read the UUID from a preference, instead of
42         // asking for it.
43         mContext.clearFlag(FLAG_UUID);
44         generator = new TestGenerator(mContext, preferenceKey, null);
45         Assert.assertEquals(expectedUniqueId, generator.getUniqueId(null));
46         assertFalse(mContext.isFlagSet(FLAG_UUID));
47     }
48
49     @SmallTest
50     @Feature({"Sync"})
51     public void testTwoDifferentGeneratorsShouldUseDifferentPreferences() {
52         String preferenceKey1 = "some_preference_key";
53         String preferenceKey2 = "some_other_preference_key";
54         String expectedUniqueId1 = "myUuid";
55         String expectedUniqueId2 = "myOtherUuid";
56         TestGenerator generator1 = new TestGenerator(mContext, preferenceKey1, expectedUniqueId1);
57         TestGenerator generator2 = new TestGenerator(mContext, preferenceKey2, expectedUniqueId2);
58
59         // Get a unique ID and ensure it is as expected.
60         Assert.assertEquals(expectedUniqueId1, generator1.getUniqueId(null));
61         Assert.assertEquals(expectedUniqueId2, generator2.getUniqueId(null));
62
63         // Asking for a unique ID again, should not try to regenerate it.
64         mContext.clearFlag(FLAG_UUID);
65         Assert.assertEquals(expectedUniqueId1, generator1.getUniqueId(null));
66         assertFalse(mContext.isFlagSet(FLAG_UUID));
67         mContext.clearFlag(FLAG_UUID);
68         Assert.assertEquals(expectedUniqueId2, generator2.getUniqueId(null));
69         assertFalse(mContext.isFlagSet(FLAG_UUID));
70    }
71
72     private static class TestGenerator extends UuidBasedUniqueIdentificationGenerator {
73         private final AdvancedMockContext mContext;
74         private final String mUuid;
75
76         TestGenerator(AdvancedMockContext context, String preferenceKey, String uuid) {
77             super(context, preferenceKey);
78             mContext = context;
79             mUuid = uuid;
80         }
81
82         @Override
83         String getUUID() {
84             mContext.setFlag(FLAG_UUID);
85             return mUuid;
86         }
87     }
88 }