1 /* 2 * Copyright (C) 2021-2022 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 <string> 18 #include <securec.h> 19 #include <stdlib.h> 20 #include <stdio.h> 21 #include <string> 22 #include "dhcp_argument.h" 23 #include "dhcp_define.h" 24 25 using namespace testing::ext; 26 27 28 HWTEST(DhcpArgumentTest, InitArgumentsTest, TestSize.Level1) 29 { 30 EXPECT_TRUE(InitArguments() == RET_SUCCESS); 31 } 32 33 HWTEST(DhcpArgumentTest, ParseArgumentsTest, TestSize.Level1) 34 { 35 PrintRequiredArguments(); 36 ShowHelp(2); 37 char *argv[ARGUMENT_VALUE_SIZE] = { 38 const_cast<char *>(""), 39 const_cast<char *>("--dns=192.168.1.1,192.168.1.2"), 40 const_cast<char *>("--ifname=eth0"), 41 const_cast<char *>("--gateway=192.168.1.1"), 42 const_cast<char *>("--pool=192.168.1.100,192.168.1.150"), 43 const_cast<char *>("--version"), 44 const_cast<char *>("--help"), 45 const_cast<char *>("--unknown"), 46 }; 47 48 EXPECT_TRUE(ParseArguments(8, argv) == RET_SUCCESS); 49 ArgumentInfo *arg = GetArgument("dns"); 50 EXPECT_TRUE(arg); 51 EXPECT_EQ(strncmp(arg->name, "dns", strlen("dns")), 0); 52 EXPECT_EQ(strncmp(arg->value, "192.168.1.1,192.168.1.2", strlen("192.168.1.1,192.168.1.2")), 0); 53 arg = GetArgument("ifname"); 54 EXPECT_TRUE(arg); 55 EXPECT_EQ(strncmp(arg->name, "ifname", strlen("ifname")), 0); 56 EXPECT_EQ(strncmp(arg->value, "eth0", strlen("eth0")), 0); 57 } 58 59 HWTEST(DhcpArgumentTest, PutArgumentTest, TestSize.Level1) 60 { 61 EXPECT_TRUE(PutArgument(NULL, NULL) == RET_FAILED); 62 const char *argu = "lease"; 63 const char *val = "4000"; 64 EXPECT_TRUE(PutArgument(NULL, val) == RET_FAILED); 65 EXPECT_TRUE(PutArgument(argu, NULL) == RET_FAILED); 66 EXPECT_TRUE(PutArgument(argu, val) == RET_SUCCESS); 67 argu = "xxxx"; 68 val = "nothing"; 69 EXPECT_TRUE(PutArgument(argu, val) == RET_SUCCESS); 70 EXPECT_TRUE(PutArgument(argu, val) == RET_FAILED); 71 argu = "longlongvalue"; 72 val = "verylongvalueverylongvalueverylongvalueverylongvalueverylongvalueverylongvalueverylongvalueverylongvaluevery" 73 "longvalueverylongvalueverylongvalueverylongvalueverylongvalueverylongvalueverylongvalueverylongvalueverylongvaluev" 74 "erylongvalueverylongvalueverylongvalueverylongvalue"; 75 EXPECT_TRUE(PutArgument(argu, val) == RET_ERROR); 76 } 77 78 HWTEST(DhcpArgumentTest, GetArgumentTest, TestSize.Level1) 79 { 80 ArgumentInfo *arg = GetArgument("lease"); 81 EXPECT_TRUE(arg); 82 EXPECT_EQ(0, strncmp(arg->name, "lease", strlen("lease"))); 83 EXPECT_EQ(0, strncmp(arg->value, "4000", strlen("4000"))); 84 85 arg = GetArgument("xxxx"); 86 EXPECT_TRUE(arg); 87 EXPECT_EQ(0, strncmp(arg->name, "xxxx", strlen("xxxx"))); 88 EXPECT_EQ(0, strncmp(arg->value, "nothing", strlen("nothing"))); 89 } 90 91 HWTEST(DhcpArgumentTest, HasArgumentTest, TestSize.Level1) 92 { 93 const char *name = "xxx"; 94 EXPECT_TRUE(HasArgument(name) == 0); 95 name = "lease"; 96 EXPECT_TRUE(HasArgument(name) == 1); 97 FreeArguments(); 98 } 99