blob: 891f42b762c095daa42a21f714c0ee1b7fb69969 [file] [log] [blame]
Arman Uguray72fab6a2013-01-10 19:32:42 -08001// Copyright (c) 2013 The Chromium OS 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.
4
5#include "shill/cellular_capability_universal_cdma.h"
6
7#include <string>
8#include <vector>
9
10#include <base/stringprintf.h>
11#include <gmock/gmock.h>
12#include <gtest/gtest.h>
13#include <ModemManager/ModemManager.h>
14
15#include "shill/cellular.h"
16#include "shill/cellular_service.h"
17#include "shill/event_dispatcher.h"
18#include "shill/mock_adaptors.h"
19#include "shill/mock_cellular_operator_info.h"
20#include "shill/mock_cellular_service.h"
21#include "shill/mock_dbus_properties_proxy.h"
22#include "shill/mock_glib.h"
23#include "shill/mock_manager.h"
24#include "shill/mock_metrics.h"
Arman Uguray72fab6a2013-01-10 19:32:42 -080025#include "shill/mock_mm1_modem_modem3gpp_proxy.h"
26#include "shill/mock_mm1_modem_modemcdma_proxy.h"
27#include "shill/mock_mm1_modem_proxy.h"
28#include "shill/mock_mm1_modem_simple_proxy.h"
29#include "shill/mock_mm1_sim_proxy.h"
30#include "shill/mock_modem_info.h"
Arman Uguray0a3e2792013-01-17 16:31:50 -080031#include "shill/mock_pending_activation_store.h"
Arman Uguray72fab6a2013-01-10 19:32:42 -080032#include "shill/nice_mock_control.h"
33#include "shill/proxy_factory.h"
34
35using base::StringPrintf;
36using std::string;
37using std::vector;
38using testing::Invoke;
39using testing::Mock;
40using testing::NiceMock;
41using testing::Return;
42using testing::SetArgumentPointee;
43using testing::_;
44
45namespace shill {
46
47class CellularCapabilityUniversalCDMATest : public testing::Test {
48 public:
Arman Uguray0a3e2792013-01-17 16:31:50 -080049 CellularCapabilityUniversalCDMATest(EventDispatcher *dispatcher)
Arman Uguray72fab6a2013-01-10 19:32:42 -080050 : capability_(NULL),
51 device_adaptor_(NULL),
Arman Uguray0a3e2792013-01-17 16:31:50 -080052 modem_info_(NULL, dispatcher, NULL, NULL, NULL),
Arman Uguray72fab6a2013-01-10 19:32:42 -080053 modem_3gpp_proxy_(new mm1::MockModemModem3gppProxy()),
54 modem_cdma_proxy_(new mm1::MockModemModemCdmaProxy()),
55 modem_proxy_(new mm1::MockModemProxy()),
56 modem_simple_proxy_(new mm1::MockModemSimpleProxy()),
57 sim_proxy_(new mm1::MockSimProxy()),
58 properties_proxy_(new MockDBusPropertiesProxy()),
59 proxy_factory_(this),
60 cellular_(new Cellular(&modem_info_,
61 "",
62 kMachineAddress,
63 0,
64 Cellular::kTypeUniversalCDMA,
65 "",
66 "",
67 "",
68 &proxy_factory_)),
69 service_(new MockCellularService(&modem_info_,
70 cellular_)) {}
71
72 virtual ~CellularCapabilityUniversalCDMATest() {
73 cellular_->service_ = NULL;
74 capability_ = NULL;
75 device_adaptor_ = NULL;
76 }
77
78 virtual void SetUp() {
79 capability_ = dynamic_cast<CellularCapabilityUniversalCDMA *>(
80 cellular_->capability_.get());
81 device_adaptor_ =
82 dynamic_cast<NiceMock<DeviceMockAdaptor> *>(cellular_->adaptor());
83 cellular_->service_ = service_;
84 }
85
86 virtual void TearDown() {
87 capability_->proxy_factory_ = NULL;
88 }
89
90 void SetService() {
91 cellular_->service_ = new CellularService(&modem_info_, cellular_);
92 }
93
94 void ReleaseCapabilityProxies() {
95 capability_->ReleaseProxies();
96 }
97
98 void SetCdmaProxy() {
99 capability_->modem_cdma_proxy_.reset(modem_cdma_proxy_.release());
100 }
101
102 void SetSimpleProxy() {
103 capability_->modem_simple_proxy_.reset(modem_simple_proxy_.release());
104 }
105
106 protected:
107 static const char kEsn[];
108 static const char kMachineAddress[];
109 static const char kMeid[];
110
111 class TestProxyFactory : public ProxyFactory {
112 public:
113 explicit TestProxyFactory(CellularCapabilityUniversalCDMATest *test) :
114 test_(test) {}
115
116 // TODO(armansito): Some of these methods won't be necessary after 3GPP
117 // gets refactored out of CellularCapabilityUniversal.
Arman Uguray72fab6a2013-01-10 19:32:42 -0800118 virtual mm1::ModemModem3gppProxyInterface *CreateMM1ModemModem3gppProxy(
119 const std::string &/*path*/,
120 const std::string &/*service*/) {
121 return test_->modem_3gpp_proxy_.release();
122 }
123
124 virtual mm1::ModemModemCdmaProxyInterface *CreateMM1ModemModemCdmaProxy(
125 const std::string &/*path*/,
126 const std::string &/*service*/) {
127 return test_->modem_cdma_proxy_.release();
128 }
129
130 virtual mm1::ModemProxyInterface *CreateMM1ModemProxy(
131 const std::string &/*path*/,
132 const std::string &/*service*/) {
133 return test_->modem_proxy_.release();
134 }
135
136 virtual mm1::ModemSimpleProxyInterface *CreateMM1ModemSimpleProxy(
137 const std::string &/*path*/,
138 const std::string &/*service*/) {
139 return test_->modem_simple_proxy_.release();
140 }
141
142 virtual mm1::SimProxyInterface *CreateSimProxy(
143 const std::string &/*path*/,
144 const std::string &/*service*/) {
145 return test_->sim_proxy_.release();
146 }
147
148 virtual DBusPropertiesProxyInterface *CreateDBusPropertiesProxy(
149 const std::string &/*path*/,
150 const std::string &/*service*/) {
151 return test_->properties_proxy_.release();
152 }
153
154 private:
155 CellularCapabilityUniversalCDMATest *test_;
156 };
157
158
159 CellularCapabilityUniversalCDMA *capability_;
160 NiceMock<DeviceMockAdaptor> *device_adaptor_;
Arman Uguray72fab6a2013-01-10 19:32:42 -0800161 MockModemInfo modem_info_;
162 MockGLib glib_;
Arman Uguray72fab6a2013-01-10 19:32:42 -0800163 // TODO(armansito): Remove |modem_3gpp_proxy_| after refactor.
164 scoped_ptr<mm1::MockModemModem3gppProxy> modem_3gpp_proxy_;
165 scoped_ptr<mm1::MockModemModemCdmaProxy> modem_cdma_proxy_;
166 scoped_ptr<mm1::MockModemProxy> modem_proxy_;
167 scoped_ptr<mm1::MockModemSimpleProxy> modem_simple_proxy_;
168 scoped_ptr<mm1::MockSimProxy> sim_proxy_;
169 scoped_ptr<MockDBusPropertiesProxy> properties_proxy_;
170 TestProxyFactory proxy_factory_;
171 CellularRefPtr cellular_;
172 MockCellularService *service_;
173};
174
175// static
176const char CellularCapabilityUniversalCDMATest::kEsn[] = "0000";
177// static
178const char CellularCapabilityUniversalCDMATest::kMachineAddress[] =
179 "TestMachineAddress";
180// static
181const char CellularCapabilityUniversalCDMATest::kMeid[] = "11111111111111";
182
Arman Uguray0a3e2792013-01-17 16:31:50 -0800183class CellularCapabilityUniversalCDMAMainTest
184 : public CellularCapabilityUniversalCDMATest {
185 public:
186 CellularCapabilityUniversalCDMAMainTest()
187 : CellularCapabilityUniversalCDMATest(&dispatcher_) {}
188
189 private:
190 EventDispatcher dispatcher_;
191};
192
193class CellularCapabilityUniversalCDMADispatcherTest
194 : public CellularCapabilityUniversalCDMATest {
195 public:
196 CellularCapabilityUniversalCDMADispatcherTest()
197 : CellularCapabilityUniversalCDMATest(NULL) {}
198};
199
200TEST_F(CellularCapabilityUniversalCDMAMainTest, PropertiesChanged) {
Arman Uguray72fab6a2013-01-10 19:32:42 -0800201 // Set up mock modem CDMA properties.
202 DBusPropertiesMap modem_cdma_properties;
203 modem_cdma_properties[MM_MODEM_MODEMCDMA_PROPERTY_MEID].
204 writer().append_string(kMeid);
205 modem_cdma_properties[MM_MODEM_MODEMCDMA_PROPERTY_ESN].
206 writer().append_string(kEsn);
207
208 SetUp();
209
210 EXPECT_TRUE(capability_->meid().empty());
211 EXPECT_TRUE(capability_->esn().empty());
212
213 // Changing properties on wrong interface will not have an effect
214 capability_->OnDBusPropertiesChanged(MM_DBUS_INTERFACE_MODEM,
215 modem_cdma_properties,
216 vector<string>());
217 EXPECT_TRUE(capability_->meid().empty());
218 EXPECT_TRUE(capability_->esn().empty());
219
220 // Changing properties on the right interface gets reflected in the
221 // capabilities object
222 capability_->OnDBusPropertiesChanged(MM_DBUS_INTERFACE_MODEM_MODEMCDMA,
223 modem_cdma_properties,
224 vector<string>());
225 EXPECT_EQ(kMeid, capability_->meid());
226 EXPECT_EQ(kEsn, capability_->esn());
227}
228
Arman Uguray0a3e2792013-01-17 16:31:50 -0800229TEST_F(CellularCapabilityUniversalCDMAMainTest, OnCDMARegistrationChanged) {
Arman Uguray72fab6a2013-01-10 19:32:42 -0800230 EXPECT_EQ(0, capability_->sid_);
231 EXPECT_EQ(0, capability_->nid_);
232 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN,
233 capability_->cdma_1x_registration_state_);
234 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN,
235 capability_->cdma_evdo_registration_state_);
236
237 EXPECT_EQ("", capability_->provider_.GetCode());
238 EXPECT_EQ("", capability_->provider_.GetName());
239 EXPECT_EQ("", capability_->provider_.GetCountry());
240
241 CellularOperatorInfo::CellularOperator *provider =
242 new CellularOperatorInfo::CellularOperator();
243
244 provider->country_ = "us";
245 provider->is_primary_ = true;
246 provider->name_list_.push_back(
247 CellularOperatorInfo::LocalizedName("Test", ""));
248
249 scoped_ptr<const CellularOperatorInfo::CellularOperator> ptr(provider);
250
251 EXPECT_CALL(*modem_info_.mock_cellular_operator_info(),
252 GetCellularOperatorBySID("2"))
253 .WillOnce(Return(ptr.get()));
254
255 capability_->OnCDMARegistrationChanged(
256 MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN,
257 MM_MODEM_CDMA_REGISTRATION_STATE_HOME,
258 2,
259 0);
260 EXPECT_EQ(2, capability_->sid_);
261 EXPECT_EQ(0, capability_->nid_);
262 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN,
263 capability_->cdma_1x_registration_state_);
264 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_HOME,
265 capability_->cdma_evdo_registration_state_);
266
267 EXPECT_TRUE(capability_->IsRegistered());
268 EXPECT_EQ("2", capability_->provider_.GetCode());
269 EXPECT_EQ("Test", capability_->provider_.GetName());
270 EXPECT_EQ("us", capability_->provider_.GetCountry());
271}
272
Arman Uguray0a3e2792013-01-17 16:31:50 -0800273TEST_F(CellularCapabilityUniversalCDMAMainTest, UpdateOperatorInfo) {
Arman Uguray72fab6a2013-01-10 19:32:42 -0800274 EXPECT_EQ("", capability_->provider_.GetCode());
275 EXPECT_EQ("", capability_->provider_.GetName());
276 EXPECT_EQ("", capability_->provider_.GetCountry());
Arman Uguray0a3e2792013-01-17 16:31:50 -0800277 EXPECT_TRUE(capability_->activation_code_.empty());
Arman Uguray72fab6a2013-01-10 19:32:42 -0800278
279 capability_->UpdateOperatorInfo();
280 EXPECT_EQ("", capability_->provider_.GetCode());
281 EXPECT_EQ("", capability_->provider_.GetName());
282 EXPECT_EQ("", capability_->provider_.GetCountry());
Arman Uguray0a3e2792013-01-17 16:31:50 -0800283 EXPECT_TRUE(capability_->activation_code_.empty());
Arman Uguray72fab6a2013-01-10 19:32:42 -0800284
Arman Uguray72fab6a2013-01-10 19:32:42 -0800285 capability_->UpdateOperatorInfo();
286 EXPECT_EQ("", capability_->provider_.GetCode());
287 EXPECT_EQ("", capability_->provider_.GetName());
288 EXPECT_EQ("", capability_->provider_.GetCountry());
Arman Uguray0a3e2792013-01-17 16:31:50 -0800289 EXPECT_TRUE(capability_->activation_code_.empty());
Arman Uguray72fab6a2013-01-10 19:32:42 -0800290
291 capability_->sid_ = 1;
292 EXPECT_CALL(*modem_info_.mock_cellular_operator_info(),
293 GetCellularOperatorBySID(_))
294 .WillOnce(Return((const CellularOperatorInfo::CellularOperator *)NULL));
295
296 capability_->UpdateOperatorInfo();
Arman Uguraye015faf2013-08-16 17:54:59 -0700297 EXPECT_EQ("1", capability_->provider_.GetCode());
Arman Uguray72fab6a2013-01-10 19:32:42 -0800298 EXPECT_EQ("", capability_->provider_.GetName());
299 EXPECT_EQ("", capability_->provider_.GetCountry());
Arman Uguray0a3e2792013-01-17 16:31:50 -0800300 EXPECT_TRUE(capability_->activation_code_.empty());
Arman Uguray72fab6a2013-01-10 19:32:42 -0800301
302 CellularOperatorInfo::CellularOperator *provider =
303 new CellularOperatorInfo::CellularOperator();
304
305 provider->country_ = "us";
306 provider->is_primary_ = true;
Arman Uguray0a3e2792013-01-17 16:31:50 -0800307 provider->activation_code_ = "1234";
Arman Uguray72fab6a2013-01-10 19:32:42 -0800308 provider->name_list_.push_back(
309 CellularOperatorInfo::LocalizedName("Test", ""));
310
311 scoped_ptr<const CellularOperatorInfo::CellularOperator> ptr(provider);
312
313 EXPECT_CALL(*modem_info_.mock_cellular_operator_info(),
314 GetCellularOperatorBySID(_))
315 .WillOnce(Return(ptr.get()));
316
317 capability_->UpdateOperatorInfo();
318
319 EXPECT_EQ("1", capability_->provider_.GetCode());
320 EXPECT_EQ("Test", capability_->provider_.GetName());
321 EXPECT_EQ("us", capability_->provider_.GetCountry());
Arman Uguray0a3e2792013-01-17 16:31:50 -0800322 EXPECT_EQ("1234", capability_->activation_code_);
Arman Uguray2269bb62013-07-26 14:53:30 -0700323 EXPECT_EQ("1", cellular_->service()->serving_operator().GetCode());
324 EXPECT_EQ("Test", cellular_->service()->serving_operator().GetName());
325 EXPECT_EQ("us", cellular_->service()->serving_operator().GetCountry());
326 EXPECT_EQ("Test", cellular_->service()->friendly_name());
Arman Uguraye015faf2013-08-16 17:54:59 -0700327
328 capability_->sid_ = 1;
329 EXPECT_CALL(*modem_info_.mock_cellular_operator_info(),
330 GetCellularOperatorBySID(_))
331 .WillOnce(Return(nullptr));
332
333 capability_->UpdateOperatorInfo();
334 EXPECT_EQ("1", capability_->provider_.GetCode());
335 EXPECT_EQ("", capability_->provider_.GetName());
336 EXPECT_EQ("", capability_->provider_.GetCountry());
337 EXPECT_TRUE(capability_->activation_code_.empty());
338
Arman Uguray72fab6a2013-01-10 19:32:42 -0800339}
340
Arman Uguray0a3e2792013-01-17 16:31:50 -0800341TEST_F(CellularCapabilityUniversalCDMAMainTest, CreateFriendlyServiceName) {
Arman Uguray72fab6a2013-01-10 19:32:42 -0800342 CellularCapabilityUniversalCDMA::friendly_service_name_id_cdma_ = 0;
343 EXPECT_EQ(0, capability_->sid_);
344 EXPECT_EQ("CDMANetwork0", capability_->CreateFriendlyServiceName());
345 EXPECT_EQ("CDMANetwork1", capability_->CreateFriendlyServiceName());
346
347 capability_->provider_.SetCode("0123");
348 EXPECT_EQ("cellular_sid_0123", capability_->CreateFriendlyServiceName());
349
350 CellularOperatorInfo::CellularOperator *provider =
351 new CellularOperatorInfo::CellularOperator();
352
353 capability_->sid_ = 1;
354 provider->name_list_.push_back(
355 CellularOperatorInfo::LocalizedName("Test", ""));
356 capability_->provider_.SetCode("");
357
358 scoped_ptr<const CellularOperatorInfo::CellularOperator> ptr(provider);
359
360 EXPECT_CALL(*modem_info_.mock_cellular_operator_info(),
361 GetCellularOperatorBySID(_))
362 .WillOnce(Return(ptr.get()));
363 EXPECT_EQ("Test", capability_->CreateFriendlyServiceName());
364}
365
Arman Uguray0a3e2792013-01-17 16:31:50 -0800366TEST_F(CellularCapabilityUniversalCDMAMainTest, UpdateOLP) {
Ben Chan07193fd2013-07-12 22:10:55 -0700367 CellularOperatorInfo::CellularOperator cellular_operator;
Arman Uguray72fab6a2013-01-10 19:32:42 -0800368 CellularService::OLP test_olp;
369 test_olp.SetURL("http://testurl");
370 test_olp.SetMethod("POST");
371 test_olp.SetPostData("esn=${esn}&mdn=${mdn}&meid=${meid}");
372
373 capability_->esn_ = "0";
Ben Chan07193fd2013-07-12 22:10:55 -0700374 capability_->mdn_ = "10123456789";
Arman Uguray72fab6a2013-01-10 19:32:42 -0800375 capability_->meid_= "4";
376 capability_->sid_ = 1;
377
Ben Chan07193fd2013-07-12 22:10:55 -0700378 string sid_string = base::StringPrintf("%u", capability_->sid_);
Arman Uguray72fab6a2013-01-10 19:32:42 -0800379 EXPECT_CALL(*modem_info_.mock_cellular_operator_info(),
Ben Chan07193fd2013-07-12 22:10:55 -0700380 GetCellularOperatorBySID(sid_string))
381 .WillRepeatedly(Return(&cellular_operator));
382 EXPECT_CALL(*modem_info_.mock_cellular_operator_info(),
383 GetOLPBySID(sid_string))
Arman Uguray72fab6a2013-01-10 19:32:42 -0800384 .WillRepeatedly(Return(&test_olp));
385
386 SetService();
Ben Chan07193fd2013-07-12 22:10:55 -0700387
388 cellular_operator.identifier_ = "vzw";
389 capability_->UpdateOLP();
390 const CellularService::OLP &vzw_olp = cellular_->service()->olp();
391 EXPECT_EQ("http://testurl", vzw_olp.GetURL());
392 EXPECT_EQ("POST", vzw_olp.GetMethod());
393 EXPECT_EQ("esn=0&mdn=0123456789&meid=4", vzw_olp.GetPostData());
394
395 cellular_operator.identifier_ = "foo";
Arman Uguray72fab6a2013-01-10 19:32:42 -0800396 capability_->UpdateOLP();
397 const CellularService::OLP &olp = cellular_->service()->olp();
398 EXPECT_EQ("http://testurl", olp.GetURL());
399 EXPECT_EQ("POST", olp.GetMethod());
Ben Chan07193fd2013-07-12 22:10:55 -0700400 EXPECT_EQ("esn=0&mdn=10123456789&meid=4", olp.GetPostData());
Arman Uguray72fab6a2013-01-10 19:32:42 -0800401}
402
Arman Uguray0a3e2792013-01-17 16:31:50 -0800403TEST_F(CellularCapabilityUniversalCDMAMainTest, ActivateAutomatic) {
404 mm1::MockModemModemCdmaProxy *cdma_proxy = modem_cdma_proxy_.get();
405 SetUp();
406 capability_->InitProxies();
407
408 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
409 GetActivationState(_,_))
410 .Times(0);
411 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
412 SetActivationState(_,_,_))
413 .Times(0);
414 EXPECT_CALL(*cdma_proxy, Activate(_,_,_,_)).Times(0);
415 capability_->ActivateAutomatic();
416 Mock::VerifyAndClearExpectations(modem_info_.mock_pending_activation_store());
417 Mock::VerifyAndClearExpectations(modem_cdma_proxy_.get());
418
419 capability_->activation_code_ = "1234";
420
421 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
422 GetActivationState(PendingActivationStore::kIdentifierMEID, _))
423 .WillOnce(Return(PendingActivationStore::kStatePending))
424 .WillOnce(Return(PendingActivationStore::kStateActivated));
425 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
426 SetActivationState(_,_,_))
427 .Times(0);
428 EXPECT_CALL(*cdma_proxy, Activate(_,_,_,_)).Times(0);
429 capability_->ActivateAutomatic();
430 capability_->ActivateAutomatic();
431 Mock::VerifyAndClearExpectations(modem_info_.mock_pending_activation_store());
432 Mock::VerifyAndClearExpectations(modem_cdma_proxy_.get());
433
434 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
435 GetActivationState(PendingActivationStore::kIdentifierMEID, _))
436 .WillOnce(Return(PendingActivationStore::kStateUnknown))
437 .WillOnce(Return(PendingActivationStore::kStateFailureRetry));
438 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
439 SetActivationState(_,_, PendingActivationStore::kStatePending))
440 .Times(2);
441 EXPECT_CALL(*cdma_proxy, Activate(_,_,_,_)).Times(2);
442 capability_->ActivateAutomatic();
443 capability_->ActivateAutomatic();
444 Mock::VerifyAndClearExpectations(modem_info_.mock_pending_activation_store());
445 Mock::VerifyAndClearExpectations(modem_cdma_proxy_.get());
446}
447
448TEST_F(CellularCapabilityUniversalCDMAMainTest, IsServiceActivationRequired) {
449 CellularService::OLP olp;
450 EXPECT_CALL(*modem_info_.mock_cellular_operator_info(), GetOLPBySID(_))
451 .WillOnce(Return((const CellularService::OLP *)NULL))
452 .WillRepeatedly(Return(&olp));
453 capability_->activation_state_ =
454 MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED;
455 EXPECT_FALSE(capability_->IsServiceActivationRequired());
456 EXPECT_TRUE(capability_->IsServiceActivationRequired());
457 capability_->activation_state_ =
458 MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING;
459 EXPECT_FALSE(capability_->IsServiceActivationRequired());
460 capability_->activation_state_ =
461 MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATED;
462 EXPECT_FALSE(capability_->IsServiceActivationRequired());
463}
464
465TEST_F(CellularCapabilityUniversalCDMAMainTest,
466 UpdateServiceActivationStateProperty) {
467 CellularService::OLP olp;
468 EXPECT_CALL(*modem_info_.mock_cellular_operator_info(), GetOLPBySID(_))
469 .WillRepeatedly(Return(&olp));
470 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
Ben Chan7ea768e2013-09-20 15:08:40 -0700471 GetActivationState(_, _))
Arman Uguray0a3e2792013-01-17 16:31:50 -0800472 .WillOnce(Return(PendingActivationStore::kStatePending))
473 .WillRepeatedly(Return(PendingActivationStore::kStateUnknown));
474
Ben Chan7ea768e2013-09-20 15:08:40 -0700475 capability_->activation_state_ = MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED;
476 EXPECT_CALL(*service_, SetActivationState(kActivationStateActivating))
Arman Uguray0a3e2792013-01-17 16:31:50 -0800477 .Times(1);
478 capability_->UpdateServiceActivationStateProperty();
479 Mock::VerifyAndClearExpectations(service_);
480
Ben Chan7ea768e2013-09-20 15:08:40 -0700481 EXPECT_CALL(*service_, SetActivationState(kActivationStateNotActivated))
Arman Uguray0a3e2792013-01-17 16:31:50 -0800482 .Times(1);
483 capability_->UpdateServiceActivationStateProperty();
484 Mock::VerifyAndClearExpectations(service_);
485
Ben Chan7ea768e2013-09-20 15:08:40 -0700486 capability_->activation_state_ = MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING;
487 EXPECT_CALL(*service_, SetActivationState(kActivationStateActivating))
Arman Uguray0a3e2792013-01-17 16:31:50 -0800488 .Times(1);
489 capability_->UpdateServiceActivationStateProperty();
490 Mock::VerifyAndClearExpectations(service_);
491
Ben Chan7ea768e2013-09-20 15:08:40 -0700492 capability_->activation_state_ = MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATED;
493 EXPECT_CALL(*service_, SetActivationState(kActivationStateActivated))
Arman Uguray0a3e2792013-01-17 16:31:50 -0800494 .Times(1);
495 capability_->UpdateServiceActivationStateProperty();
496 Mock::VerifyAndClearExpectations(service_);
497 Mock::VerifyAndClearExpectations(modem_info_.mock_cellular_operator_info());
Ben Chan7ea768e2013-09-20 15:08:40 -0700498 Mock::VerifyAndClearExpectations(modem_info_.mock_pending_activation_store());
Arman Uguray0a3e2792013-01-17 16:31:50 -0800499}
500
501TEST_F(CellularCapabilityUniversalCDMAMainTest, IsActivating) {
502 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
503 GetActivationState(_,_))
504 .WillOnce(Return(PendingActivationStore::kStatePending))
505 .WillOnce(Return(PendingActivationStore::kStatePending))
506 .WillOnce(Return(PendingActivationStore::kStateFailureRetry))
507 .WillRepeatedly(Return(PendingActivationStore::kStateUnknown));
508
509 capability_->activation_state_ =
510 MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED;
511 EXPECT_TRUE(capability_->IsActivating());
512 EXPECT_TRUE(capability_->IsActivating());
513 capability_->activation_state_ = MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING;
514 EXPECT_TRUE(capability_->IsActivating());
515 EXPECT_TRUE(capability_->IsActivating());
516 capability_->activation_state_ =
517 MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED;
518 EXPECT_FALSE(capability_->IsActivating());
519}
520
Arman Ugurayc9673062013-05-13 21:21:53 -0700521TEST_F(CellularCapabilityUniversalCDMAMainTest, SetupConnectProperties) {
522 DBusPropertiesMap map;
523 capability_->SetupConnectProperties(&map);
524 EXPECT_EQ(1, map.size());
525 EXPECT_STREQ("#777", map["number"].reader().get_string());
526}
527
Arman Uguray0a3e2792013-01-17 16:31:50 -0800528TEST_F(CellularCapabilityUniversalCDMADispatcherTest,
529 UpdatePendingActivationState) {
530 capability_->activation_state_ = MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATED;
531 EXPECT_CALL(*modem_info_.mock_pending_activation_store(), RemoveEntry(_,_))
532 .Times(1);
533 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
534 GetActivationState(_,_))
535 .Times(0);
536 EXPECT_CALL(*modem_info_.mock_dispatcher(), PostTask(_)).Times(0);
537 capability_->UpdatePendingActivationState();
538 Mock::VerifyAndClearExpectations(modem_info_.mock_pending_activation_store());
539 Mock::VerifyAndClearExpectations(modem_info_.mock_dispatcher());
540
541 capability_->activation_state_ = MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING;
542 EXPECT_CALL(*modem_info_.mock_pending_activation_store(), RemoveEntry(_,_))
543 .Times(0);
544 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
545 GetActivationState(_,_))
546 .Times(2)
547 .WillRepeatedly(Return(PendingActivationStore::kStateUnknown));
548 EXPECT_CALL(*modem_info_.mock_dispatcher(), PostTask(_)).Times(0);
549 capability_->UpdatePendingActivationState();
550 Mock::VerifyAndClearExpectations(modem_info_.mock_pending_activation_store());
551 Mock::VerifyAndClearExpectations(modem_info_.mock_dispatcher());
552
553 capability_->activation_state_ = MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED;
554 EXPECT_CALL(*modem_info_.mock_pending_activation_store(), RemoveEntry(_,_))
555 .Times(0);
556 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
557 GetActivationState(_,_))
558 .Times(2)
559 .WillRepeatedly(Return(PendingActivationStore::kStatePending));
560 EXPECT_CALL(*modem_info_.mock_dispatcher(), PostTask(_)).Times(0);
561 capability_->UpdatePendingActivationState();
562 Mock::VerifyAndClearExpectations(modem_info_.mock_pending_activation_store());
563 Mock::VerifyAndClearExpectations(modem_info_.mock_dispatcher());
564
565 EXPECT_CALL(*modem_info_.mock_pending_activation_store(), RemoveEntry(_,_))
566 .Times(0);
567 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
568 GetActivationState(_,_))
569 .Times(2)
570 .WillRepeatedly(Return(PendingActivationStore::kStateFailureRetry));
571 EXPECT_CALL(*modem_info_.mock_dispatcher(), PostTask(_)).Times(1);
572 capability_->UpdatePendingActivationState();
573 Mock::VerifyAndClearExpectations(modem_info_.mock_pending_activation_store());
574 Mock::VerifyAndClearExpectations(modem_info_.mock_dispatcher());
575
576 EXPECT_CALL(*modem_info_.mock_pending_activation_store(), RemoveEntry(_,_))
577 .Times(0);
578 EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
579 GetActivationState(_,_))
580 .Times(4)
581 .WillOnce(Return(PendingActivationStore::kStateActivated))
582 .WillOnce(Return(PendingActivationStore::kStateActivated))
583 .WillOnce(Return(PendingActivationStore::kStateUnknown))
584 .WillOnce(Return(PendingActivationStore::kStateUnknown));
585 EXPECT_CALL(*modem_info_.mock_dispatcher(), PostTask(_)).Times(0);
586 capability_->UpdatePendingActivationState();
587 capability_->UpdatePendingActivationState();
588 Mock::VerifyAndClearExpectations(modem_info_.mock_pending_activation_store());
589 Mock::VerifyAndClearExpectations(modem_info_.mock_dispatcher());
590}
591
Arman Uguray72fab6a2013-01-10 19:32:42 -0800592} // namespace shill