• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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