Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / extensions / common / manifest_handlers / file_handler_manifest_unittest.cc
1 // Copyright 2014 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 #include "extensions/common/manifest_constants.h"
6 #include "extensions/common/manifest_handlers/file_handler_info.h"
7 #include "extensions/common/manifest_test.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace extensions {
11
12 namespace errors = manifest_errors;
13
14 typedef ManifestTest FileHandlersManifestTest;
15
16 TEST_F(FileHandlersManifestTest, InvalidFileHandlers) {
17   Testcase testcases[] = {
18     Testcase("file_handlers_invalid_handlers.json",
19              errors::kInvalidFileHandlers),
20     Testcase("file_handlers_invalid_type.json",
21              errors::kInvalidFileHandlerType),
22     Testcase("file_handlers_invalid_extension.json",
23              errors::kInvalidFileHandlerExtension),
24     Testcase("file_handlers_invalid_no_type_or_extension.json",
25              errors::kInvalidFileHandlerNoTypeOrExtension),
26     Testcase("file_handlers_invalid_type_element.json",
27              errors::kInvalidFileHandlerTypeElement),
28     Testcase("file_handlers_invalid_extension_element.json",
29              errors::kInvalidFileHandlerExtensionElement),
30     Testcase("file_handlers_invalid_too_many.json",
31              errors::kInvalidFileHandlersTooManyTypesAndExtensions),
32   };
33   RunTestcases(testcases, arraysize(testcases), EXPECT_TYPE_ERROR);
34 }
35
36 TEST_F(FileHandlersManifestTest, ValidFileHandlers) {
37   scoped_refptr<const Extension> extension =
38       LoadAndExpectSuccess("file_handlers_valid.json");
39
40   ASSERT_TRUE(extension.get());
41   const FileHandlersInfo* handlers =
42       FileHandlers::GetFileHandlers(extension.get());
43   ASSERT_TRUE(handlers != NULL);
44   ASSERT_EQ(2U, handlers->size());
45
46   FileHandlerInfo handler = handlers->at(0);
47   EXPECT_EQ("image", handler.id);
48   EXPECT_EQ(1U, handler.types.size());
49   EXPECT_EQ(1U, handler.types.count("image/*"));
50   EXPECT_EQ(2U, handler.extensions.size());
51   EXPECT_EQ(1U, handler.extensions.count(".png"));
52   EXPECT_EQ(1U, handler.extensions.count(".gif"));
53
54   handler = handlers->at(1);
55   EXPECT_EQ("text", handler.id);
56   EXPECT_EQ(1U, handler.types.size());
57   EXPECT_EQ(1U, handler.types.count("text/*"));
58   EXPECT_EQ(0U, handler.extensions.size());
59 }
60
61 TEST_F(FileHandlersManifestTest, NotPlatformApp) {
62   // This should load successfully but have the file handlers ignored.
63   scoped_refptr<const Extension> extension =
64       LoadAndExpectSuccess("file_handlers_invalid_not_app.json");
65
66   ASSERT_TRUE(extension.get());
67   const FileHandlersInfo* handlers =
68       FileHandlers::GetFileHandlers(extension.get());
69   ASSERT_TRUE(handlers == NULL);
70 }
71
72 }  // namespace extensions