1 #include "phosphor-ldap-config/utils.hpp"
2 #include <netinet/in.h>
3 #include <gtest/gtest.h>
4 #include <ldap.h>
5 
6 namespace phosphor
7 {
8 namespace ldap
9 {
10 constexpr auto LDAPscheme = "ldap";
11 constexpr auto LDAPSscheme = "ldaps";
12 
13 class TestUtil : public testing::Test
14 {
15   public:
16     TestUtil()
17     {
18         // Empty
19     }
20 };
21 
22 TEST_F(TestUtil, URIValidation)
23 {
24     std::string ipaddress = "ldap://0.0.0.0";
25     EXPECT_EQ(true, isValidLDAPURI(ipaddress.c_str(), LDAPscheme));
26 
27     ipaddress = "ldap://9.3.185.83";
28     EXPECT_EQ(true, isValidLDAPURI(ipaddress.c_str(), LDAPscheme));
29 
30     ipaddress = "ldaps://9.3.185.83";
31     EXPECT_EQ(false, isValidLDAPURI(ipaddress.c_str(), LDAPscheme));
32 
33     ipaddress = "ldap://9.3.a.83";
34     EXPECT_EQ(false, isValidLDAPURI(ipaddress.c_str(), LDAPscheme));
35 
36     ipaddress = "ldap://9.3.185.a";
37     EXPECT_EQ(false, isValidLDAPURI(ipaddress.c_str(), LDAPscheme));
38 
39     ipaddress = "ldap://x.x.x.x";
40     EXPECT_EQ(false, isValidLDAPURI(ipaddress.c_str(), LDAPscheme));
41 
42     ipaddress = "ldaps://0.0.0.0";
43     EXPECT_EQ(true, isValidLDAPURI(ipaddress.c_str(), LDAPSscheme));
44 
45     ipaddress = "ldap://0.0.0.0";
46     EXPECT_EQ(false, isValidLDAPURI(ipaddress.c_str(), LDAPSscheme));
47 
48     ipaddress = "ldaps://9.3.185.83";
49     EXPECT_EQ(true, isValidLDAPURI(ipaddress.c_str(), LDAPSscheme));
50 
51     ipaddress = "ldap://9.3.185.83";
52     EXPECT_EQ(false, isValidLDAPURI(ipaddress.c_str(), LDAPSscheme));
53 
54     ipaddress = "ldaps://9.3.185.83";
55     EXPECT_EQ(true, isValidLDAPURI(ipaddress.c_str(), LDAPSscheme));
56 
57     ipaddress = "ldaps://9.3.185.a";
58     EXPECT_EQ(false, isValidLDAPURI(ipaddress.c_str(), LDAPSscheme));
59 
60     ipaddress = "ldaps://9.3.a.83";
61     EXPECT_EQ(false, isValidLDAPURI(ipaddress.c_str(), LDAPSscheme));
62 
63     ipaddress = "ldaps://x.x.x.x";
64     EXPECT_EQ(false, isValidLDAPURI(ipaddress.c_str(), LDAPSscheme));
65 }
66 } // namespace ldap
67 } // namespace phosphor
68