Popular sites on the NTP: check that experiment group StartsWith (rather than IS...
[chromium-blink-merge.git] / chrome / browser / chromeos / mobile_config_unittest.cc
blobabd399201c1401a5820c7d00dac91a0dcd5f1092
1 // Copyright (c) 2012 The Chromium Authors. 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.
5 #include "chrome/browser/chromeos/mobile_config.h"
7 #include "base/time/time.h"
8 #include "testing/gtest/include/gtest/gtest.h"
10 namespace {
12 const char kBadManifest[] = "{\"version\": \"1\"}";
14 const char kGoodMobileConfig[] =
15 "{"
16 " \"version\": \"1.0\","
17 " \"carriers\" : {\n"
18 " \"carrier (country)\" : {\n"
19 " \"ids\" : [\n"
20 " {\n"
21 " \"id\": \"cr (country)\",\n"
22 " \"_comment\" : \"Based on SPN.\",\n"
23 " },\n"
24 " {\n"
25 " \"id\": \"Carrier (country)\",\n"
26 " \"_comment\" : \"Legacy ID when SPN is empty.\",\n"
27 " },\n"
28 " ],\n"
29 " \"top_up_url\" : \"http://www.carrier.com/\",\n"
30 " \"show_portal_button\" : true,\n"
31 " \"deals\" : [\n"
32 " {\n"
33 " \"deal_id\" : \"0\",\n"
34 " \"locales\" : [ \"en-US\", ],\n"
35 " \"expire_date\" : \"31/12/2099 0:0\",\n"
36 " \"notification_count\" : 1,\n"
37 " \"localized_content\" : {\n"
38 " \"en-US\" : {\n"
39 " \"notification_text\" : \"3G connectivity : Carrier.\",\n"
40 " },\n"
41 " \"default\" : {\n"
42 " \"notification_text\" : \"default_text.\",\n"
43 " },\n"
44 " },\n"
45 " },\n"
46 " ],\n"
47 " },"
48 " },"
49 " \"initial_locales\" : {\n"
50 " \"en-US\" : {\n"
51 " \"setup_url\" : \"accounts.carrier.com\",\n"
52 " },"
53 " },"
54 "}";
56 const char kOldDealMobileConfig[] =
57 "{"
58 " \"version\": \"1.0\","
59 " \"carriers\" : {\n"
60 " \"Carrier (country)\" : {\n"
61 " \"top_up_url\" : \"http://www.carrier.com/\",\n"
62 " \"deals\" : [\n"
63 " {\n"
64 " \"deal_id\" : \"0\",\n"
65 " \"locales\" : [ \"en-US\", ],\n"
66 " \"expire_date\" : \"01/01/01 0:0\",\n"
67 " \"notification_count\" : 1,\n"
68 " \"localized_content\" : {\n"
69 " \"en-US\" : {\n"
70 " \"notification_text\" : \"3G connectivity : Carrier.\",\n"
71 " },\n"
72 " \"default\" : {\n"
73 " \"notification_text\" : \"default_text.\",\n"
74 " },\n"
75 " },\n"
76 " },\n"
77 " ],\n"
78 " },"
79 " },"
80 "}";
82 const char kLocalMobileConfigNoDeals[] =
83 "{"
84 " \"version\": \"1.0\","
85 " \"exclude_deals\": true,"
86 " \"carriers\" : {\n"
87 " },"
88 "}";
90 const char kLocalMobileConfig[] =
91 "{"
92 " \"version\": \"1.0\","
93 " \"carriers\" : {\n"
94 " \"carrier (country)\" : {\n"
95 " \"exclude_deals\": true,"
96 " \"top_up_url\" : \"http://www.carrier-new-url.com/\",\n"
97 " \"deals\" : [\n"
98 " {\n"
99 " \"deal_id\" : \"1\",\n"
100 " \"locales\" : [ \"en-GB\", ],\n"
101 " \"expire_date\" : \"31/12/2099 0:0\",\n"
102 " \"notification_count\" : 2,\n"
103 " \"localized_content\" : {\n"
104 " \"en-GB\" : {\n"
105 " \"notification_text\" : \"3G connectivity : Carrier.\",\n"
106 " },\n"
107 " \"default\" : {\n"
108 " \"notification_text\" : \"default_text from local.\",\n"
109 " },\n"
110 " },\n"
111 " },\n"
112 " ],\n"
113 " },"
114 " },"
115 " \"initial_locales\" : {\n"
116 " \"en-US\" : {\n"
117 " \"setup_url\" : \"accounts.carrier.com/localized/\",\n"
118 " },"
119 " },"
120 "}";
122 } // anonymous namespace
124 namespace chromeos {
126 TEST(MobileConfigTest, Basic) {
127 MobileConfig config(kGoodMobileConfig, "en-US");
128 EXPECT_TRUE(config.IsReady());
130 const MobileConfig::Carrier* carrier;
131 carrier = config.GetCarrier("Carrier (country)");
132 EXPECT_TRUE(carrier != NULL);
133 carrier = config.GetCarrier("cr (country)");
134 EXPECT_TRUE(carrier != NULL);
135 EXPECT_EQ("http://www.carrier.com/", carrier->top_up_url());
136 EXPECT_EQ(true, carrier->show_portal_button());
137 const MobileConfig::CarrierDeal* deal;
138 deal = carrier->GetDefaultDeal();
139 EXPECT_TRUE(deal != NULL);
140 deal = carrier->GetDeal("0");
141 EXPECT_TRUE(deal != NULL);
142 EXPECT_EQ("en-US", deal->locales()[0]);
143 EXPECT_EQ(1, deal->notification_count());
144 EXPECT_EQ("3G connectivity : Carrier.",
145 deal->GetLocalizedString("en-US", "notification_text"));
146 EXPECT_EQ("default_text.",
147 deal->GetLocalizedString("en", "notification_text"));
149 base::Time reference_time;
150 base::Time::FromString("31/12/2099 0:00", &reference_time);
151 EXPECT_EQ(reference_time, deal->expire_date());
153 const MobileConfig::LocaleConfig* locale_config;
154 locale_config = config.GetLocaleConfig();
155 EXPECT_TRUE(locale_config != NULL);
156 EXPECT_EQ("accounts.carrier.com", locale_config->setup_url());
158 // Check same manifest but with another initial locale.
159 MobileConfig config_uk(kGoodMobileConfig, "en-GB");
160 EXPECT_TRUE(config_uk.IsReady());
161 locale_config = config_uk.GetLocaleConfig();
162 EXPECT_TRUE(locale_config == NULL);
165 TEST(MobileConfigTest, OldDeal) {
166 MobileConfig config(kOldDealMobileConfig, "en-US");
167 EXPECT_TRUE(config.IsReady());
168 const MobileConfig::Carrier* carrier;
169 carrier = config.GetCarrier("Carrier (country)");
170 EXPECT_TRUE(carrier != NULL);
171 // Check default value.
172 EXPECT_FALSE(carrier->show_portal_button());
173 const MobileConfig::CarrierDeal* deal;
174 // TODO(nkostylev): Pass fixed time instead of relying on Time::Now().
175 deal = carrier->GetDefaultDeal();
176 EXPECT_TRUE(deal == NULL);
179 TEST(MobileConfigTest, DealOtherLocale) {
180 MobileConfig config(kGoodMobileConfig, "en-GB");
181 EXPECT_TRUE(config.IsReady());
182 const MobileConfig::Carrier* carrier;
183 carrier = config.GetCarrier("Carrier (country)");
184 EXPECT_TRUE(carrier != NULL);
185 const MobileConfig::CarrierDeal* deal;
186 deal = carrier->GetDefaultDeal();
187 EXPECT_TRUE(deal == NULL);
190 TEST(MobileConfigTest, BadManifest) {
191 MobileConfig config(kBadManifest, "en-US");
192 EXPECT_FALSE(config.IsReady());
195 TEST(MobileConfigTest, LocalConfigNoDeals) {
196 MobileConfig config(kGoodMobileConfig, "en-US");
197 EXPECT_TRUE(config.IsReady());
198 config.LoadManifestFromString(kLocalMobileConfigNoDeals);
199 EXPECT_TRUE(config.IsReady());
200 const MobileConfig::Carrier* carrier;
201 carrier = config.GetCarrier("Carrier (country)");
202 EXPECT_TRUE(carrier != NULL);
203 const MobileConfig::CarrierDeal* deal;
204 deal = carrier->GetDefaultDeal();
205 EXPECT_TRUE(deal == NULL);
206 deal = carrier->GetDeal("0");
207 EXPECT_TRUE(deal == NULL);
210 TEST(MobileConfigTest, LocalConfig) {
211 MobileConfig config(kGoodMobileConfig, "en-GB");
212 EXPECT_TRUE(config.IsReady());
213 config.LoadManifestFromString(kLocalMobileConfig);
214 EXPECT_TRUE(config.IsReady());
216 const MobileConfig::Carrier* carrier;
217 carrier = config.GetCarrier("Carrier (country)");
218 EXPECT_TRUE(carrier != NULL);
219 EXPECT_EQ("http://www.carrier-new-url.com/", carrier->top_up_url());
221 const MobileConfig::CarrierDeal* deal;
222 deal = carrier->GetDeal("0");
223 EXPECT_TRUE(deal == NULL);
224 deal = carrier->GetDefaultDeal();
225 EXPECT_TRUE(deal != NULL);
226 deal = carrier->GetDeal("1");
227 EXPECT_TRUE(deal != NULL);
228 EXPECT_EQ("en-GB", deal->locales()[0]);
229 EXPECT_EQ(2, deal->notification_count());
230 EXPECT_EQ("3G connectivity : Carrier.",
231 deal->GetLocalizedString("en-GB", "notification_text"));
232 EXPECT_EQ("default_text from local.",
233 deal->GetLocalizedString("en", "notification_text"));
234 base::Time reference_time;
235 base::Time::FromString("31/12/2099 0:00", &reference_time);
236 EXPECT_EQ(reference_time, deal->expire_date());
238 // Now reload same global/local config files but with proper initial locale.
239 MobileConfig config_us(kGoodMobileConfig, "en-US");
240 EXPECT_TRUE(config_us.IsReady());
241 config_us.LoadManifestFromString(kLocalMobileConfig);
242 EXPECT_TRUE(config_us.IsReady());
243 const MobileConfig::LocaleConfig* locale_config;
244 locale_config = config_us.GetLocaleConfig();
245 EXPECT_TRUE(locale_config != NULL);
246 EXPECT_EQ("accounts.carrier.com/localized/", locale_config->setup_url());
249 } // namespace chromeos