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