Upstream version 7.35.141.0
[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(), Manifest::INVALID_TYPE, manifest, "", &error);
27     return application;
28   }
29
30   const WARPInfo* GetWARPInfo(
31       scoped_refptr<ApplicationData> application) {
32     const WARPInfo* info = static_cast<WARPInfo*>(
33         application->GetManifestData(keys::kAccessKey));
34     return info;
35   }
36
37   base::DictionaryValue manifest;
38 };
39
40 // FIXME: the default WARP policy settings in WARP manifest handler
41 // are temporally removed, since they had affected some tests and legacy apps.
42 TEST_F(WARPHandlerTest, NoWARP) {
43   scoped_refptr<ApplicationData> application = CreateApplication();
44   EXPECT_TRUE(application.get());
45   EXPECT_FALSE(GetWARPInfo(application));
46 }
47
48 TEST_F(WARPHandlerTest, OneWARP) {
49   base::DictionaryValue* warp = new base::DictionaryValue;
50   warp->SetString(keys::kAccessOriginKey, "http://www.sample.com");
51   warp->SetBoolean(keys::kAccessSubdomainsKey, true);
52   manifest.Set(keys::kAccessKey, warp);
53   scoped_refptr<ApplicationData> application = CreateApplication();
54   EXPECT_TRUE(application.get());
55   EXPECT_EQ(application->GetPackageType(), Package::WGT);
56   const WARPInfo* info = GetWARPInfo(application);
57   EXPECT_TRUE(info);
58   scoped_ptr<base::ListValue> list(info->GetWARP()->DeepCopy());
59   base::DictionaryValue* new_warp;
60   list->GetDictionary(0, &new_warp);
61   EXPECT_TRUE(new_warp);
62   EXPECT_TRUE(warp->Equals(new_warp));
63 }
64
65 TEST_F(WARPHandlerTest, WARPs) {
66   base::DictionaryValue* warp1 = new base::DictionaryValue;
67   warp1->SetString(keys::kAccessOriginKey, "http://www.sample1.com");
68   warp1->SetBoolean(keys::kAccessSubdomainsKey, true);
69   base::DictionaryValue* warp2 = new base::DictionaryValue;
70   warp2->SetString(keys::kAccessOriginKey, "http://www.sample2.com");
71   warp2->SetBoolean(keys::kAccessSubdomainsKey, false);
72   base::ListValue* warp_list = new base::ListValue;
73   warp_list->Append(warp1);
74   warp_list->Append(warp2);
75   manifest.Set(keys::kAccessKey, warp_list);
76
77   scoped_refptr<ApplicationData> application = CreateApplication();
78   EXPECT_TRUE(application.get());
79   EXPECT_EQ(application->GetPackageType(), Package::WGT);
80
81   const WARPInfo* info = GetWARPInfo(application);
82   EXPECT_TRUE(info);
83
84   scoped_ptr<base::ListValue> list(info->GetWARP()->DeepCopy());
85
86   base::DictionaryValue* new_warp1;
87   list->GetDictionary(0, &new_warp1);
88   EXPECT_TRUE(new_warp1);
89   base::DictionaryValue* new_warp2;
90   list->GetDictionary(1, &new_warp2);
91   EXPECT_TRUE(new_warp2);
92
93   EXPECT_TRUE(warp1->Equals(new_warp1));
94   EXPECT_TRUE(warp2->Equals(new_warp2));
95 }
96
97 }  // namespace application
98 }  // namespace xwalk