shared_module_apitest.cc revision 010d83a9304c5a91596085d917d248abff47903a
1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/extensions/extension_apitest.h"
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)using extensions::Extension;
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// NB: We use LoadExtension instead of InstallExtension for shared modules so
10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// the public-keys in their manifests are used to generate the extension ID, so
11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// it can be imported correctly.  We use InstallExtension otherwise so the loads
12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// happen through the CRX installer which validates imports.
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(ExtensionApiTest, SharedModule) {
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // import_pass depends on this shared module.
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ASSERT_TRUE(LoadExtension(
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      test_data_dir_.AppendASCII("shared_module").AppendASCII("shared")));
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_TRUE(RunExtensionTest("shared_module/import_pass"));
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_FALSE(InstallExtension(
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      test_data_dir_.AppendASCII("shared_module")
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          .AppendASCII("import_wrong_version"), 0));
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_FALSE(InstallExtension(
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      test_data_dir_.AppendASCII("shared_module")
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          .AppendASCII("import_non_existent"), 0));
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(ExtensionApiTest, SharedModuleWhitelist) {
30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  ASSERT_TRUE(LoadExtension(
31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      test_data_dir_.AppendASCII("shared_module")
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)          .AppendASCII("shared_whitelist")));
33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EXPECT_FALSE(InstallExtension(
35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      test_data_dir_.AppendASCII("shared_module")
36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)          .AppendASCII("import_not_in_whitelist"), 0));
37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
38