1163bf560d495e03297c15fa8ebb66ceada4f493
[platform/framework/web/crosswalk.git] / src / xwalk / application / common / manifest_handlers / permissions_handler_unittest.cc
1 // Copyright (c) 2013 Intel Corporation. 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 "xwalk/application/common/manifest_handlers/permissions_handler.h"
6
7 #include "xwalk/application/common/application_manifest_constants.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace xwalk {
11
12 namespace keys = application_manifest_keys;
13
14 namespace application {
15
16 namespace {
17
18 const PermissionSet& GetAPIPermissionsInfo(
19     scoped_refptr<const ApplicationData> application) {
20   PermissionsInfo* info = static_cast<PermissionsInfo*>(
21       application->GetManifestData(keys::kPermissionsKey));
22   DCHECK(info);
23   return info->GetAPIPermissions();
24 }
25
26 }  // namespace
27
28 class PermissionsHandlerTest: public testing::Test {
29 };
30
31 TEST_F(PermissionsHandlerTest, NonePermission) {
32   base::DictionaryValue manifest;
33   manifest.SetString(keys::kNameKey, "no name");
34   manifest.SetString(keys::kVersionKey, "0");
35   std::string error;
36   scoped_refptr<ApplicationData> application = ApplicationData::Create(
37       base::FilePath(),
38       Manifest::INVALID_TYPE,
39       manifest,
40       "",
41       &error);
42   EXPECT_TRUE(application.get());
43   EXPECT_EQ(GetAPIPermissionsInfo(application).size(), 0);
44 }
45
46 TEST_F(PermissionsHandlerTest, EmptyPermission) {
47   base::DictionaryValue manifest;
48   manifest.SetString(keys::kNameKey, "no name");
49   manifest.SetString(keys::kVersionKey, "0");
50   base::ListValue* permissions = new base::ListValue;
51   manifest.Set(keys::kPermissionsKey, permissions);
52   std::string error;
53   scoped_refptr<ApplicationData> application = ApplicationData::Create(
54       base::FilePath(),
55       Manifest::INVALID_TYPE,
56       manifest,
57       "",
58       &error);
59   EXPECT_TRUE(application.get());
60   EXPECT_EQ(GetAPIPermissionsInfo(application).size(), 0);
61 }
62
63 TEST_F(PermissionsHandlerTest, DeviceAPIPermission) {
64   base::DictionaryValue manifest;
65   manifest.SetString(keys::kNameKey, "no name");
66   manifest.SetString(keys::kVersionKey, "0");
67   base::ListValue* permissions = new base::ListValue;
68   permissions->AppendString("geolocation");
69   manifest.Set(keys::kPermissionsKey, permissions);
70   std::string error;
71   scoped_refptr<ApplicationData> application = ApplicationData::Create(
72       base::FilePath(),
73       Manifest::INVALID_TYPE,
74       manifest,
75       "",
76       &error);
77   EXPECT_TRUE(application.get());
78   const PermissionSet& permission_list =
79       GetAPIPermissionsInfo(application);
80   EXPECT_EQ(permission_list.size(), 1);
81   EXPECT_STREQ((*(permission_list.begin())).c_str(), "geolocation");
82 }
83
84 }  // namespace application
85 }  // namespace xwalk