1 /*
2  * Copyright (c) 2022-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 "app_connection_stub_test.h"
17 #include "mock_remote_stub.h"
18 #include "test_log.h"
19 
20 using namespace testing;
21 using namespace testing::ext;
22 
23 namespace OHOS {
24 namespace DistributedSchedule {
25 namespace {
26 const std::u16string MOCK_INVALID_DESCRIPTOR = u"invalid descriptor";
27 }
28 
SetUpTestCase()29 void AppConnectionStubTest::SetUpTestCase()
30 {
31     DTEST_LOG << "AppConnectionStubTest::SetUpTestCase" << std::endl;
32 }
33 
TearDownTestCase()34 void AppConnectionStubTest::TearDownTestCase()
35 {
36     DTEST_LOG << "AppConnectionStubTest::TearDownTestCase" << std::endl;
37 }
38 
TearDown()39 void AppConnectionStubTest::TearDown()
40 {
41     DTEST_LOG << "AppConnectionStubTest::TearDown" << std::endl;
42 }
43 
SetUp()44 void AppConnectionStubTest::SetUp()
45 {
46     int32_t token = 0;
47     std::shared_ptr<ContinuationExtraParams> continuationExtraParams = std::make_shared<ContinuationExtraParams>();
48     appConnectionStub_ = new AppConnectionStub(token, continuationExtraParams);
49     DTEST_LOG << "AppConnectionStubTest::SetUp" << std::endl;
50 }
51 
52 /**
53  * @tc.name: AppConnectionStubTest_001
54  * @tc.desc: invalid descriptor
55  * @tc.type: FUNC
56  */
57 HWTEST_F(AppConnectionStubTest, AppConnectionStubTest_001, TestSize.Level3)
58 {
59     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_001 begin" << std::endl;
60     ASSERT_NE(nullptr, appConnectionStub_);
61     int32_t code = 0;
62     MessageParcel data;
63     MessageParcel reply;
64     MessageOption option;
65 
66     data.WriteInterfaceToken(MOCK_INVALID_DESCRIPTOR);
67     int32_t result = appConnectionStub_->OnRemoteRequest(code, data, reply, option);
68     EXPECT_EQ(result, ERR_INVALID_STATE);
69     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_001 end" << std::endl;
70 }
71 
72 /**
73  * @tc.name: AppConnectionStubTest_002
74  * @tc.desc: invalid element name
75  * @tc.type: FUNC
76  */
77 HWTEST_F(AppConnectionStubTest, AppConnectionStubTest_002, TestSize.Level3)
78 {
79     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_002 begin" << std::endl;
80     ASSERT_NE(nullptr, appConnectionStub_);
81     int32_t code = 0;
82     MessageParcel data;
83     MessageParcel reply;
84     MessageOption option;
85 
86     data.WriteInterfaceToken(AppConnectionStub::GetDescriptor());
87     int32_t result = appConnectionStub_->OnRemoteRequest(code, data, reply, option);
88     EXPECT_EQ(result, ERR_INVALID_VALUE);
89     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_002 end" << std::endl;
90 }
91 
92 /**
93  * @tc.name: AppConnectionStubTest_003
94  * @tc.desc: test connect done
95  * @tc.type: FUNC
96  */
97 HWTEST_F(AppConnectionStubTest, AppConnectionStubTest_003, TestSize.Level3)
98 {
99     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_003 begin" << std::endl;
100     ASSERT_NE(nullptr, appConnectionStub_);
101     int32_t code = 0;
102     MessageParcel data;
103     MessageParcel reply;
104     MessageOption option;
105 
106     data.WriteInterfaceToken(AppConnectionStub::GetDescriptor());
107     AppExecFwk::ElementName element;
108     data.WriteParcelable(&element);
109     code = AppConnectionStub::ON_ABILITY_CONNECT_DONE;
110     int32_t result = appConnectionStub_->OnRemoteRequest(code, data, reply, option);
111     EXPECT_EQ(result, ERR_INVALID_DATA);
112     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_003 end" << std::endl;
113 }
114 
115 /**
116  * @tc.name: AppConnectionStubTest_004
117  * @tc.desc: test disconnect done
118  * @tc.type: FUNC
119  */
120 HWTEST_F(AppConnectionStubTest, AppConnectionStubTest_004, TestSize.Level3)
121 {
122     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_004 begin" << std::endl;
123     ASSERT_NE(nullptr, appConnectionStub_);
124     int32_t code = 0;
125     MessageParcel data;
126     MessageParcel reply;
127     MessageOption option;
128 
129     data.WriteInterfaceToken(AppConnectionStub::GetDescriptor());
130     AppExecFwk::ElementName element;
131     data.WriteParcelable(&element);
132     code = AppConnectionStub::ON_ABILITY_DISCONNECT_DONE;
133     int32_t result = appConnectionStub_->OnRemoteRequest(code, data, reply, option);
134     EXPECT_EQ(result, ERR_NONE);
135     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_004 end" << std::endl;
136 }
137 
138 /**
139  * @tc.name: AppConnectionStubTest_005
140  * @tc.desc: invalid code
141  * @tc.type: FUNC
142  */
143 HWTEST_F(AppConnectionStubTest, AppConnectionStubTest_005, TestSize.Level3)
144 {
145     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_005 begin" << std::endl;
146     ASSERT_NE(nullptr, appConnectionStub_);
147     int32_t code = 0;
148     MessageParcel data;
149     MessageParcel reply;
150     MessageOption option;
151 
152     data.WriteInterfaceToken(AppConnectionStub::GetDescriptor());
153     AppExecFwk::ElementName element;
154     data.WriteParcelable(&element);
155     code = -1;
156     int32_t result = appConnectionStub_->OnRemoteRequest(code, data, reply, option);
157     EXPECT_NE(result, ERR_NONE);
158     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_005 end" << std::endl;
159 }
160 
161 /**
162  * @tc.name: AppConnectionStubTest_006
163  * @tc.desc: test connect done
164  * @tc.type: FUNC
165  */
166 HWTEST_F(AppConnectionStubTest, AppConnectionStubTest_006, TestSize.Level3)
167 {
168     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_006 begin" << std::endl;
169     ASSERT_NE(nullptr, appConnectionStub_);
170     int32_t code = 0;
171     MessageParcel data;
172     MessageParcel reply;
173     MessageOption option;
174 
175     data.WriteInterfaceToken(AppConnectionStub::GetDescriptor());
176     AppExecFwk::ElementName element;
177     data.WriteParcelable(&element);
178     data.WriteRemoteObject((new MockRemoteStub())->AsObject());
179     code = AppConnectionStub::ON_ABILITY_CONNECT_DONE;
180     int32_t result = appConnectionStub_->OnRemoteRequest(code, data, reply, option);
181     EXPECT_EQ(result, ERR_NONE);
182     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_006 end" << std::endl;
183 }
184 
185 /**
186  * @tc.name: AppConnectionStubTest_007
187  * @tc.desc: nullptr
188  * @tc.type: FUNC
189  */
190 HWTEST_F(AppConnectionStubTest, AppConnectionStubTest_007, TestSize.Level3)
191 {
192     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_007 begin" << std::endl;
193     ASSERT_NE(nullptr, appConnectionStub_);
194     int32_t code = 0;
195     MessageParcel data;
196     MessageParcel reply;
197     MessageOption option;
198 
199     data.WriteInterfaceToken(AppConnectionStub::GetDescriptor());
200     AppExecFwk::ElementName element;
201     data.WriteParcelable(&element);
202     data.WriteRemoteObject((new MockRemoteStub())->AsObject());
203     code = AppConnectionStub::ON_ABILITY_CONNECT_DONE;
204     int32_t result = appConnectionStub_->OnRemoteRequest(code, data, reply, option);
205     EXPECT_EQ(result, ERR_NONE);
206     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_007 end" << std::endl;
207 }
208 
209 /**
210  * @tc.name: AppConnectionStubTest_008
211  * @tc.desc: nullptr
212  * @tc.type: FUNC
213  */
214 HWTEST_F(AppConnectionStubTest, AppConnectionStubTest_008, TestSize.Level3)
215 {
216     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_008 begin" << std::endl;
217     ASSERT_NE(nullptr, appConnectionStub_);
218     int32_t code = 0;
219     MessageParcel data;
220     MessageParcel reply;
221     MessageOption option;
222 
223     data.WriteInterfaceToken(AppConnectionStub::GetDescriptor());
224     AppExecFwk::ElementName element;
225     data.WriteParcelable(&element);
226     code = AppConnectionStub::ON_ABILITY_DISCONNECT_DONE;
227     int32_t result = appConnectionStub_->OnRemoteRequest(code, data, reply, option);
228     EXPECT_EQ(result, ERR_NONE);
229     DTEST_LOG << "AppConnectionStubTest AppConnectionStubTest_008 end" << std::endl;
230 }
231 }
232 }