beb08377044c1b84e61033088c9daef7d7cb404d
[platform/framework/web/crosswalk.git] / src / sync / android / javatests / src / org / chromium / sync / notifier / InvalidationClientNameProviderTest.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.sync.notifier;
6
7 import android.test.InstrumentationTestCase;
8 import android.test.suitebuilder.annotation.SmallTest;
9
10 import org.chromium.base.test.util.Feature;
11
12 import java.util.Arrays;
13
14 /** Tests for the {@link InvalidationClientNameProvider} */
15 public class InvalidationClientNameProviderTest extends InstrumentationTestCase {
16     private InvalidationClientNameProvider mProvider;
17
18     @Override
19     protected void setUp() {
20         mProvider = new InvalidationClientNameProvider();
21     }
22
23     @SmallTest
24     @Feature({"Sync"})
25     public void testFallbackClientId() {
26         // Test that the InvalidationController consistently returns the same ID even when it has to
27         // resort to its "fallback" ID generation code.
28         byte[] id1 = mProvider.getInvalidatorClientName();
29         byte[] id2 = mProvider.getInvalidatorClientName();
30
31         // We expect the returned IDs to be consistent in every call.
32         assertTrue("Expected returned IDs to be consistent", Arrays.equals(id1, id2));
33
34         // Even if initialize the generator late, the ID will remain consistent.
35         registerHardCodedGenerator(mProvider);
36
37         // IDs should still be consistent, even if we change the generator.
38         // (In the real program, the generator should be set before anyone invokes the
39         // getInvalidatorClientName() and never change afterwards.  We test this anyway to make sure
40         // nothing will blow up if someone accidentally violates that constraint.)
41         byte[] id3 = mProvider.getInvalidatorClientName();
42         assertTrue("Changing generators should not affect returned ID consistency",
43                 Arrays.equals(id2, id3));
44     }
45
46     @SmallTest
47     @Feature({"Sync"})
48     public void testPreRegisteredGenerator() {
49         registerHardCodedGenerator(mProvider);
50
51         byte[] id = mProvider.getInvalidatorClientName();
52         byte[] id2 = mProvider.getInvalidatorClientName();
53
54         // Expect that consistent IDs are maintained when using a custom generator, too.
55         assertTrue("Custom generators should return consistent IDs", Arrays.equals(id, id2));
56     }
57
58     private static void registerHardCodedGenerator(InvalidationClientNameProvider provider) {
59         provider.setPreferredClientNameGenerator(new InvalidationClientNameGenerator() {
60             @Override
61             public byte[] generateInvalidatorClientName() {
62                 return "Testable ID".getBytes();
63             }
64         });
65     }
66 }