• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 "ui_service_stub.h"
19 #include "ui_service_proxy.h"
20 #include "hilog_tag_wrapper.h"
21 #include "mock_ability_token.h"
22 
23 using namespace testing::ext;
24 using namespace OHOS::AAFwk;
25 
26 namespace OHOS {
27 namespace AbilityRuntime {
28 class MockUIServiceStubTest : public AAFwk::UIServiceStub {
29 public:
30     MockUIServiceStubTest() = default;
31     ~MockUIServiceStubTest() override = default;
SendData(sptr<IRemoteObject> hostProxy,OHOS::AAFwk::WantParams & data)32     int32_t SendData(sptr<IRemoteObject> hostProxy, OHOS::AAFwk::WantParams &data) override
33     {
34         return 0;
35     }
36 };
37 class UIServiceStubTest : public testing::Test {
38 public:
39     static void SetUpTestCase();
40     static void TearDownTestCase();
41     void SetUp() override;
42     void TearDown() override;
43     void WriteInterfaceToken(MessageParcel &data);
44 };
45 
SetUpTestCase(void)46 void UIServiceStubTest::SetUpTestCase(void)
47 {}
48 
TearDownTestCase(void)49 void UIServiceStubTest::TearDownTestCase(void)
50 {}
51 
SetUp()52 void UIServiceStubTest::SetUp()
53 {}
54 
TearDown()55 void UIServiceStubTest::TearDown()
56 {}
57 
WriteInterfaceToken(MessageParcel & data)58 void UIServiceStubTest::WriteInterfaceToken(MessageParcel& data)
59 {
60     data.WriteInterfaceToken(UIServiceStub::GetDescriptor());
61 }
62 
63 /**
64  * @tc.number: OnRemoteRequest_0100
65  * @tc.name: OnRemoteRequest
66  * @tc.desc: UIServiceStub OnRemoteRequest
67  */
68 HWTEST_F(UIServiceStubTest, OnRemoteRequest_0100, TestSize.Level1)
69 {
70     TAG_LOGI(AAFwkTag::TEST, "OnRemoteRequest_0100 start");
71     std::shared_ptr<UIServiceStub> stub = std::make_shared<MockUIServiceStubTest>();
72     MessageParcel data;
73     MessageParcel reply;
74     MessageOption option;
75 
76     auto result = stub->OnRemoteRequest(IUIService::SEND_DATA, data, reply, option);
77     EXPECT_EQ(result, ERR_INVALID_STATE);
78     TAG_LOGI(AAFwkTag::TEST, "OnRemoteRequest_0100 end");
79 }
80 
81 /**
82  * @tc.number: OnRemoteRequest_0200
83  * @tc.name: OnRemoteRequest
84  * @tc.desc: UIServiceStub OnRemoteRequest
85  */
86 HWTEST_F(UIServiceStubTest, OnRemoteRequest_0200, TestSize.Level1)
87 {
88     TAG_LOGI(AAFwkTag::TEST, "OnRemoteRequest_0200 start");
89     std::shared_ptr<UIServiceStub> stub = std::make_shared<MockUIServiceStubTest>();
90 
91     MessageParcel data;
92     MessageParcel reply;
93     MessageOption option;
94 
95     data.WriteInterfaceToken(UIServiceStub::GetDescriptor());
96 
97     AAFwk::Want want;
98     const std::string name = "name";
99     const std::string dataStr = "data";
100     sptr<AppExecFwk::MockAbilityToken> token = new (std::nothrow) AppExecFwk::MockAbilityToken();
101     data.WriteRemoteObject(token);
102     data.WriteParcelable(&want);
103     if (!data.WriteString(name)) {
104         return;
105     }
106     if (!data.WriteString(dataStr)) {
107         return;
108     }
109 
110     int res = stub->OnRemoteRequest(IUIService::SEND_DATA, data, reply, option);
111     EXPECT_EQ(res, ERR_OK);
112     TAG_LOGI(AAFwkTag::TEST, "OnRemoteRequest_0200 end");
113 }
114 
115 /**
116  * @tc.number: OnSendData_0100
117  * @tc.name: OnSendData
118  * @tc.desc: UIServiceStub OnSendData
119  */
120 HWTEST_F(UIServiceStubTest, OnSendData_0100, TestSize.Level1)
121 {
122     TAG_LOGI(AAFwkTag::TEST, "OnSendData_0100 start");
123     std::shared_ptr<UIServiceStub> stub = std::make_shared<MockUIServiceStubTest>();
124 
125     MessageParcel data;
126     MessageParcel reply;
127 
128     data.WriteInterfaceToken(UIServiceStub::GetDescriptor());
129 
130     AAFwk::Want want;
131     const std::string name = "name";
132     const std::string dataStr = "data";
133     sptr<AppExecFwk::MockAbilityToken> token = new (std::nothrow) AppExecFwk::MockAbilityToken();
134     data.WriteRemoteObject(token);
135     data.WriteParcelable(&want);
136     if (!data.WriteString(name)) {
137         return;
138     }
139     if (!data.WriteString(dataStr)) {
140         return;
141     }
142 
143     int res = stub->OnSendData(data, reply);
144     EXPECT_EQ(res, ERR_INVALID_VALUE);
145     TAG_LOGI(AAFwkTag::TEST, "OnSendData_0100 end");
146 }
147 
148 /**
149  * @tc.number: OnSendData_0200
150  * @tc.name: OnSendData
151  * @tc.desc: UIServiceStub OnSendData
152  */
153 HWTEST_F(UIServiceStubTest, OnSendData_0200, TestSize.Level1)
154 {
155     TAG_LOGI(AAFwkTag::TEST, "OnSendData_0200 start");
156     std::shared_ptr<UIServiceStub> stub = std::make_shared<MockUIServiceStubTest>();
157 
158     MessageParcel data;
159     MessageParcel reply;
160     sptr<AppExecFwk::MockAbilityToken> token = new (std::nothrow) AppExecFwk::MockAbilityToken();
161     data.WriteRemoteObject(token);
162 
163     data.WriteInterfaceToken(UIServiceStub::GetDescriptor());
164 
165     auto result = stub->OnSendData(data, reply);
166     EXPECT_EQ(result, NO_ERROR);
167     TAG_LOGI(AAFwkTag::TEST, "OnSendData_0200 end");
168 }
169 } // namespace AbilityRuntime
170 } // namespace OHOS
171