1 /*
2  * Copyright (c) 2022-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 #include "hilog_tag_wrapper.h"
18 #include "iremote_proxy.h"
19 #include "mock_test_observer_stub.h"
20 #include "test_observer_stub.h"
21 
22 using namespace testing::ext;
23 using namespace OHOS;
24 using namespace OHOS::AAFwk;
25 
26 class TestObserverStubTest : public ::testing::Test {
27 public:
28     static void SetUpTestCase();
29     static void TearDownTestCase();
30     void SetUp() override;
31     void TearDown() override;
32 };
33 
SetUpTestCase()34 void TestObserverStubTest::SetUpTestCase()
35 {}
36 
TearDownTestCase()37 void TestObserverStubTest::TearDownTestCase()
38 {}
39 
SetUp()40 void TestObserverStubTest::SetUp()
41 {}
42 
TearDown()43 void TestObserverStubTest::TearDown()
44 {}
45 
46 /**
47  * @tc.number: Test_Observer_Stub_Test_0100
48  * @tc.name: Test OnRemoteRequest
49  * @tc.desc: Verify the OnRemoteRequest when code is AA_TEST_STATUS return NO_ERROR.
50  */
51 HWTEST_F(TestObserverStubTest, Test_Observer_Stub_Test_0100, Function | MediumTest | Level1)
52 {
53     TAG_LOGI(AAFwkTag::TEST, "Test_Observer_Stub_Test_0100 start");
54 
55     MessageParcel data;
56     MessageParcel reply;
57     MessageOption option;
58 
59     data.WriteInterfaceToken(TestObserverStub::GetDescriptor());
60     std::string args = "test";
61     data.WriteString(args);
62     data.WriteInt64(0);
63 
64     MockTestObserverStub stub;
65     int res = stub.OnRemoteRequest(static_cast<uint32_t>(ITestObserver::Message::AA_TEST_STATUS), data, reply, option);
66     EXPECT_EQ(res, NO_ERROR);
67 
68     TAG_LOGI(AAFwkTag::TEST, "Test_Observer_Stub_Test_0100 end");
69 }
70 
71 /**
72  * @tc.number: Test_Observer_Stub_Test_0200
73  * @tc.name: Test OnRemoteRequest
74  * @tc.desc: Verify the OnRemoteRequest when code is AA_TEST_FINISHED return NO_ERROR.
75  */
76 HWTEST_F(TestObserverStubTest, Test_Observer_Stub_Test_0200, Function | MediumTest | Level1)
77 {
78     TAG_LOGI(AAFwkTag::TEST, "Test_Observer_Stub_Test_0200 start");
79 
80     MessageParcel data;
81     MessageParcel reply;
82     MessageOption option;
83 
84     std::string args = "test";
85     data.WriteInterfaceToken(TestObserverStub::GetDescriptor());
86     data.WriteString(args);
87     data.WriteInt64(0);
88 
89     MockTestObserverStub stub;
90     int res = stub.OnRemoteRequest(static_cast<uint32_t>(ITestObserver::Message::AA_TEST_FINISHED),
91         data, reply, option);
92     EXPECT_EQ(res, NO_ERROR);
93 
94     TAG_LOGI(AAFwkTag::TEST, "Test_Observer_Stub_Test_0200 end");
95 }
96 
97 /**
98  * @tc.number: Test_Observer_Stub_Test_0300
99  * @tc.name: Test OnRemoteRequest
100  * @tc.desc: Verify the OnRemoteRequest when code is AA_EXECUTE_SHELL_COMMAND return NO_ERROR.
101  */
102 HWTEST_F(TestObserverStubTest, Test_Observer_Stub_Test_0300, Function | MediumTest | Level1)
103 {
104     TAG_LOGI(AAFwkTag::TEST, "Test_Observer_Stub_Test_0300 start");
105 
106     MessageParcel data;
107     MessageParcel reply;
108     MessageOption option;
109 
110     data.WriteInterfaceToken(TestObserverStub::GetDescriptor());
111     std::string args = "test";
112     data.WriteString(args);
113     data.WriteInt64(0);
114 
115     MockTestObserverStub stub;
116     int res = stub.OnRemoteRequest(static_cast<uint32_t>(ITestObserver::Message::AA_EXECUTE_SHELL_COMMAND),
117         data, reply, option);
118     EXPECT_EQ(res, NO_ERROR);
119 
120     TAG_LOGI(AAFwkTag::TEST, "Test_Observer_Stub_Test_0300 end");
121 }
122 
123 /**
124  * @tc.number: Test_Observer_Stub_Test_0400
125  * @tc.name: Test OnRemoteRequest
126  * @tc.desc: Verify the OnRemoteRequest when code is 0 return IPC_STUB_UNKNOW_TRANS_ERR.
127  */
128 HWTEST_F(TestObserverStubTest, Test_Observer_Stub_Test_0400, Function | MediumTest | Level1)
129 {
130     TAG_LOGI(AAFwkTag::TEST, "Test_Observer_Stub_Test_0400 start");
131 
132     MessageParcel data;
133     MessageParcel reply;
134     MessageOption option;
135 
136     data.WriteInterfaceToken(TestObserverStub::GetDescriptor());
137     std::string args = "test";
138     data.WriteString(args);
139     data.WriteInt64(0);
140 
141     MockTestObserverStub stub;
142     int res = stub.OnRemoteRequest(0, data, reply, option);
143     EXPECT_EQ(res, IPC_STUB_UNKNOW_TRANS_ERR);
144 
145     TAG_LOGI(AAFwkTag::TEST, "Test_Observer_Stub_Test_0400 end");
146 }
147 
148 /**
149  * @tc.number: Test_Observer_Stub_Test_0500
150  * @tc.name: Test OnRemoteRequest
151  * @tc.desc: Verify the OnRemoteRequest when local descriptor is not equal to remote return ERR_TRANSACTION_FAILED.
152  */
153 HWTEST_F(TestObserverStubTest, Test_Observer_Stub_Test_0500, Function | MediumTest | Level1)
154 {
155     TAG_LOGI(AAFwkTag::TEST, "Test_Observer_Stub_Test_0500 start");
156 
157     MessageParcel data;
158     MessageParcel reply;
159     MessageOption option;
160 
161     std::string args = "test";
162     data.WriteString(args);
163     data.WriteInt64(0);
164 
165     MockTestObserverStub stub;
166     int res = stub.OnRemoteRequest(0, data, reply, option);
167     EXPECT_EQ(res, ERR_TRANSACTION_FAILED);
168 
169     TAG_LOGI(AAFwkTag::TEST, "Test_Observer_Stub_Test_0500 end");
170 }