1 /*
2 * Copyright (C) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #define private public
16 #define protected public
17
18 #include <string>
19 #include <unistd.h>
20 #include "sim_manager.h"
21 #include "core_manager_inner.h"
22 #include "core_service.h"
23 #include "core_service_client.h"
24 #include "enum_convert.h"
25 #include "operator_config_cache.h"
26 #include "operator_file_parser.h"
27 #include "sim_state_type.h"
28 #include "str_convert.h"
29 #include "string_ex.h"
30 #include "tel_profile_util.h"
31 #include "telephony_ext_wrapper.h"
32 #include "gtest/gtest.h"
33 #include "tel_ril_manager.h"
34 #include "mock_tel_ril_manager.h"
35 #include "sim_constant.h"
36 #include "icc_dialling_numbers_handler.h"
37 #include "icc_file_controller.h"
38 #include "isim_file.h"
39
40 namespace OHOS {
41 namespace Telephony {
42 using namespace testing::ext;
43 using namespace testing;
44
45 class RuimFileTest : public testing::Test {
46 public:
47 static void SetUpTestCase();
48 static void TearDownTestCase();
49 void SetUp();
50 void TearDown();
51 };
52
53
SetUpTestCase()54 void RuimFileTest::SetUpTestCase() {}
55
TearDownTestCase()56 void RuimFileTest::TearDownTestCase() {}
57
SetUp()58 void RuimFileTest::SetUp() {}
59
TearDown()60 void RuimFileTest::TearDown() {}
61
62 HWTEST_F(RuimFileTest, RuimFileTest001, Function | MediumTest | Level1)
63 {
64 int32_t slotId = 0;
65 std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
66 std::shared_ptr<Telephony::SimStateManager> simStateManager = std::make_shared<SimStateManager>(telRilManager);
67 std::shared_ptr<RuimFile> ruimFile = std::make_shared<RuimFile>(simStateManager);
68 std::shared_ptr<IccFileController> file = std::make_shared<SimFileController>(slotId);
69 std::shared_ptr<IccDiallingNumbersHandler> handler = std::make_shared<IccDiallingNumbersHandler>(file);
70 ruimFile->SetRilAndFileController(telRilManager, file, handler);
71 ruimFile->StartLoad();
72 int32_t validEventId = 0x03;
73 int32_t invalidEventId = 0xFFFF78;
74 auto validEvent = AppExecFwk::InnerEvent::Get(validEventId);
75 auto invalidEvent = AppExecFwk::InnerEvent::Get(invalidEventId);
76 auto nullEvent = AppExecFwk::InnerEvent::Pointer(nullptr, nullptr);
77 ruimFile->InitMemberFunc();
78 ruimFile->ProcessEvent(validEvent);
79 ruimFile->ProcessEvent(invalidEvent);
80 ruimFile->ProcessIccRefresh(0);
81 ruimFile->ProcessFileLoaded(false);
82 ruimFile->ProcessFileLoaded(true);
83 ruimFile->ProcessLockedAllFilesFetched();
84 ruimFile->OnAllFilesFetched();
85 ruimFile->ProcessIccReady(validEvent);
86 ruimFile->ProcessIccLocked(validEvent);
87 ruimFile->LoadRuimFiles();
88 ruimFile->ProcessGetSubscriptionDone(nullEvent);
89 ruimFile->ProcessGetIccidDone(nullEvent);
90 ruimFile->ProcessGetIccidDone(validEvent);
91 ruimFile->ProcessGetImsiDone(nullEvent);
92 ruimFile->ProcessGetImsiDone(validEvent);
93 ruimFile->ObtainMdnNumber();
94 ruimFile->ObtainCdmaMin();
95 ruimFile->ObtainPrlVersion();
96 ruimFile->ObtainNAI();
97 ruimFile->ObtainMdn();
98 ruimFile->ObtainMin();
99 ruimFile->ObtainSid();
100 ruimFile->ObtainNid();
101 ruimFile->ObtainCsimSpnDisplayCondition();
102 ruimFile->ProcessGetSpnDone(validEvent);
103 EXPECT_TRUE(ruimFile->ProcessGetSpnDone(nullEvent));
104 }
105
106 HWTEST_F(RuimFileTest, RuimFileTest002, Function | MediumTest | Level1)
107 {
108 int32_t slotId = 0;
109 std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
110 std::shared_ptr<Telephony::SimStateManager> simStateManager = std::make_shared<SimStateManager>(telRilManager);
111 std::shared_ptr<RuimFile> ruimFile = std::make_shared<RuimFile>(simStateManager);
112 std::shared_ptr<IccFileController> file = std::make_shared<SimFileController>(slotId);
113 std::shared_ptr<IccDiallingNumbersHandler> handler = std::make_shared<IccDiallingNumbersHandler>(file);
114 ruimFile->SetRilAndFileController(telRilManager, file, handler);
115 ruimFile->StartLoad();
116 int32_t validEventId = 0x03;
117 int32_t invalidEventId = 0xFFFF78;
118 auto validEvent = AppExecFwk::InnerEvent::Get(validEventId);
119 auto invalidEvent = AppExecFwk::InnerEvent::Get(invalidEventId);
120 auto nullEvent = AppExecFwk::InnerEvent::Pointer(nullptr, nullptr);
121 unsigned char spnNameArr[] = "cnNet";
122 unsigned char const *spnName = static_cast<unsigned char const *>(spnNameArr);
123 std::string operatorNum, mailName, mailNumber;
124 ruimFile->ParseSpnName(CSIM_SPN_OCTET, spnName, 5);
125 ruimFile->ParseSpnName(CSIM_SPN_LATIN, spnName, 5);
126 ruimFile->ParseSpnName(CSIM_SPN_IA5, spnName, 5);
127 ruimFile->ParseSpnName(CSIM_SPN_7BIT_ALPHABET, spnName, 5);
128 ruimFile->ParseSpnName(CSIM_SPN_7BIT_ASCII, spnName, 5);
129 ruimFile->ParseSpnName(CSIM_SPN_IA5, spnName, 5);
130 ruimFile->ObtainSpnCondition(true, operatorNum);
131 ruimFile->UpdateVoiceMail(mailName, mailNumber);
132 EXPECT_TRUE(ruimFile->ProcessGetSpnDone(nullEvent));
133 }
134
135 HWTEST_F(RuimFileTest, RuimFileControllerTest001, Function | MediumTest | Level1)
136 {
137 int32_t slotId = 0;
138 std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
139 std::shared_ptr<Telephony::SimStateManager> simStateManager = std::make_shared<SimStateManager>(telRilManager);
140 std::shared_ptr<RuimFile> ruimFile = std::make_shared<RuimFile>(simStateManager);
141 std::shared_ptr<IccFileController> file = std::make_shared<SimFileController>(slotId);
142 std::shared_ptr<IccDiallingNumbersHandler> handler = std::make_shared<IccDiallingNumbersHandler>(file);
143 ruimFile->SetRilAndFileController(telRilManager, file, handler);
144 std::shared_ptr<RuimFileController> ruimFileController = std::make_shared<RuimFileController>(slotId);
145 ruimFileController->ObtainElementFilePath(ELEMENTARY_FILE_USIM_ADN);
146 EXPECT_NE(ruimFileController->ObtainElementFilePath(ELEMENTARY_FILE_SMS).c_str(), nullptr);
147 }
148
149 HWTEST_F(RuimFileTest, RuimFileControllerTest002, Function | MediumTest | Level1)
150 {
151 int32_t slotId = 0;
152 std::shared_ptr<RuimFileController> ruimFileController = std::make_shared<RuimFileController>(slotId);
153 int fileId = 12345;
154 int highOffset = 0;
155 int lowOffset = 10;
156 int length = 20;
157 AppExecFwk::InnerEvent::Pointer onLoaded = AppExecFwk::InnerEvent::Get();
158 std::shared_ptr<IccFileController> iccFileController = std::make_shared<SimFileController>(1);
159 iccFileController->telRilManager_ = nullptr;
160 ruimFileController->ObtainTransparentImg(fileId, highOffset, lowOffset, length, onLoaded);
161 iccFileController->telRilManager_ = std::make_shared<TelRilManager>();
162 ruimFileController->ObtainTransparentImg(fileId, highOffset, lowOffset, length, onLoaded);
163 EXPECT_NE(iccFileController->telRilManager_, nullptr);
164 }
165 }
166 }
167