1 /*
2 * Copyright (c) 2025 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 <iostream>
18 #include <memory>
19 #include "net_eap_callback_stub.h"
20
21 namespace OHOS {
22 namespace NetManagerStandard {
23 using namespace testing::ext;
24 class MockNetEapPostbackCallbackStubTest : public NetEapPostbackCallbackStub {
25 public:
26 MockNetEapPostbackCallbackStubTest() = default;
~MockNetEapPostbackCallbackStubTest()27 ~MockNetEapPostbackCallbackStubTest() override {}
OnEapSupplicantPostback(NetType netType,const sptr<EapData> & eapData)28 int32_t OnEapSupplicantPostback(NetType netType, const sptr<EapData> &eapData) override
29 {
30 std::cout << std::endl;
31 std::cout << "OnEapSupplicantPostback" << std::endl;
32 return 0;
33 }
34 };
35
36 class MockNetRegisterEapCallbackStubTest : public NetRegisterEapCallbackStub {
37 public:
38 MockNetRegisterEapCallbackStubTest() = default;
~MockNetRegisterEapCallbackStubTest()39 ~MockNetRegisterEapCallbackStubTest() override {}
OnRegisterCustomEapCallback(const std::string & regCmd)40 int32_t OnRegisterCustomEapCallback(const std::string ®Cmd) override
41 {
42 std::cout << std::endl;
43 std::cout << "OnRegisterCustomEapCallback" << std::endl;
44 return 0;
45 }
46
OnReplyCustomEapDataEvent(int result,const sptr<EapData> & eapData)47 int32_t OnReplyCustomEapDataEvent(int result, const sptr<EapData> &eapData) override
48 {
49 std::cout << std::endl;
50 std::cout << "OnReplyCustomEapDataEvent" << std::endl;
51 return 0;
52 }
53 };
54
55 class NetEapCallbackStubTest : public testing::Test {
56 public:
57 static void SetUpTestCase();
58 static void TearDownTestCase();
59 void SetUp();
60 void TearDown();
61
62 static inline std::shared_ptr<NetEapPostbackCallbackStub> eapPostbackPtr =
63 std::make_shared<MockNetEapPostbackCallbackStubTest>();
64 static inline std::shared_ptr<NetRegisterEapCallbackStub> registerEapPtr =
65 std::make_shared<MockNetRegisterEapCallbackStubTest>();
66 };
67
SetUpTestCase()68 void NetEapCallbackStubTest::SetUpTestCase() {}
69
TearDownTestCase()70 void NetEapCallbackStubTest::TearDownTestCase() {}
71
SetUp()72 void NetEapCallbackStubTest::SetUp() {}
73
TearDown()74 void NetEapCallbackStubTest::TearDown() {}
75
76 /**
77 * @tc.name: OnRemoteRequest001
78 * @tc.desc: Test NetEapCallbackStubTest OnRemoteRequest.
79 * @tc.type: FUNC
80 */
81 HWTEST_F(NetEapCallbackStubTest, OnRemoteRequest001, TestSize.Level1)
82 {
83 MessageParcel data;
84 MessageParcel reply;
85 MessageOption option;
86 int32_t ret = eapPostbackPtr->OnRemoteRequest(100, data, reply, option);
87 EXPECT_EQ(ret, NETMANAGER_ERR_DESCRIPTOR_MISMATCH);
88
89 data.WriteInterfaceToken(NetEapPostbackCallbackStub::GetDescriptor());
90 ret = eapPostbackPtr->OnRemoteRequest(100, data, reply, option);
91 EXPECT_EQ(ret, IPC_STUB_UNKNOW_TRANS_ERR);
92 }
93
94 /**
95 * @tc.name: OnEapSupplicantPostbackTest001
96 * @tc.desc: Test NetEapPostbackCallbackStub OnEapSupplicantPostback.
97 * @tc.type: FUNC
98 */
99 HWTEST_F(NetEapCallbackStubTest, OnEapSupplicantPostbackTest001, TestSize.Level1)
100 {
101 MessageParcel data;
102 MessageParcel reply;
103 MessageOption option;
104 data.WriteInterfaceToken(NetEapPostbackCallbackStub::GetDescriptor());
105 data.WriteInt32(1);
106 sptr<EapData> eapData = new (std::nothrow) EapData();
107 eapData->eapCode = 1;
108 eapData->eapType = 13;
109 eapData->msgId = 55;
110 eapData->bufferLen = 4;
111 std::vector<uint8_t> tmp = {0x11, 0x12};
112 eapData->eapBuffer = tmp;
113 eapData->Marshalling(data);
114 int32_t ret = eapPostbackPtr->OnRemoteRequest(static_cast<uint32_t>(NetEapIpcCode::NET_EAP_POSTBACK),
115 data, reply, option);
116 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
117 }
118
119 /**
120 * @tc.name: OnRegisterCustomEapCallbackTest001
121 * @tc.desc: Test NetRegisterEapCallbackStub OnRegisterCustomEapCallback.
122 * @tc.type: FUNC
123 */
124 HWTEST_F(NetEapCallbackStubTest, OnRegisterCustomEapCallbackTest001, TestSize.Level1)
125 {
126 MessageParcel data;
127 MessageParcel reply;
128 MessageOption option;
129 data.WriteInterfaceToken(NetRegisterEapCallbackStub::GetDescriptor());
130 std::string regCmd = "2:277:278";
131 data.WriteString(regCmd);
132 int32_t ret = registerEapPtr->OnRemoteRequest(static_cast<uint32_t>(NetEapIpcCode::NET_REPLY_CUSTOM_EAPDATA),
133 data, reply, option);
134 EXPECT_TRUE(ret == NETMANAGER_SUCCESS || ret == NETMANAGER_ERR_LOCAL_PTR_NULL);
135 }
136
137 /**
138 * @tc.name: OnReplyCustomEapDataEventTest001
139 * @tc.desc: Test NetRegisterEapCallbackStub OnReplyCustomEapDataEvent.
140 * @tc.type: FUNC
141 */
142 HWTEST_F(NetEapCallbackStubTest, OnReplyCustomEapDataEventTest001, TestSize.Level1)
143 {
144 MessageParcel data;
145 MessageParcel reply;
146 MessageOption option;
147 data.WriteInterfaceToken(NetRegisterEapCallbackStub::GetDescriptor());
148 int result = 1;
149 std::string strEapData = "55:4:abcd";
150
151 data.WriteInt32(result);
152 data.WriteString(strEapData);
153 int32_t ret = registerEapPtr->OnRemoteRequest(static_cast<uint32_t>(NetEapIpcCode::NET_REPLY_CUSTOM_EAPDATA),
154 data, reply, option);
155 EXPECT_EQ(ret, NETMANAGER_SUCCESS);
156 }
157
158 } // namespace NetManagerStandard
159 } // namespace OHOS