blob: ef175c47eeb8142676ce66cb5103edd83107adb9 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.content.browser.installedapp;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.chromium.base.test.util.Feature;
/**
* Tests that PackageHash generates correct hashes.
*/
@RunWith(BlockJUnit4ClassRunner.class)
public class PackageHashTest {
@Test
@Feature({"InstalledApp"})
public void testPackageHash() {
byte[] salt = {0x64, 0x09, -0x68, -0x25, 0x70, 0x11, 0x25, 0x24, 0x68, -0x1a, 0x08, 0x79,
-0x12, -0x50, 0x3b, -0x57, -0x17, -0x4d, 0x46, 0x02};
PackageHash.setGlobalSaltForTesting(salt);
// These expectations are based on the salt + ':' + packageName, encoded in UTF-8, hashed
// with SHA-256, and looking at the first two bytes of the result.
Assert.assertEquals((short) 0x0d4d, PackageHash.hashForPackage("com.example.test1"));
Assert.assertEquals((short) 0xfa6f, PackageHash.hashForPackage("com.example.t\u00e9st2"));
byte[] salt2 = {-0x10, 0x38, -0x28, 0x1f, 0x59, 0x2d, -0x2d, -0x4a, 0x23, 0x76, 0x6d, -0x54,
0x27, -0x2d, -0x3f, -0x59, -0x2e, -0x0e, 0x67, 0x7a};
PackageHash.setGlobalSaltForTesting(salt2);
Assert.assertEquals((short) 0xd6d6, PackageHash.hashForPackage("com.example.test1"));
Assert.assertEquals((short) 0x5193, PackageHash.hashForPackage("com.example.t\u00e9st2"));
}
}