83ae8bd7e093b104976461868b3eaa4c35b14c3d
[platform/framework/web/crosswalk.git] / src / xwalk / application / common / manifest_handlers / warp_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/warp_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_widget_keys;
13
14 namespace application {
15
16 class WARPHandlerTest: public testing::Test {
17  public:
18   virtual void SetUp() OVERRIDE {
19     manifest.SetString(keys::kNameKey, "no name");
20     manifest.SetString(keys::kVersionKey, "0");
21   }
22
23   scoped_refptr<ApplicationData> CreateApplication() {
24     std::string error;
25     scoped_refptr<ApplicationData> application = ApplicationData::Create(
26         base::FilePath(), ApplicationData::LOCAL_DIRECTORY,
27         manifest, "", &error);
28     return application;
29   }
30
31   const WARPInfo* GetWARPInfo(
32       scoped_refptr<ApplicationData> application) {
33     const WARPInfo* info = static_cast<WARPInfo*>(
34         application->GetManifestData(keys::kAccessKey));
35     return info;
36   }
37
38   base::DictionaryValue manifest;
39 };
40
41 // FIXME: the default WARP policy settings in WARP manifest handler
42 // are temporally removed, since they had affected some tests and legacy apps.
43 TEST_F(WARPHandlerTest, NoWARP) {
44   scoped_refptr<ApplicationData> application = CreateApplication();
45   EXPECT_TRUE(application.get());
46   EXPECT_FALSE(GetWARPInfo(application));
47 }
48
49 TEST_F(WARPHandlerTest, OneWARP) {
50   base::DictionaryValue* warp = new base::DictionaryValue;
51   warp->SetString(keys::kAccessOriginKey, "http://www.sample.com");
52   warp->SetBoolean(keys::kAccessSubdomainsKey, true);
53   manifest.Set(keys::kAccessKey, warp);
54   scoped_refptr<ApplicationData> application = CreateApplication();
55   EXPECT_TRUE(application.get());
56   EXPECT_EQ(application->GetPackageType(), Package::WGT);
57   const WARPInfo* info = GetWARPInfo(application);
58   EXPECT_TRUE(info);
59   scoped_ptr<base::ListValue> list(info->GetWARP()->DeepCopy());
60   base::DictionaryValue* new_warp;
61   list->GetDictionary(0, &new_warp);
62   EXPECT_TRUE(new_warp);
63   EXPECT_TRUE(warp->Equals(new_warp));
64 }
65
66 TEST_F(WARPHandlerTest, WARPs) {
67   base::DictionaryValue* warp1 = new base::DictionaryValue;
68   warp1->SetString(keys::kAccessOriginKey, "http://www.sample1.com");
69   warp1->SetBoolean(keys::kAccessSubdomainsKey, true);
70   base::DictionaryValue* warp2 = new base::DictionaryValue;
71   warp2->SetString(keys::kAccessOriginKey, "http://www.sample2.com");
72   warp2->SetBoolean(keys::kAccessSubdomainsKey, false);
73   base::ListValue* warp_list = new base::ListValue;
74   warp_list->Append(warp1);
75   warp_list->Append(warp2);
76   manifest.Set(keys::kAccessKey, warp_list);
77
78   scoped_refptr<ApplicationData> application = CreateApplication();
79   EXPECT_TRUE(application.get());
80   EXPECT_EQ(application->GetPackageType(), Package::WGT);
81
82   const WARPInfo* info = GetWARPInfo(application);
83   EXPECT_TRUE(info);
84
85   scoped_ptr<base::ListValue> list(info->GetWARP()->DeepCopy());
86
87   base::DictionaryValue* new_warp1;
88   list->GetDictionary(0, &new_warp1);
89   EXPECT_TRUE(new_warp1);
90   base::DictionaryValue* new_warp2;
91   list->GetDictionary(1, &new_warp2);
92   EXPECT_TRUE(new_warp2);
93
94   EXPECT_TRUE(warp1->Equals(new_warp1));
95   EXPECT_TRUE(warp2->Equals(new_warp2));
96 }
97
98 }  // namespace application
99 }  // namespace xwalk