shill: cellular: Update storage identifier based on SID for CDMA.
BUG=chromium:297396
TEST=Build and run unit tests.
Change-Id: Id463eb819b2778a91945eb9987532bb338ebdbbc
Reviewed-on: https://chromium-review.googlesource.com/170422
Reviewed-by: Ben Chan <benchan@chromium.org>
Tested-by: Arman Uguray <armansito@chromium.org>
Commit-Queue: Arman Uguray <armansito@chromium.org>
diff --git a/cellular_capability_universal_cdma_unittest.cc b/cellular_capability_universal_cdma_unittest.cc
index 891f42b..b7daca1 100644
--- a/cellular_capability_universal_cdma_unittest.cc
+++ b/cellular_capability_universal_cdma_unittest.cc
@@ -7,6 +7,7 @@
#include <string>
#include <vector>
+#include <base/string_util.h>
#include <base/stringprintf.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
@@ -91,6 +92,10 @@
cellular_->service_ = new CellularService(&modem_info_, cellular_);
}
+ void ClearService() {
+ cellular_->service_ = NULL;
+ }
+
void ReleaseCapabilityProxies() {
capability_->ReleaseProxies();
}
@@ -525,6 +530,46 @@
EXPECT_STREQ("#777", map["number"].reader().get_string());
}
+TEST_F(CellularCapabilityUniversalCDMAMainTest, UpdateStorageIdentifier) {
+ ClearService();
+ EXPECT_FALSE(cellular_->service().get());
+ capability_->UpdateStorageIdentifier();
+ EXPECT_FALSE(cellular_->service().get());
+
+ SetService();
+ EXPECT_TRUE(cellular_->service().get());
+
+ const string kPrefix =
+ string(shill::kTypeCellular) + "_" + string(kMachineAddress) + "_";
+ const string kDefaultIdentifierPattern = kPrefix + "CDMANetwork*";
+
+ // GetCellularOperatorBySID returns NULL.
+ EXPECT_CALL(*modem_info_.mock_cellular_operator_info(),
+ GetCellularOperatorBySID(_))
+ .WillOnce(Return(nullptr));
+ capability_->UpdateStorageIdentifier();
+ EXPECT_TRUE(::MatchPattern(cellular_->service()->GetStorageIdentifier(),
+ kDefaultIdentifierPattern));
+ Mock::VerifyAndClearExpectations(modem_info_.mock_cellular_operator_info());
+
+ CellularOperatorInfo::CellularOperator provider;
+ EXPECT_CALL(*modem_info_.mock_cellular_operator_info(),
+ GetCellularOperatorBySID(_))
+ .Times(2)
+ .WillRepeatedly(Return(&provider));
+
+ // |provider.identifier_| is empty.
+ capability_->UpdateStorageIdentifier();
+ EXPECT_TRUE(::MatchPattern(cellular_->service()->GetStorageIdentifier(),
+ kDefaultIdentifierPattern));
+
+ // Success.
+ provider.identifier_ = "testidentifier";
+ capability_->UpdateStorageIdentifier();
+ EXPECT_EQ(kPrefix + "testidentifier",
+ cellular_->service()->GetStorageIdentifier());
+}
+
TEST_F(CellularCapabilityUniversalCDMADispatcherTest,
UpdatePendingActivationState) {
capability_->activation_state_ = MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATED;