blob: bb03d5c8facdec3b0978726bde16a9f03edc746e [file] [log] [blame]
Arman Ugurayf4c61812013-01-10 18:58:39 -08001// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
Ben Chanb39cb312012-11-01 22:55:25 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "shill/cellular_operator_info.h"
6
7#include <base/file_util.h>
8#include <gtest/gtest.h>
9
Arman Uguray73a83e62013-02-12 18:51:33 -080010#include "shill/glib.h"
11
Albert Chaulk0e1cdea2013-02-27 15:32:55 -080012using base::FilePath;
Arman Ugurayf4c61812013-01-10 18:58:39 -080013using std::map;
Ben Chanb39cb312012-11-01 22:55:25 -070014using std::string;
Arman Ugurayf4c61812013-01-10 18:58:39 -080015using std::vector;
Ben Chanb39cb312012-11-01 22:55:25 -070016
17namespace shill {
18
19namespace {
20
21const char kTestInfoFileContent[] =
Ben Chan20228c02012-11-04 21:43:50 -080022 "#\n"
23 "# Comments\n"
24 "#\n"
Arman Ugurayf4c61812013-01-10 18:58:39 -080025 "serviceproviders:3.0\n"
26 "country:us\n"
Ben Chanb39cb312012-11-01 22:55:25 -070027 "\n"
Arman Ugurayf4c61812013-01-10 18:58:39 -080028 "# TestProvider1\n"
29 "provider:1,1,0,1\n"
Arman Ugurayc9533572013-01-22 17:34:20 -080030 "identifier:provider1identifier\n"
Arman Ugurayf4c61812013-01-10 18:58:39 -080031 "name:,TestProvider1\n"
32 "mccmnc:000001,0,000002,0\n"
33 "sid:1,0,2,0,3,0\n"
34 "olp:POST,https://testurl,imei=${imei}&iccid=${iccid}\n"
35 "apn:2,testprovider1apn,,\n"
36 "name:en,Test Provider 1\n"
37 "name:de,Testmobilfunkanbieter 1\n"
Ben Chanb39cb312012-11-01 22:55:25 -070038 "\n"
Arman Ugurayf4c61812013-01-10 18:58:39 -080039 "# TestProvider2\n"
40 "provider:1,2,1,0\n"
Arman Ugurayc9533572013-01-22 17:34:20 -080041 "identifier:provider2identifier\n"
Arman Ugurayf4c61812013-01-10 18:58:39 -080042 "name:,TestProviderTwo\n"
43 "name:,TestProvider2\n"
44 "mccmnc:100001,1,100002,0\n"
45 "sid:4,0,5,1\n"
46 "olp:,https://testurl2,\n"
47 "olp:,https://testurl3,\n"
48 "apn:1,testprovider2apn,,\n"
49 "name:,Test Provider 2\n"
50 "apn:1,testprovider2apn2,testusername,testpassword\n"
51 "name:tr,Test Operatoru 2\n";
Ben Chanb39cb312012-11-01 22:55:25 -070052
53} // namespace
54
55class CellularOperatorInfoTest : public testing::Test {
56 public:
Arman Ugurayf4c61812013-01-10 18:58:39 -080057 CellularOperatorInfoTest() {}
Ben Chanb39cb312012-11-01 22:55:25 -070058
59 protected:
60 void SetUp() {
61 ASSERT_TRUE(file_util::CreateTemporaryFile(&info_file_path_));
62 ASSERT_EQ(arraysize(kTestInfoFileContent),
63 file_util::WriteFile(info_file_path_, kTestInfoFileContent,
64 arraysize(kTestInfoFileContent)));
65 }
66
Arman Uguray73a83e62013-02-12 18:51:33 -080067 void TruncateFile() {
68 FILE *file = file_util::OpenFile(info_file_path_, "rw");
69 file_util::TruncateFile(file);
70 file_util::CloseFile(file);
71 }
72
73 void WriteToFile(const char *content) {
74 ASSERT_EQ(strlen(content),
75 file_util::WriteFile(info_file_path_, content, strlen(content)));
76 }
77
78 void TruncateAndWriteToFile(const char *content) {
79 TruncateFile();
80 WriteToFile(content);
81 }
82
Ben Chanb39cb312012-11-01 22:55:25 -070083 void TearDown() {
84 ASSERT_TRUE(file_util::Delete(info_file_path_, false));
85 }
86
87 GLib glib_;
88 FilePath info_file_path_;
89 CellularOperatorInfo info_;
90};
91
Arman Ugurayf4c61812013-01-10 18:58:39 -080092TEST_F(CellularOperatorInfoTest, ParseSuccess) {
93 EXPECT_TRUE(info_.Load(info_file_path_));
Arman Uguray73a83e62013-02-12 18:51:33 -080094 EXPECT_EQ(2, info_.operators().size());
Arman Ugurayf4c61812013-01-10 18:58:39 -080095
96 const CellularOperatorInfo::CellularOperator *provider = info_.operators()[0];
97 EXPECT_FALSE(provider->is_primary());
98 EXPECT_TRUE(provider->requires_roaming());
Arman Uguray73a83e62013-02-12 18:51:33 -080099 EXPECT_EQ("us", provider->country());
100 EXPECT_EQ("provider1identifier", provider->identifier());
101 EXPECT_EQ(1, provider->name_list().size());
102 EXPECT_TRUE(provider->name_list()[0].language.empty());
103 EXPECT_EQ("TestProvider1", provider->name_list()[0].name);
104 EXPECT_EQ(2, provider->mccmnc_list().size());
105 EXPECT_EQ("000001", provider->mccmnc_list()[0]);
106 EXPECT_EQ("000002", provider->mccmnc_list()[1]);
107 EXPECT_EQ(3, provider->sid_list().size());
108 EXPECT_EQ("1", provider->sid_list()[0]);
109 EXPECT_EQ("2", provider->sid_list()[1]);
110 EXPECT_EQ("3", provider->sid_list()[2]);
111 EXPECT_EQ(1, provider->olp_list().size());
112 EXPECT_EQ("https://testurl", provider->olp_list()[0]->GetURL());
113 EXPECT_EQ("POST", provider->olp_list()[0]->GetMethod());
114 EXPECT_EQ("imei=${imei}&iccid=${iccid}",
115 provider->olp_list()[0]->GetPostData());
116 EXPECT_EQ(1, provider->apn_list().size());
117 EXPECT_EQ("testprovider1apn", provider->apn_list()[0]->apn);
118 EXPECT_TRUE(provider->apn_list()[0]->username.empty());
119 EXPECT_TRUE(provider->apn_list()[0]->password.empty());
120 EXPECT_EQ(2, provider->apn_list()[0]->name_list.size());
121 EXPECT_EQ("en", provider->apn_list()[0]->name_list[0].language);
122 EXPECT_EQ("Test Provider 1", provider->apn_list()[0]->name_list[0].name);
123 EXPECT_EQ("de", provider->apn_list()[0]->name_list[1].language);
124 EXPECT_EQ("Testmobilfunkanbieter 1",
125 provider->apn_list()[0]->name_list[1].name);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800126
127 const CellularOperatorInfo::CellularOperator *provider2 =
128 info_.operators()[1];
129 EXPECT_TRUE(provider2->is_primary());
130 EXPECT_FALSE(provider2->requires_roaming());
Arman Uguray73a83e62013-02-12 18:51:33 -0800131 EXPECT_EQ("us", provider2->country());
132 EXPECT_EQ("provider2identifier", provider2->identifier());
133 EXPECT_EQ(2, provider2->name_list().size());
134 EXPECT_TRUE(provider2->name_list()[0].language.empty());
135 EXPECT_EQ("TestProviderTwo", provider2->name_list()[0].name);
136 EXPECT_TRUE(provider2->name_list()[1].language.empty());
137 EXPECT_EQ("TestProvider2", provider2->name_list()[1].name);
138 EXPECT_EQ(2, provider2->mccmnc_list().size());
139 EXPECT_EQ("100001", provider2->mccmnc_list()[0]);
140 EXPECT_EQ("100002", provider2->mccmnc_list()[1]);
141 EXPECT_EQ(2, provider2->sid_list().size());
142 EXPECT_EQ("4", provider2->sid_list()[0]);
143 EXPECT_EQ("5", provider2->sid_list()[1]);
144 EXPECT_EQ(2, provider2->olp_list().size());
145 EXPECT_EQ("https://testurl2", provider2->olp_list()[0]->GetURL());
146 EXPECT_TRUE(provider2->olp_list()[0]->GetMethod().empty());
147 EXPECT_TRUE(provider2->olp_list()[0]->GetPostData().empty());
148 EXPECT_EQ("https://testurl3", provider2->olp_list()[1]->GetURL());
149 EXPECT_TRUE(provider2->olp_list()[1]->GetMethod().empty());
150 EXPECT_TRUE(provider2->olp_list()[1]->GetPostData().empty());
151 EXPECT_EQ(2, provider2->apn_list().size());
152 EXPECT_EQ("testprovider2apn", provider2->apn_list()[0]->apn);
153 EXPECT_TRUE(provider2->apn_list()[0]->username.empty());
154 EXPECT_TRUE(provider2->apn_list()[0]->password.empty());
155 EXPECT_EQ(1, provider2->apn_list()[0]->name_list.size());
156 EXPECT_TRUE(provider2->apn_list()[0]->name_list[0].language.empty());
157 EXPECT_EQ("Test Provider 2",
158 provider2->apn_list()[0]->name_list[0].name);
159 EXPECT_EQ("testprovider2apn2", provider2->apn_list()[1]->apn);
160 EXPECT_EQ("testusername", provider2->apn_list()[1]->username);
161 EXPECT_EQ("testpassword", provider2->apn_list()[1]->password);
162 EXPECT_EQ(1, provider2->apn_list()[1]->name_list.size());
163 EXPECT_EQ("tr", provider2->apn_list()[1]->name_list[0].language);
164 EXPECT_EQ("Test Operatoru 2",
165 provider2->apn_list()[1]->name_list[0].name);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800166}
167
168TEST_F(CellularOperatorInfoTest, GetCellularOperatorByMCCMNC) {
Ben Chanb39cb312012-11-01 22:55:25 -0700169 EXPECT_TRUE(info_.Load(info_file_path_));
170
Arman Ugurayf4c61812013-01-10 18:58:39 -0800171 EXPECT_FALSE(info_.GetCellularOperatorByMCCMNC("1"));
172 EXPECT_FALSE(info_.GetCellularOperatorByMCCMNC("000003"));
173 EXPECT_FALSE(info_.GetCellularOperatorByMCCMNC("bananas"));
174 EXPECT_FALSE(info_.GetCellularOperatorByMCCMNC("abcd"));
Ben Chanb39cb312012-11-01 22:55:25 -0700175
Arman Ugurayf4c61812013-01-10 18:58:39 -0800176 const CellularOperatorInfo::CellularOperator *provider = NULL;
177 EXPECT_TRUE((provider = info_.GetCellularOperatorByMCCMNC("000001")));
Arman Uguray73a83e62013-02-12 18:51:33 -0800178 EXPECT_EQ(info_.operators()[0], provider);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800179 EXPECT_TRUE((provider = info_.GetCellularOperatorByMCCMNC("100001")));
Arman Uguray73a83e62013-02-12 18:51:33 -0800180 EXPECT_EQ(info_.operators()[1], provider);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800181 EXPECT_TRUE((provider = info_.GetCellularOperatorByMCCMNC("000002")));
Arman Uguray73a83e62013-02-12 18:51:33 -0800182 EXPECT_EQ(info_.operators()[0], provider);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800183 EXPECT_TRUE((provider = info_.GetCellularOperatorByMCCMNC("100002")));
Arman Uguray73a83e62013-02-12 18:51:33 -0800184 EXPECT_EQ(info_.operators()[1], provider);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800185}
Ben Chanb39cb312012-11-01 22:55:25 -0700186
Arman Ugurayf4c61812013-01-10 18:58:39 -0800187TEST_F(CellularOperatorInfoTest, GetCellularOperatorBySID) {
188 EXPECT_TRUE(info_.Load(info_file_path_));
189
190 EXPECT_FALSE(info_.GetCellularOperatorBySID("000001"));
191 EXPECT_FALSE(info_.GetCellularOperatorBySID("000002"));
192 EXPECT_FALSE(info_.GetCellularOperatorBySID("100001"));
193 EXPECT_FALSE(info_.GetCellularOperatorBySID("100002"));
194 EXPECT_FALSE(info_.GetCellularOperatorBySID("banana"));
195
196 const CellularOperatorInfo::CellularOperator *provider = NULL;
197 EXPECT_TRUE((provider = info_.GetCellularOperatorBySID("1")));
Arman Uguray73a83e62013-02-12 18:51:33 -0800198 EXPECT_EQ(info_.operators()[0], provider);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800199 EXPECT_TRUE((provider = info_.GetCellularOperatorBySID("4")));
Arman Uguray73a83e62013-02-12 18:51:33 -0800200 EXPECT_EQ(info_.operators()[1], provider);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800201 EXPECT_TRUE((provider = info_.GetCellularOperatorBySID("2")));
Arman Uguray73a83e62013-02-12 18:51:33 -0800202 EXPECT_EQ(info_.operators()[0], provider);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800203 EXPECT_TRUE((provider = info_.GetCellularOperatorBySID("5")));
Arman Uguray73a83e62013-02-12 18:51:33 -0800204 EXPECT_EQ(info_.operators()[1], provider);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800205 EXPECT_TRUE((provider = info_.GetCellularOperatorBySID("3")));
Arman Uguray73a83e62013-02-12 18:51:33 -0800206 EXPECT_EQ(info_.operators()[0], provider);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800207}
208
Arman Uguray73a83e62013-02-12 18:51:33 -0800209TEST_F(CellularOperatorInfoTest, GetCellularOperators) {
Arman Ugurayf4c61812013-01-10 18:58:39 -0800210 EXPECT_TRUE(info_.Load(info_file_path_));
211
212 const vector<const CellularOperatorInfo::CellularOperator *> *list = NULL;
Arman Uguray73a83e62013-02-12 18:51:33 -0800213 EXPECT_FALSE(info_.GetCellularOperators("banana"));
214 EXPECT_FALSE(info_.GetCellularOperators("TestProvider2"));
Arman Ugurayf4c61812013-01-10 18:58:39 -0800215
Arman Uguray73a83e62013-02-12 18:51:33 -0800216 EXPECT_TRUE((list = info_.GetCellularOperators("TestProvider1")));
217 EXPECT_EQ(1, list->size());
218 EXPECT_EQ("testprovider1apn", (*list)[0]->apn_list()[0]->apn);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800219
Arman Uguray73a83e62013-02-12 18:51:33 -0800220 EXPECT_FALSE(info_.GetCellularOperators("TestProvider2"));
Arman Ugurayf4c61812013-01-10 18:58:39 -0800221
Arman Uguray73a83e62013-02-12 18:51:33 -0800222 EXPECT_TRUE((list = info_.GetCellularOperators("TestProviderTwo")));
223 EXPECT_EQ(1, list->size());
224 EXPECT_EQ("testprovider2apn", (*list)[0]->apn_list()[0]->apn);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800225}
226
227TEST_F(CellularOperatorInfoTest, GetOLPByMCCMNC) {
228 EXPECT_TRUE(info_.Load(info_file_path_));
229
230 const CellularService::OLP *olp = NULL;
231 EXPECT_TRUE((olp = info_.GetOLPByMCCMNC("000001")));
232 EXPECT_EQ("https://testurl", olp->GetURL());
233 EXPECT_EQ("POST", olp->GetMethod());
234 EXPECT_EQ("imei=${imei}&iccid=${iccid}", olp->GetPostData());
235
236 EXPECT_TRUE((olp = info_.GetOLPByMCCMNC("000002")));
237 EXPECT_EQ("https://testurl", olp->GetURL());
238 EXPECT_EQ("POST", olp->GetMethod());
239 EXPECT_EQ("imei=${imei}&iccid=${iccid}", olp->GetPostData());
240
241 EXPECT_TRUE((olp = info_.GetOLPByMCCMNC("100001")));
242 EXPECT_EQ("https://testurl3", olp->GetURL());
Arman Uguray73a83e62013-02-12 18:51:33 -0800243 EXPECT_TRUE(olp->GetMethod().empty());
244 EXPECT_TRUE(olp->GetPostData().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800245
246 EXPECT_TRUE((olp = info_.GetOLPByMCCMNC("100002")));
247 EXPECT_EQ("https://testurl2", olp->GetURL());
Arman Uguray73a83e62013-02-12 18:51:33 -0800248 EXPECT_TRUE(olp->GetMethod().empty());
249 EXPECT_TRUE(olp->GetPostData().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800250
251 EXPECT_FALSE(info_.GetOLPByMCCMNC("000003"));
252 EXPECT_FALSE(info_.GetOLPByMCCMNC("000004"));
253}
254
255TEST_F(CellularOperatorInfoTest, GetOLPBySID) {
256 EXPECT_TRUE(info_.Load(info_file_path_));
257
258 const CellularService::OLP *olp = NULL;
259 EXPECT_TRUE((olp = info_.GetOLPBySID("1")));
260 EXPECT_EQ("https://testurl", olp->GetURL());
261 EXPECT_EQ("POST", olp->GetMethod());
262 EXPECT_EQ("imei=${imei}&iccid=${iccid}", olp->GetPostData());
263
264 EXPECT_TRUE((olp = info_.GetOLPBySID("2")));
265 EXPECT_EQ("https://testurl", olp->GetURL());
266 EXPECT_EQ("POST", olp->GetMethod());
267 EXPECT_EQ("imei=${imei}&iccid=${iccid}", olp->GetPostData());
268
269 EXPECT_TRUE((olp = info_.GetOLPBySID("3")));
270 EXPECT_EQ("https://testurl", olp->GetURL());
271 EXPECT_EQ("POST", olp->GetMethod());
272 EXPECT_EQ("imei=${imei}&iccid=${iccid}", olp->GetPostData());
273
274 EXPECT_TRUE((olp = info_.GetOLPBySID("4")));
275 EXPECT_EQ("https://testurl2", olp->GetURL());
Arman Uguray73a83e62013-02-12 18:51:33 -0800276 EXPECT_TRUE(olp->GetMethod().empty());
277 EXPECT_TRUE(olp->GetPostData().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800278
279 EXPECT_TRUE((olp = info_.GetOLPBySID("5")));
280 EXPECT_EQ("https://testurl3", olp->GetURL());
Arman Uguray73a83e62013-02-12 18:51:33 -0800281 EXPECT_TRUE(olp->GetMethod().empty());
282 EXPECT_TRUE(olp->GetPostData().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800283
284 EXPECT_FALSE(info_.GetOLPBySID("6"));
285 EXPECT_FALSE(info_.GetOLPBySID("7"));
286}
287
Arman Uguray73a83e62013-02-12 18:51:33 -0800288TEST_F(CellularOperatorInfoTest, BadServiceProvidersLine) {
289 TruncateFile();
290
291 // Invalid first line.
292 TruncateAndWriteToFile(
293 "# Bla bla bla\n"
294 "# Blabbidy boo\n"
295 "serviceproviders:2.3\n");
296 EXPECT_FALSE(info_.Load(info_file_path_));
297
298 // Valid first line
299 TruncateAndWriteToFile(
300 "# Bla bla bla\n"
301 "# Blabbidy boo\n"
302 "serviceproviders:3.0\n");
303 EXPECT_TRUE(info_.Load(info_file_path_));
304}
305
Arman Ugurayf4c61812013-01-10 18:58:39 -0800306TEST_F(CellularOperatorInfoTest, HandleProvider) {
Arman Uguray73a83e62013-02-12 18:51:33 -0800307 // Invalid provider entry
308 TruncateAndWriteToFile(
309 "serviceproviders:3.0\n"
310 "# Invalid provider entry\n"
311 "provider:0,0,0\n");
312 EXPECT_FALSE(info_.Load(info_file_path_));
313 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800314
Arman Uguray73a83e62013-02-12 18:51:33 -0800315 TruncateAndWriteToFile(
316 "serviceproviders:3.0\n"
317 "# Invalid provider entry\n"
318 "provider:1,1,0,1\n");
319 EXPECT_TRUE(info_.Load(info_file_path_));
320 EXPECT_EQ(1, info_.operators().size());
321 EXPECT_FALSE(info_.operators()[0]->is_primary());
322 EXPECT_TRUE(info_.operators()[0]->requires_roaming());
323 EXPECT_TRUE(info_.operators()[0]->country().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800324
Arman Uguray73a83e62013-02-12 18:51:33 -0800325 TruncateAndWriteToFile(
326 "serviceproviders:3.0\n"
327 "# Invalid provider entry\n"
328 "country:us\n"
329 "provider:1,1,1,0\n");
330 EXPECT_TRUE(info_.Load(info_file_path_));
331 EXPECT_EQ(1, info_.operators().size());
332 EXPECT_TRUE(info_.operators()[0]->is_primary());
333 EXPECT_FALSE(info_.operators()[0]->requires_roaming());
334 EXPECT_EQ("us", info_.operators()[0]->country());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800335}
336
337TEST_F(CellularOperatorInfoTest, HandleMCCMNC) {
Arman Uguray73a83e62013-02-12 18:51:33 -0800338 TruncateAndWriteToFile(
339 "serviceproviders:3.0\n"
340 "# MCCMNC entry without a provider.\n"
341 "mccmnc:1,1\n");
342 EXPECT_FALSE(info_.Load(info_file_path_));
Arman Ugurayf4c61812013-01-10 18:58:39 -0800343
Arman Uguray73a83e62013-02-12 18:51:33 -0800344 TruncateAndWriteToFile(
345 "serviceproviders:3.0\n"
346 "# Empty MCCMNC entry.\n"
347 "provider:1,1,0,1\n"
348 "mccmnc:\n");
349 EXPECT_FALSE(info_.Load(info_file_path_));
350 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800351
Arman Uguray73a83e62013-02-12 18:51:33 -0800352 TruncateAndWriteToFile(
353 "serviceproviders:3.0\n"
354 "# MCCMNC entry has odd number of values.\n"
355 "provider:1,1,0,1\n"
356 "mccmnc:000001,0,000002\n");
Arman Ugurayf4c61812013-01-10 18:58:39 -0800357
Arman Uguray73a83e62013-02-12 18:51:33 -0800358 EXPECT_FALSE(info_.Load(info_file_path_));
359 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800360
Arman Uguray73a83e62013-02-12 18:51:33 -0800361 TruncateAndWriteToFile(
362 "serviceproviders:3.0\n"
363 "# MCCMNC entry in this one is good.\n"
364 "provider:1,1,0,1\n"
365 "mccmnc:000001,0,000002,3\n");
366
367 EXPECT_TRUE(info_.Load(info_file_path_));
368 EXPECT_EQ(1, info_.operators().size());
369 EXPECT_EQ(2, info_.operators()[0]->mccmnc_list().size());
370 EXPECT_EQ("000001", info_.operators()[0]->mccmnc_list()[0]);
371 EXPECT_EQ("000002", info_.operators()[0]->mccmnc_list()[1]);
372 EXPECT_EQ(info_.operators()[0], info_.GetCellularOperatorByMCCMNC("000001"));
373 EXPECT_EQ(info_.operators()[0], info_.GetCellularOperatorByMCCMNC("000002"));
374 EXPECT_EQ(NULL, info_.GetCellularOperatorByMCCMNC("000003"));
Arman Ugurayf4c61812013-01-10 18:58:39 -0800375}
376
377TEST_F(CellularOperatorInfoTest, HandleName) {
Arman Uguray73a83e62013-02-12 18:51:33 -0800378 TruncateAndWriteToFile(
379 "serviceproviders:3.0\n"
380 "# No provider entry\n"
381 "name:,\n");
382 EXPECT_FALSE(info_.Load(info_file_path_));
383 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800384
Arman Uguray73a83e62013-02-12 18:51:33 -0800385 TruncateAndWriteToFile(
386 "serviceproviders:3.0\n"
387 "provider:1,1,0,0\n"
388 "# Name has incorrect number of fields.\n"
389 "name:,,\n");
390 EXPECT_FALSE(info_.Load(info_file_path_));
391 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800392
Arman Uguray73a83e62013-02-12 18:51:33 -0800393 TruncateAndWriteToFile(
394 "serviceproviders:3.0\n"
395 "provider:1,1,0,0\n"
396 "# Name is valid.\n"
397 "name:en,Test Name\n");
398 EXPECT_TRUE(info_.Load(info_file_path_));
399 EXPECT_EQ(1, info_.operators().size());
400 EXPECT_EQ(1, info_.operators()[0]->name_list().size());
401 EXPECT_EQ("en", info_.operators()[0]->name_list()[0].language);
402 EXPECT_EQ("Test Name", info_.operators()[0]->name_list()[0].name);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800403
Arman Uguray73a83e62013-02-12 18:51:33 -0800404 TruncateAndWriteToFile(
405 "serviceproviders:3.0\n"
406 "provider:1,1,0,0\n"
407 "# More than one valid names.\n"
408 "name:en,Test Name\n"
409 "name:,Other Name\n"
410 "name:de,\n");
411 EXPECT_TRUE(info_.Load(info_file_path_));
412 EXPECT_EQ(1, info_.operators().size());
413 EXPECT_EQ(3, info_.operators()[0]->name_list().size());
414 EXPECT_EQ("en", info_.operators()[0]->name_list()[0].language);
415 EXPECT_EQ("Test Name", info_.operators()[0]->name_list()[0].name);
416 EXPECT_TRUE(info_.operators()[0]->name_list()[1].language.empty());
417 EXPECT_EQ("Other Name", info_.operators()[0]->name_list()[1].name);
418 EXPECT_EQ("de", info_.operators()[0]->name_list()[2].language);
419 EXPECT_TRUE(info_.operators()[0]->name_list()[2].name.empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800420}
421
422TEST_F(CellularOperatorInfoTest, HandleAPN) {
Arman Uguray73a83e62013-02-12 18:51:33 -0800423 TruncateAndWriteToFile(
424 "serviceproviders:3.0\n"
425 "# No provider\n"
426 "apn:,,,\n");
427 EXPECT_FALSE(info_.Load(info_file_path_));
428 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800429
Arman Uguray73a83e62013-02-12 18:51:33 -0800430 TruncateAndWriteToFile(
431 "serviceproviders:3.0\n"
432 "provider:1,0,0,0\n"
433 "# Badly formed apn line.\n"
434 "apn:,\n");
435 EXPECT_FALSE(info_.Load(info_file_path_));
436 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800437
Arman Uguray73a83e62013-02-12 18:51:33 -0800438 TruncateAndWriteToFile(
439 "serviceproviders:3.0\n"
440 "provider:1,0,0,0\n"
441 "apn:0,testapn,testusername,testpassword\n");
442 EXPECT_TRUE(info_.Load(info_file_path_));
443 EXPECT_EQ(1, info_.operators().size());
444 EXPECT_EQ(1, info_.operators()[0]->apn_list().size());
445 EXPECT_EQ("testapn", info_.operators()[0]->apn_list()[0]->apn);
446 EXPECT_EQ("testusername", info_.operators()[0]->apn_list()[0]->username);
447 EXPECT_EQ("testpassword", info_.operators()[0]->apn_list()[0]->password);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800448
Arman Uguray73a83e62013-02-12 18:51:33 -0800449 TruncateAndWriteToFile(
450 "serviceproviders:3.0\n"
451 "provider:1,0,0,0\n"
452 "apn:0,apn1,user1,password1\n"
453 "apn:2,apn2,user2,password2\n"
454 "name:en,Apn Name\n"
455 "name:de,Apn Name2\n");
456 EXPECT_TRUE(info_.Load(info_file_path_));
457 EXPECT_EQ(1, info_.operators().size());
458 EXPECT_EQ(2, info_.operators()[0]->apn_list().size());
459 EXPECT_EQ("apn1", info_.operators()[0]->apn_list()[0]->apn);
460 EXPECT_EQ("user1", info_.operators()[0]->apn_list()[0]->username);
461 EXPECT_EQ("password1", info_.operators()[0]->apn_list()[0]->password);
462 EXPECT_EQ("apn2", info_.operators()[0]->apn_list()[1]->apn);
463 EXPECT_EQ("user2", info_.operators()[0]->apn_list()[1]->username);
464 EXPECT_EQ("password2", info_.operators()[0]->apn_list()[1]->password);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800465
Arman Uguray73a83e62013-02-12 18:51:33 -0800466 EXPECT_TRUE(info_.operators()[0]->apn_list()[0]->name_list.empty());
467 EXPECT_EQ(2, info_.operators()[0]->apn_list()[1]->name_list.size());
468 EXPECT_EQ("en",
469 info_.operators()[0]->apn_list()[1]->name_list[0].language);
470 EXPECT_EQ("Apn Name",
471 info_.operators()[0]->apn_list()[1]->name_list[0].name);
472 EXPECT_EQ("de",
473 info_.operators()[0]->apn_list()[1]->name_list[1].language);
474 EXPECT_EQ("Apn Name2",
475 info_.operators()[0]->apn_list()[1]->name_list[1].name);
Arman Ugurayf4c61812013-01-10 18:58:39 -0800476}
477
478TEST_F(CellularOperatorInfoTest, HandleSID) {
Arman Uguray73a83e62013-02-12 18:51:33 -0800479 TruncateAndWriteToFile(
480 "serviceproviders:3.0\n"
481 "# SID entry without a provider.\n"
482 "sid:1,1\n");
483 EXPECT_FALSE(info_.Load(info_file_path_));
Arman Ugurayf4c61812013-01-10 18:58:39 -0800484
Arman Uguray73a83e62013-02-12 18:51:33 -0800485 TruncateAndWriteToFile(
486 "serviceproviders:3.0\n"
487 "# Empty SID entry.\n"
488 "provider:1,1,0,1\n"
489 "sid:\n");
490 EXPECT_FALSE(info_.Load(info_file_path_));
491 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800492
Arman Uguray73a83e62013-02-12 18:51:33 -0800493 TruncateAndWriteToFile(
494 "serviceproviders:3.0\n"
495 "# SID entry has odd number of values.\n"
496 "provider:1,1,0,1\n"
497 "sid:1,0,2\n");
Arman Ugurayf4c61812013-01-10 18:58:39 -0800498
Arman Uguray73a83e62013-02-12 18:51:33 -0800499 EXPECT_FALSE(info_.Load(info_file_path_));
500 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800501
Arman Uguray73a83e62013-02-12 18:51:33 -0800502 TruncateAndWriteToFile(
503 "serviceproviders:3.0\n"
504 "# SID entry in this one is good.\n"
505 "provider:1,1,0,1\n"
506 "sid:1,0,2,3\n");
507
508 EXPECT_TRUE(info_.Load(info_file_path_));
509 EXPECT_EQ(1, info_.operators().size());
510 EXPECT_EQ(2, info_.operators()[0]->sid_list().size());
511 EXPECT_EQ("1", info_.operators()[0]->sid_list()[0]);
512 EXPECT_EQ("2", info_.operators()[0]->sid_list()[1]);
513 EXPECT_EQ(info_.operators()[0], info_.GetCellularOperatorBySID("1"));
514 EXPECT_EQ(info_.operators()[0], info_.GetCellularOperatorBySID("2"));
515 EXPECT_EQ(NULL, info_.GetCellularOperatorBySID("3"));
Arman Ugurayf4c61812013-01-10 18:58:39 -0800516}
517
Arman Ugurayc9533572013-01-22 17:34:20 -0800518TEST_F(CellularOperatorInfoTest, HandleIdentifier) {
Arman Uguray73a83e62013-02-12 18:51:33 -0800519 TruncateAndWriteToFile(
520 "serviceproviders:3.0\n"
521 "# No provider entry.\n"
522 "identifier:test-id\n");
523 EXPECT_FALSE(info_.Load(info_file_path_));
524 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayc9533572013-01-22 17:34:20 -0800525
Arman Uguray73a83e62013-02-12 18:51:33 -0800526 TruncateAndWriteToFile(
527 "serviceproviders:3.0\n"
528 "provider:1,1,0,0\n"
529 "identifier:test-id\n");
530 EXPECT_TRUE(info_.Load(info_file_path_));
531 EXPECT_EQ(1, info_.operators().size());
532 EXPECT_EQ("test-id", info_.operators()[0]->identifier());
Arman Ugurayc9533572013-01-22 17:34:20 -0800533}
534
Arman Uguray8ec7ea52013-04-30 02:00:23 -0700535TEST_F(CellularOperatorInfoTest, HandleActivationCode) {
536 TruncateAndWriteToFile(
537 "serviceproviders:3.0\n"
538 "# No provider entry.\n"
539 "activation-code:test-code\n");
540 EXPECT_FALSE(info_.Load(info_file_path_));
541 EXPECT_TRUE(info_.operators().empty());
542
543 TruncateAndWriteToFile(
544 "serviceproviders:3.0\n"
545 "provider:1,1,0,0\n"
546 "activation-code:test-code\n");
547 EXPECT_TRUE(info_.Load(info_file_path_));
548 EXPECT_EQ(1, info_.operators().size());
549 EXPECT_EQ("test-code", info_.operators()[0]->activation_code());
550}
551
Arman Ugurayf4c61812013-01-10 18:58:39 -0800552TEST_F(CellularOperatorInfoTest, HandleOLP) {
Arman Uguray73a83e62013-02-12 18:51:33 -0800553 TruncateAndWriteToFile(
554 "serviceproviders:3.0\n"
555 "# No provider entry.\n"
556 "olp:,,\n");
557 EXPECT_FALSE(info_.Load(info_file_path_));
558 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800559
Arman Uguray73a83e62013-02-12 18:51:33 -0800560 TruncateAndWriteToFile(
561 "serviceproviders:3.0\n"
562 "provider:1,1,0,0\n"
563 "# Badly formed APN\n"
564 "olp:,\n");
565 EXPECT_FALSE(info_.Load(info_file_path_));
566 EXPECT_TRUE(info_.operators().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800567
Arman Uguray73a83e62013-02-12 18:51:33 -0800568 TruncateAndWriteToFile(
569 "serviceproviders:3.0\n"
570 "provider:1,1,0,0\n"
571 "# Badly formed APN\n"
572 "olp:,,\n");
573 EXPECT_TRUE(info_.Load(info_file_path_));
574 EXPECT_EQ(1, info_.operators().size());
575 EXPECT_EQ(1, info_.operators()[0]->olp_list().size());
576 EXPECT_TRUE(info_.operators()[0]->olp_list()[0]->GetURL().empty());
577 EXPECT_TRUE(info_.operators()[0]->olp_list()[0]->GetMethod().empty());
578 EXPECT_TRUE(info_.operators()[0]->olp_list()[0]->GetPostData().empty());
Arman Ugurayf4c61812013-01-10 18:58:39 -0800579
Arman Uguray73a83e62013-02-12 18:51:33 -0800580 TruncateAndWriteToFile(
581 "serviceproviders:3.0\n"
582 "provider:1,1,0,0\n"
583 "# Badly formed APN\n"
584 "olp:a,b,c\n"
585 "olp:d,e,f\n");
586 EXPECT_TRUE(info_.Load(info_file_path_));
587 EXPECT_EQ(1, info_.operators().size());
588 EXPECT_EQ(2, info_.operators()[0]->olp_list().size());
589 EXPECT_EQ("a", info_.operators()[0]->olp_list()[0]->GetMethod());
590 EXPECT_EQ("b", info_.operators()[0]->olp_list()[0]->GetURL());
591 EXPECT_EQ("c", info_.operators()[0]->olp_list()[0]->GetPostData());
592 EXPECT_EQ("d", info_.operators()[0]->olp_list()[1]->GetMethod());
593 EXPECT_EQ("e", info_.operators()[0]->olp_list()[1]->GetURL());
594 EXPECT_EQ("f", info_.operators()[0]->olp_list()[1]->GetPostData());
Ben Chanb39cb312012-11-01 22:55:25 -0700595}
596
597} // namespace shill