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