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 #define private public
19 #include "dns_getaddrinfo.h"
20 #undef private
21
22 namespace OHOS {
23 namespace NetsysNative {
24 using namespace testing::ext;
25 using namespace OHOS::nmd;
26
27 class DNSGetaddrinNewTest : public testing::Test {
28 public:
29 static void SetUpTestCase();
30 static void TearDownTestCase();
31 void SetUp();
32 void TearDown();
33 };
34
SetUpTestCase()35 void DNSGetaddrinNewTest::SetUpTestCase() {}
36
TearDownTestCase()37 void DNSGetaddrinNewTest::TearDownTestCase() {}
38
SetUp()39 void DNSGetaddrinNewTest::SetUp() {}
40
TearDown()41 void DNSGetaddrinNewTest::TearDown() {}
42
43 HWTEST_F(DNSGetaddrinNewTest, CheckHintsNewTest001, TestSize.Level1)
44 {
45 NETNATIVE_LOGI("CheckHintsTest aiFamily = AF_UNSPEC");
46 DnsGetAddrInfo getInfo;
47 struct AddrInfo addrInfo;
48 addrInfo.aiFlags = AI_ALL;
49 addrInfo.aiFamily = AF_UNSPEC;
50 int32_t ret = getInfo.CheckHints(addrInfo);
51 EXPECT_EQ(ret, DNS_ERR_NONE);
52 }
53
54 HWTEST_F(DNSGetaddrinNewTest, CheckHintsNewTest002, TestSize.Level1)
55 {
56 NETNATIVE_LOGI("CheckHintsTest aiFamily = AF_INET");
57 DnsGetAddrInfo getInfo;
58 struct AddrInfo addrInfo;
59 addrInfo.aiFlags = AI_ALL;
60 addrInfo.aiFamily = AF_INET;
61 int32_t ret = getInfo.CheckHints(addrInfo);
62 EXPECT_EQ(ret, DNS_ERR_NONE);
63 }
64
65 HWTEST_F(DNSGetaddrinNewTest, CheckHintsNewTest003, TestSize.Level1)
66 {
67 NETNATIVE_LOGI("CheckHintsTest aiFamily = AF_INET6");
68 DnsGetAddrInfo getInfo;
69 struct AddrInfo addrInfo;
70 addrInfo.aiFlags = AI_ALL;
71 addrInfo.aiFamily = AF_INET6;
72 int32_t ret = getInfo.CheckHints(addrInfo);
73 EXPECT_EQ(ret, DNS_ERR_NONE);
74 }
75
76 HWTEST_F(DNSGetaddrinNewTest, CheckHintsNewTest004, TestSize.Level1)
77 {
78 NETNATIVE_LOGI("CheckHintsTest error family enter");
79 DnsGetAddrInfo getInfo;
80 struct AddrInfo addrInfo;
81 addrInfo.aiFlags = AI_ALL;
82 addrInfo.aiFamily = 88;
83 int32_t ret = getInfo.CheckHints(addrInfo);
84 EXPECT_EQ(ret, EAI_FAMILY);
85 }
86
87 HWTEST_F(DNSGetaddrinNewTest, ParseAddrNewTest001, TestSize.Level1)
88 {
89 NETNATIVE_LOGI("ParseAddrTest family = AF_INET enter");
90 DnsGetAddrInfo getInfo;
91 int32_t addrNum = 1;
92 int32_t servNum = 1;
93 struct ServData servData[2] = {};
94 struct AddrData addrData[48] = {};
95 addrData[0].family = AF_INET;
96 char canon[16] = {0};
97 int32_t len = 16;
98 std::vector<AddrInfo> out;
99 getInfo.ParseAddr(addrNum, servNum, servData, addrData, canon, len, out);
100 int32_t res = out.empty();
101 EXPECT_EQ(res, false);
102 }
103
104 HWTEST_F(DNSGetaddrinNewTest, ParseAddrNewTest002, TestSize.Level1)
105 {
106 NETNATIVE_LOGI("ParseAddrTest family = AF_INET6 enter");
107 DnsGetAddrInfo getInfo;
108 int32_t addrNum = 1;
109 int32_t servNum = 1;
110 struct ServData servData[2] = {};
111 struct AddrData addrData[48] = {};
112 addrData[0].family = AF_INET6;
113 char canon[16] = {0};
114 int32_t len = 0;
115 std::vector<AddrInfo> out;
116 getInfo.ParseAddr(addrNum, servNum, servData, addrData, canon, len, out);
117 int32_t res = out.empty();
118 EXPECT_EQ(res, false);
119 }
120
121 HWTEST_F(DNSGetaddrinNewTest, GetAddrInfoNewTest001, TestSize.Level1)
122 {
123 NETNATIVE_LOGI("GetAddrInfoTest host name empty enter");
124 DnsGetAddrInfo getInfo;
125 std::string host = "";
126 std::string server = "";
127 struct AddrInfo addrInfo = {};
128 uint16_t netId = 103;
129 std::vector<AddrInfo> out;
130 int32_t ret = getInfo.GetAddrInfo(host, server, addrInfo, netId, out);
131 EXPECT_EQ(ret, EAI_NONAME);
132 }
133
134 HWTEST_F(DNSGetaddrinNewTest, GetAddrInfoNewTest002, TestSize.Level1)
135 {
136 NETNATIVE_LOGI("GetAddrInfoTest hints is ok enter");
137 DnsGetAddrInfo getInfo;
138 AddrInfo hints = {
139 .aiFamily = AF_INET6,
140 .aiFlags = AI_ALL,
141 .aiProtocol = IPPROTO_UDP,
142 .aiSockType = SOCK_DGRAM,
143 };
144 std::string host = "www.baidu.com";
145 std::string server;
146 uint16_t netId = 0;
147 std::vector<AddrInfo> out;
148 int32_t ret = getInfo.GetAddrInfo(host, server, hints, netId, out);
149 EXPECT_EQ(ret, EAI_NONAME);
150 }
151
152 HWTEST_F(DNSGetaddrinNewTest, GetAddrInfoNewTest003, TestSize.Level1)
153 {
154 NETNATIVE_LOGI("GetAddrInfoTest server is null enter");
155 DnsGetAddrInfo getInfo;
156 std::string host = "www.baidu.com";
157 std::string server;
158 struct AddrInfo addrInfo = {};
159 uint16_t netId = 101;
160 std::vector<AddrInfo> out;
161 int32_t ret = getInfo.GetAddrInfo(host, server, addrInfo, netId, out);
162 EXPECT_EQ(ret, EAI_NONAME);
163 }
164
165 } // namespace NetsysNative
166 } // namespace OHOS