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