1 /*
2 * Copyright (c) 2023 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
16 #include <gtest/gtest.h>
17
18 #include "ability_manager_errors.h"
19 #include "distributed_client.h"
20 #include "distributed_parcel_helper.h"
21 #include "ipc_skeleton.h"
22 #include "iservice_registry.h"
23 #include "string_ex.h"
24 #include "system_ability_definition.h"
25 #include "window_manager_hilog.h"
26 #include "mock/mock_message_parcel.h"
27
28 using namespace testing;
29 using namespace testing::ext;
30
31 using namespace testing;
32 using namespace testing::ext;
33
34 namespace OHOS {
35 namespace Rosen {
36 namespace {
37 const std::string UNDEFINED = "undefined";
38 }
39
40 class DistributedClientTest : public testing::Test {
41 public:
42 static void SetUpTestCase();
43 static void TearDownTestCase();
44 void SetUp() override;
45 void TearDown() override;
46
47 private:
48 std::shared_ptr<DistributedClient> distributedClient_;
49 };
50
SetUpTestCase()51 void DistributedClientTest::SetUpTestCase() {}
52
TearDownTestCase()53 void DistributedClientTest::TearDownTestCase() {}
54
SetUp()55 void DistributedClientTest::SetUp()
56 {
57 distributedClient_ = std::make_shared<DistributedClient>();
58 EXPECT_NE(nullptr, distributedClient_);
59 }
60
TearDown()61 void DistributedClientTest::TearDown()
62 {
63 distributedClient_ = nullptr;
64 }
65
66 namespace {
67 /**
68 * @tc.name: GetMissionInfos
69 * @tc.desc: GetMissionInfos test
70 * @tc.type: FUNC
71 * @tc.require: #I6JLSI
72 */
73 HWTEST_F(DistributedClientTest, GetMissionInfos, TestSize.Level1)
74 {
75 GTEST_LOG_(INFO) << "DistributedClientTest GetMissionInfos start.";
76 const std::u16string DMS_PROXY_INTERFACE_TOKEN = u"ohos.distributedschedule.accessToken";
77 MessageParcel data;
78 MessageParcel reply;
79 MessageOption option;
80 std::vector<AAFwk::MissionInfo> missionInfos;
81 if (!data.WriteInterfaceToken(DMS_PROXY_INTERFACE_TOKEN)) {
82 EXPECT_EQ(distributedClient_->GetMissionInfos("", 0, missionInfos), ERR_FLATTEN_OBJECT);
83 }
84 EXPECT_EQ(distributedClient_->GetMissionInfos("", 0, missionInfos), AAFwk::INVALID_PARAMETERS_ERR);
85 GTEST_LOG_(INFO) << "DistributedClientTest GetMissionInfos end.";
86 }
87
88 /**
89 * @tc.name: GetMissionInfos02
90 * @tc.desc: GetMissionInfos test
91 * @tc.type: FUNC
92 * @tc.require: #I6JLSI
93 */
94 HWTEST_F(DistributedClientTest, GetMissionInfos02, TestSize.Level1)
95 {
96 GTEST_LOG_(INFO) << "DistributedClientTest GetMissionInfos02 start.";
97 std::vector<AAFwk::MissionInfo> missionInfos;
98 MockMessageParcel::SetWriteInterfaceTokenErrorFlag(false);
99 EXPECT_NE(distributedClient_->GetMissionInfos("", 0, missionInfos), ERR_NONE);
100 MockMessageParcel::ClearAllErrorFlag();
101 GTEST_LOG_(INFO) << "DistributedClientTest GetMissionInfos02 end.";
102 }
103
104 /**
105 * @tc.name: GetMissionInfos03
106 * @tc.desc: GetMissionInfos test
107 * @tc.type: FUNC
108 * @tc.require: #I6JLSI
109 */
110 HWTEST_F(DistributedClientTest, GetMissionInfos03, TestSize.Level1)
111 {
112 GTEST_LOG_(INFO) << "DistributedClientTest GetMissionInfos03 start.";
113 std::vector<AAFwk::MissionInfo> missionInfos;
114 MockMessageParcel::SetWriteInterfaceTokenErrorFlag(true);
115 EXPECT_NE(distributedClient_->GetMissionInfos("", 0, missionInfos), ERR_NONE);
116 MockMessageParcel::ClearAllErrorFlag();
117 GTEST_LOG_(INFO) << "DistributedClientTest GetMissionInfos03 end.";
118 }
119 } // namespace
120
121 /**
122 * @tc.name: GetRemoteMissionSnapshotInfo
123 * @tc.desc: GetRemoteMissionSnapshotInfo test
124 * @tc.type: FUNC
125 * @tc.require: #I6JLSI
126 */
127 HWTEST_F(DistributedClientTest, GetRemoteMissionSnapshotInfo, TestSize.Level1)
128 {
129 GTEST_LOG_(INFO) << "DistributedClientTest GetRemoteMissionSnapshotInfo start.";
130 AAFwk::MissionSnapshot missionSnapshot;
131 EXPECT_EQ(distributedClient_->GetRemoteMissionSnapshotInfo("", 0, missionSnapshot), ERR_NULL_OBJECT);
132 GTEST_LOG_(INFO) << "DistributedClientTest GetRemoteMissionSnapshotInfo end.";
133 }
134
135 /**
136 * @tc.name: GetRemoteMissionSnapshotInfo02
137 * @tc.desc: GetRemoteMissionSnapshotInfo test
138 * @tc.type: FUNC
139 * @tc.require: #I6JLSI
140 */
141 HWTEST_F(DistributedClientTest, GetRemoteMissionSnapshotInfo02, TestSize.Level1)
142 {
143 GTEST_LOG_(INFO) << "DistributedClientTest GetRemoteMissionSnapshotInfo02 start.";
144 std::string deviceID = "123456789";
145 AAFwk::MissionSnapshot missionSnapshot;
146 MockMessageParcel::SetWriteInterfaceTokenErrorFlag(false);
147 EXPECT_NE(distributedClient_->GetRemoteMissionSnapshotInfo(deviceID, 0, missionSnapshot), ERR_NONE);
148 MockMessageParcel::ClearAllErrorFlag();
149 GTEST_LOG_(INFO) << "DistributedClientTest GetRemoteMissionSnapshotInfo02 end.";
150 }
151
152 /**
153 * @tc.name: GetRemoteMissionSnapshotInfo03
154 * @tc.desc: GetRemoteMissionSnapshotInfo test
155 * @tc.type: FUNC
156 * @tc.require: #I6JLSI
157 */
158 HWTEST_F(DistributedClientTest, GetRemoteMissionSnapshotInfo03, TestSize.Level1)
159 {
160 GTEST_LOG_(INFO) << "DistributedClientTest GetRemoteMissionSnapshotInfo03 start.";
161 std::string deviceID = "123456789";
162 AAFwk::MissionSnapshot missionSnapshot;
163 MockMessageParcel::SetWriteInterfaceTokenErrorFlag(true);
164 EXPECT_NE(distributedClient_->GetRemoteMissionSnapshotInfo(deviceID, 0, missionSnapshot), ERR_NONE);
165 MockMessageParcel::ClearAllErrorFlag();
166 GTEST_LOG_(INFO) << "DistributedClientTest GetRemoteMissionSnapshotInfo03 end.";
167 }
168
169 /**
170 * @tc.name: ReadMissionInfosFromParcel
171 * @tc.desc: ReadMissionInfosFromParcel test
172 * @tc.type: FUNC
173 * @tc.require: #I6JLSI
174 */
175 HWTEST_F(DistributedClientTest, ReadMissionInfosFromParcel, TestSize.Level1)
176 {
177 GTEST_LOG_(INFO) << "DistributedClientTest ReadMissionInfosFromParcel start.";
178 std::vector<AAFwk::MissionInfo> missionInfos;
179 MessageParcel reply;
180 EXPECT_EQ(distributedClient_->ReadMissionInfosFromParcel(reply, missionInfos), true);
181 GTEST_LOG_(INFO) << "DistributedClientTest ReadMissionInfosFromParcel end.";
182 }
183
184 /**
185 * @tc.name: SetMissionContinueState
186 * @tc.desc: SetMissionContinueState test
187 * @tc.type: FUNC
188 * @tc.require: #I6JLSI
189 */
190 HWTEST_F(DistributedClientTest, SetMissionContinueState, TestSize.Level1)
191 {
192 GTEST_LOG_(INFO) << "DistributedClientTest SetMissionContinueState start.";
193 AAFwk::ContinueState state = AAFwk::ContinueState::CONTINUESTATE_ACTIVE;
194 MockMessageParcel::SetWriteInterfaceTokenErrorFlag(false);
195 EXPECT_NE(distributedClient_->SetMissionContinueState(0, state, 0), ERR_NULL_OBJECT);
196 MockMessageParcel::SetWriteInterfaceTokenErrorFlag(true);
197 EXPECT_NE(distributedClient_->SetMissionContinueState(0, state, 0), ERR_NULL_OBJECT);
198 MockMessageParcel::ClearAllErrorFlag();
199 GTEST_LOG_(INFO) << "DistributedClientTest SetMissionContinueState end.";
200 }
201
202 /**
203 * @tc.name: SetMissionContinueState02
204 * @tc.desc: SetMissionContinueState test
205 * @tc.type: FUNC
206 * @tc.require: #I6JLSI
207 */
208 HWTEST_F(DistributedClientTest, SetMissionContinueState02, TestSize.Level1)
209 {
210 GTEST_LOG_(INFO) << "DistributedClientTest SetMissionContinueState02 start.";
211 AAFwk::ContinueState state = AAFwk::ContinueState::CONTINUESTATE_INACTIVE;
212 MockMessageParcel::SetWriteInterfaceTokenErrorFlag(false);
213 EXPECT_NE(distributedClient_->SetMissionContinueState(0, state, 0), ERR_NULL_OBJECT);
214 MockMessageParcel::SetWriteInterfaceTokenErrorFlag(true);
215 EXPECT_NE(distributedClient_->SetMissionContinueState(0, state, 0), ERR_NULL_OBJECT);
216 MockMessageParcel::ClearAllErrorFlag();
217 GTEST_LOG_(INFO) << "DistributedClientTest SetMissionContinueState02 end.";
218 }
219
220 /**
221 * @tc.name: SetMissionContinueState03
222 * @tc.desc: SetMissionContinueState test
223 * @tc.type: FUNC
224 * @tc.require: #I6JLSI
225 */
226 HWTEST_F(DistributedClientTest, SetMissionContinueState03, TestSize.Level1)
227 {
228 GTEST_LOG_(INFO) << "DistributedClientTest SetMissionContinueState03 start.";
229 AAFwk::ContinueState state = AAFwk::ContinueState::CONTINUESTATE_MAX;
230 MockMessageParcel::SetWriteInterfaceTokenErrorFlag(false);
231 EXPECT_NE(distributedClient_->SetMissionContinueState(0, state, 0), ERR_NULL_OBJECT);
232 MockMessageParcel::SetWriteInterfaceTokenErrorFlag(true);
233 EXPECT_NE(distributedClient_->SetMissionContinueState(0, state, 0), ERR_NULL_OBJECT);
234 MockMessageParcel::ClearAllErrorFlag();
235 GTEST_LOG_(INFO) << "DistributedClientTest SetMissionContinueState03 end.";
236 }
237 } // namespace Rosen
238 } // namespace OHOS
239