Upstream version 9.38.204.0
[platform/framework/web/crosswalk.git] / src / xwalk / application / common / manifest_handlers / csp_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/csp_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 namespace widget_keys = application_widget_keys;
14
15 namespace application {
16
17 class CSPHandlerTest: public testing::Test {
18  public:
19   scoped_refptr<ApplicationData> CreateApplication() {
20     std::string error;
21     scoped_refptr<ApplicationData> application = ApplicationData::Create(
22         base::FilePath(), ApplicationData::LOCAL_DIRECTORY,
23         manifest, "", &error);
24     return application;
25   }
26
27   const CSPInfo* GetCSPInfo(
28       scoped_refptr<ApplicationData> application) {
29     const CSPInfo* info = static_cast<CSPInfo*>(
30         application->GetManifestData(GetCSPKey(application->GetPackageType())));
31     return info;
32   }
33
34   base::DictionaryValue manifest;
35 };
36
37 // FIXME: the default CSP policy settings in CSP manifest handler
38 // are temporally removed, since they had affected some tests and legacy apps.
39 TEST_F(CSPHandlerTest, DISABLED_NoCSP) {
40   manifest.SetString(keys::kNameKey, "no name");
41   manifest.SetString(keys::kXWalkVersionKey, "0");
42   scoped_refptr<ApplicationData> application = CreateApplication();
43   EXPECT_TRUE(application.get());
44   EXPECT_EQ(GetCSPInfo(application)->GetDirectives().size(), 2);
45 }
46
47 TEST_F(CSPHandlerTest, EmptyCSP) {
48   manifest.SetString(keys::kNameKey, "no name");
49   manifest.SetString(keys::kXWalkVersionKey, "0");
50   manifest.SetString(keys::kCSPKey, "");
51   scoped_refptr<ApplicationData> application = CreateApplication();
52   EXPECT_TRUE(application.get());
53   EXPECT_EQ(GetCSPInfo(application)->GetDirectives().size(), 0);
54 }
55
56 TEST_F(CSPHandlerTest, CSP) {
57   manifest.SetString(keys::kNameKey, "no name");
58   manifest.SetString(keys::kXWalkVersionKey, "0");
59   manifest.SetString(keys::kCSPKey, "default-src    'self'   ");
60   scoped_refptr<ApplicationData> application = CreateApplication();
61   EXPECT_TRUE(application.get());
62   const std::map<std::string, std::vector<std::string> >& policies =
63       GetCSPInfo(application)->GetDirectives();
64   EXPECT_EQ(policies.size(), 1);
65   std::map<std::string, std::vector<std::string> >::const_iterator it =
66       policies.find("default-src");
67   ASSERT_NE(it, policies.end());
68   EXPECT_EQ(it->second.size(), 1);
69   EXPECT_STREQ((it->second)[0].c_str(), "'self'");
70 }
71
72 #if defined(OS_TIZEN)
73 TEST_F(CSPHandlerTest, WGTEmptyCSP) {
74   manifest.SetString(widget_keys::kNameKey, "no name");
75   manifest.SetString(widget_keys::kXWalkVersionKey, "0");
76   manifest.SetString(widget_keys::kCSPKey, "");
77   scoped_refptr<ApplicationData> application = CreateApplication();
78   EXPECT_TRUE(application.get());
79   EXPECT_TRUE(GetCSPInfo(application));
80   EXPECT_EQ(GetCSPInfo(application)->GetDirectives().size(), 0);
81 }
82
83 TEST_F(CSPHandlerTest, WGTCSP) {
84   manifest.SetString(widget_keys::kNameKey, "no name");
85   manifest.SetString(widget_keys::kXWalkVersionKey, "0");
86   manifest.SetString(widget_keys::kCSPKey, "default-src    'self'   ");
87   scoped_refptr<ApplicationData> application = CreateApplication();
88   EXPECT_TRUE(application.get());
89   EXPECT_TRUE(GetCSPInfo(application));
90   const std::map<std::string, std::vector<std::string> >& policies =
91       GetCSPInfo(application)->GetDirectives();
92   EXPECT_EQ(policies.size(), 1);
93   std::map<std::string, std::vector<std::string> >::const_iterator it =
94       policies.find("default-src");
95   ASSERT_NE(it, policies.end());
96   EXPECT_EQ(it->second.size(), 1);
97   EXPECT_STREQ((it->second)[0].c_str(), "'self'");
98 }
99 #endif
100
101 }  // namespace application
102 }  // namespace xwalk