blob: f9cf386f95b11038c6925c9e1ab32e19a9e39a1e [file] [log] [blame]
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -06001#include "config.h"
2#include "phosphor-ldap-config/ldap_configuration.hpp"
Ratan Gupta95a29312019-02-18 20:34:10 +05303#include "phosphor-ldap-config/ldap_serialize.hpp"
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -06004
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -06005#include <phosphor-logging/log.hpp>
6#include <phosphor-logging/elog-errors.hpp>
7#include <sdbusplus/bus.hpp>
8#include <xyz/openbmc_project/Common/error.hpp>
9#include <sdbusplus/bus.hpp>
10#include <gmock/gmock.h>
11#include <gtest/gtest.h>
Ratan Gupta95a29312019-02-18 20:34:10 +053012
13#include <filesystem>
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -060014#include <fstream>
15#include <string>
16#include <sys/types.h>
17
18namespace phosphor
19{
20namespace ldap
21{
Ratan Gupta95a29312019-02-18 20:34:10 +053022namespace fs = std::filesystem;
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -060023namespace ldap_base = sdbusplus::xyz::openbmc_project::User::Ldap::server;
24using Config = phosphor::ldap::Config;
Ratan Gupta95a29312019-02-18 20:34:10 +053025static constexpr const char* dbusPersistFile = "Config";
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -060026
27class TestLDAPConfig : public testing::Test
28{
29 public:
30 TestLDAPConfig() : bus(sdbusplus::bus::new_default())
31 {
32 }
33 void SetUp() override
34 {
35 using namespace phosphor::ldap;
36 char tmpldap[] = "/tmp/ldap_test.XXXXXX";
37 dir = fs::path(mkdtemp(tmpldap));
38 fs::path tslCacertFilePath{TLS_CACERT_FILE};
39 tslCacertFile = tslCacertFilePath.filename().c_str();
40 fs::path confFilePath{LDAP_CONFIG_FILE};
41 ldapconfFile = confFilePath.filename().c_str();
42 std::fstream fs;
43 fs.open(dir / defaultNslcdFile, std::fstream::out);
44 fs.close();
45 fs.open(dir / nsSwitchFile, std::fstream::out);
46 fs.close();
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -060047 }
48
49 void TearDown() override
50 {
51 fs::remove_all(dir);
52 }
53
54 protected:
55 fs::path dir;
56 std::string tslCacertFile;
57 std::string ldapconfFile;
58 sdbusplus::bus::bus bus;
59};
60
61class MockConfigMgr : public phosphor::ldap::ConfigMgr
62{
63 public:
64 MockConfigMgr(sdbusplus::bus::bus& bus, const char* path,
Ratan Gupta95a29312019-02-18 20:34:10 +053065 const char* filePath, const char* dbusPersistentFile,
66 const char* caCertFile) :
67 phosphor::ldap::ConfigMgr(bus, path, filePath, dbusPersistentFile,
68 caCertFile)
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -060069 {
70 }
71 MOCK_METHOD1(restartService, void(const std::string& service));
72 MOCK_METHOD1(stopService, void(const std::string& service));
73 std::unique_ptr<Config>& getConfigPtr()
74 {
75 return configPtr;
76 }
77
Ratan Gupta3a1c2742019-03-20 06:49:42 +053078 std::string configBindPassword()
79 {
80 return getConfigPtr()->lDAPBindPassword;
81 }
82
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -060083 void restore(const char* filePath)
84 {
85 phosphor::ldap::ConfigMgr::restore(filePath);
86 return;
87 }
88
89 friend class TestLDAPConfig;
90};
91
92TEST_F(TestLDAPConfig, testCreate)
93{
94 auto configFilePath = std::string(dir.c_str()) + "/" + ldapconfFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -060095 auto tlsCacertfile = std::string(dir.c_str()) + "/" + tslCacertFile;
Ratan Gupta95a29312019-02-18 20:34:10 +053096 auto dbusPersistentFilePath =
97 std::string(dir.c_str()) + "/" + dbusPersistFile;
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -060098
99 if (fs::exists(configFilePath))
100 {
101 fs::remove(configFilePath);
102 }
103 EXPECT_FALSE(fs::exists(configFilePath));
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600104 MockConfigMgr manager(bus, LDAP_CONFIG_ROOT, configFilePath.c_str(),
Ratan Gupta95a29312019-02-18 20:34:10 +0530105 dbusPersistentFilePath.c_str(),
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600106 tlsCacertfile.c_str());
Ratan Gupta3a1c2742019-03-20 06:49:42 +0530107 EXPECT_CALL(manager, restartService("nslcd.service")).Times(2);
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600108 EXPECT_CALL(manager, restartService("nscd.service")).Times(1);
Ratan Guptaaeaf9412019-02-11 04:41:52 -0600109 manager.createConfig(
110 "ldap://9.194.251.136/", "cn=Users,dc=com", "cn=Users,dc=corp",
111 "MyLdap12", ldap_base::Create::SearchScope::sub,
112 ldap_base::Create::Type::ActiveDirectory, "uid", "gid");
113 manager.getConfigPtr()->enabled(true);
Ratan Gupta95a29312019-02-18 20:34:10 +0530114
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600115 EXPECT_TRUE(fs::exists(configFilePath));
116 EXPECT_EQ(manager.getConfigPtr()->lDAPServerURI(), "ldap://9.194.251.136/");
117 EXPECT_EQ(manager.getConfigPtr()->lDAPBindDN(), "cn=Users,dc=com");
118 EXPECT_EQ(manager.getConfigPtr()->lDAPBaseDN(), "cn=Users,dc=corp");
119 EXPECT_EQ(manager.getConfigPtr()->lDAPSearchScope(),
120 ldap_base::Config::SearchScope::sub);
121 EXPECT_EQ(manager.getConfigPtr()->lDAPType(),
122 ldap_base::Config::Type::ActiveDirectory);
Ratan Guptaaeaf9412019-02-11 04:41:52 -0600123 EXPECT_EQ(manager.getConfigPtr()->userNameAttribute(), "uid");
124 EXPECT_EQ(manager.getConfigPtr()->groupNameAttribute(), "gid");
Ratan Gupta3a1c2742019-03-20 06:49:42 +0530125 EXPECT_EQ(manager.getConfigPtr()->lDAPBindDNPassword(), "");
126 EXPECT_EQ(manager.configBindPassword(), "MyLdap12");
127 // change the password
128 manager.getConfigPtr()->lDAPBindDNPassword("MyLdap14");
129 EXPECT_EQ(manager.getConfigPtr()->lDAPBindDNPassword(), "");
130 EXPECT_EQ(manager.configBindPassword(), "MyLdap14");
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600131}
132
133TEST_F(TestLDAPConfig, testRestores)
134{
135 auto configFilePath = std::string(dir.c_str()) + "/" + ldapconfFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600136 auto tlsCacertfile = std::string(dir.c_str()) + "/" + tslCacertFile;
Ratan Gupta95a29312019-02-18 20:34:10 +0530137 auto dbusPersistentFilePath =
138 std::string(dir.c_str()) + "/" + dbusPersistFile;
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600139
140 if (fs::exists(configFilePath))
141 {
142 fs::remove(configFilePath);
143 }
144 EXPECT_FALSE(fs::exists(configFilePath));
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600145 MockConfigMgr* managerPtr = new MockConfigMgr(
Ratan Gupta95a29312019-02-18 20:34:10 +0530146 bus, LDAP_CONFIG_ROOT, configFilePath.c_str(),
147 dbusPersistentFilePath.c_str(), tlsCacertfile.c_str());
148 EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(2);
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600149 EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(2);
Ratan Guptaaeaf9412019-02-11 04:41:52 -0600150 managerPtr->createConfig(
151 "ldap://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
152 "MyLdap12", ldap_base::Create::SearchScope::sub,
153 ldap_base::Create::Type::ActiveDirectory, "uid", "gid");
Ratan Gupta95a29312019-02-18 20:34:10 +0530154 managerPtr->getConfigPtr()->enabled(false);
155
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600156 EXPECT_TRUE(fs::exists(configFilePath));
Ratan Gupta95a29312019-02-18 20:34:10 +0530157 EXPECT_FALSE(managerPtr->getConfigPtr()->enabled());
158 managerPtr->getConfigPtr()->enabled(true);
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600159 // Delete LDAP configuration
160 managerPtr->deleteObject();
161 EXPECT_TRUE(fs::exists(configFilePath));
162 // Restore from configFilePath
163 managerPtr->restore(configFilePath.c_str());
164 // validate restored properties
Ratan Gupta95a29312019-02-18 20:34:10 +0530165 EXPECT_TRUE(managerPtr->getConfigPtr()->enabled());
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600166 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPServerURI(),
167 "ldap://9.194.251.138/");
168 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPBindDN(), "cn=Users,dc=com");
169 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPBaseDN(), "cn=Users,dc=corp");
170 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPSearchScope(),
171 ldap_base::Config::SearchScope::sub);
172 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPType(),
173 ldap_base::Config::Type::ActiveDirectory);
Ratan Guptaaeaf9412019-02-11 04:41:52 -0600174 EXPECT_EQ(managerPtr->getConfigPtr()->userNameAttribute(), "uid");
175 EXPECT_EQ(managerPtr->getConfigPtr()->groupNameAttribute(), "gid");
Ratan Gupta3a1c2742019-03-20 06:49:42 +0530176 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPBindDNPassword(), "");
177 EXPECT_EQ(managerPtr->configBindPassword(), "MyLdap12");
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600178 delete managerPtr;
179}
180
181TEST_F(TestLDAPConfig, testLDAPServerURI)
182{
183 auto configFilePath = std::string(dir.c_str()) + "/" + ldapconfFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600184 auto tlsCacertfile = std::string(dir.c_str()) + "/" + tslCacertFile;
Ratan Gupta95a29312019-02-18 20:34:10 +0530185 auto dbusPersistentFilePath =
186 std::string(dir.c_str()) + "/" + dbusPersistFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600187
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600188 if (fs::exists(configFilePath))
189 {
190 fs::remove(configFilePath);
191 }
192 EXPECT_FALSE(fs::exists(configFilePath));
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600193 MockConfigMgr* managerPtr = new MockConfigMgr(
Ratan Gupta95a29312019-02-18 20:34:10 +0530194 bus, LDAP_CONFIG_ROOT, configFilePath.c_str(),
195 dbusPersistentFilePath.c_str(), tlsCacertfile.c_str());
196 EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(3);
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600197 EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(2);
198
Ratan Guptaaeaf9412019-02-11 04:41:52 -0600199 managerPtr->createConfig(
200 "ldap://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
201 "MyLdap12", ldap_base::Create::SearchScope::sub,
202 ldap_base::Create::Type::ActiveDirectory, "attr1", "attr2");
203 managerPtr->getConfigPtr()->enabled(true);
Ratan Gupta95a29312019-02-18 20:34:10 +0530204
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600205 // Change LDAP Server URI
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600206 managerPtr->getConfigPtr()->lDAPServerURI("ldap://9.194.251.139/");
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600207 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPServerURI(),
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600208 "ldap://9.194.251.139/");
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600209 // Change LDAP Server URI
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600210 EXPECT_THROW(
211 managerPtr->getConfigPtr()->lDAPServerURI("ldaps://9.194.251.139/"),
212 NoCACertificate);
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600213 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPServerURI(),
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600214 "ldap://9.194.251.139/");
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600215 // Delete LDAP configuration
216 managerPtr->deleteObject();
217
218 managerPtr->restore(configFilePath.c_str());
219 // Check LDAP Server URI
220 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPServerURI(),
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600221 "ldap://9.194.251.139/");
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600222 delete managerPtr;
223}
224
225TEST_F(TestLDAPConfig, testLDAPBindDN)
226{
227 auto configFilePath = std::string(dir.c_str()) + "/" + ldapconfFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600228 auto tlsCacertfile = std::string(dir.c_str()) + "/" + tslCacertFile;
Ratan Gupta95a29312019-02-18 20:34:10 +0530229 auto dbusPersistentFilePath =
230 std::string(dir.c_str()) + "/" + dbusPersistFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600231
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600232 if (fs::exists(configFilePath))
233 {
234 fs::remove(configFilePath);
235 }
236 EXPECT_FALSE(fs::exists(configFilePath));
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600237 MockConfigMgr* managerPtr = new MockConfigMgr(
Ratan Gupta95a29312019-02-18 20:34:10 +0530238 bus, LDAP_CONFIG_ROOT, configFilePath.c_str(),
239 dbusPersistentFilePath.c_str(), tlsCacertfile.c_str());
240 EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(3);
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600241 EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(2);
242
Ratan Guptaaeaf9412019-02-11 04:41:52 -0600243 managerPtr->createConfig(
244 "ldap://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
245 "MyLdap12", ldap_base::Create::SearchScope::sub,
246 ldap_base::Create::Type::ActiveDirectory, "attr1", "attr2");
247 managerPtr->getConfigPtr()->enabled(true);
Ratan Gupta95a29312019-02-18 20:34:10 +0530248
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600249 // Change LDAP BindDN
250 managerPtr->getConfigPtr()->lDAPBindDN(
251 "cn=Administrator,cn=Users,dc=corp,dc=ibm,dc=com");
252 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPBindDN(),
253 "cn=Administrator,cn=Users,dc=corp,dc=ibm,dc=com");
254 // Change LDAP BindDN
255 EXPECT_THROW(
256 {
257 try
258 {
259 managerPtr->getConfigPtr()->lDAPBindDN("");
260 }
261 catch (const InvalidArgument& e)
262 {
263 throw;
264 }
265 },
266 InvalidArgument);
267 // Delete LDAP configuration
268 managerPtr->deleteObject();
269
270 managerPtr->restore(configFilePath.c_str());
271 // Check LDAP BindDN after restoring
272 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPBindDN(),
273 "cn=Administrator,cn=Users,dc=corp,dc=ibm,dc=com");
274 delete managerPtr;
275}
276
277TEST_F(TestLDAPConfig, testLDAPBaseDN)
278{
279 auto configFilePath = std::string(dir.c_str()) + "/" + ldapconfFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600280 auto tlsCacertfile = std::string(dir.c_str()) + "/" + tslCacertFile;
Ratan Gupta95a29312019-02-18 20:34:10 +0530281 auto dbusPersistentFilePath =
282 std::string(dir.c_str()) + "/" + dbusPersistFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600283
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600284 if (fs::exists(configFilePath))
285 {
286 fs::remove(configFilePath);
287 }
288 EXPECT_FALSE(fs::exists(configFilePath));
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600289 MockConfigMgr* managerPtr = new MockConfigMgr(
Ratan Gupta95a29312019-02-18 20:34:10 +0530290 bus, LDAP_CONFIG_ROOT, configFilePath.c_str(),
291 dbusPersistentFilePath.c_str(), tlsCacertfile.c_str());
292 EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(3);
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600293 EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(2);
Ratan Guptaaeaf9412019-02-11 04:41:52 -0600294 managerPtr->createConfig(
295 "ldap://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
296 "MyLdap12", ldap_base::Create::SearchScope::sub,
297 ldap_base::Create::Type::ActiveDirectory, "attr1", "attr2");
298 managerPtr->getConfigPtr()->enabled(true);
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600299 // Change LDAP BaseDN
300 managerPtr->getConfigPtr()->lDAPBaseDN(
301 "cn=Administrator,cn=Users,dc=corp,dc=ibm,dc=com");
302 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPBaseDN(),
303 "cn=Administrator,cn=Users,dc=corp,dc=ibm,dc=com");
304 // Change LDAP BaseDN
305 EXPECT_THROW(
306 {
307 try
308 {
309 managerPtr->getConfigPtr()->lDAPBaseDN("");
310 }
311 catch (const InvalidArgument& e)
312 {
313 throw;
314 }
315 },
316 InvalidArgument);
317 // Delete LDAP configuration
318 managerPtr->deleteObject();
319
320 managerPtr->restore(configFilePath.c_str());
321 // Check LDAP BaseDN after restoring
322 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPBaseDN(),
323 "cn=Administrator,cn=Users,dc=corp,dc=ibm,dc=com");
324 delete managerPtr;
325}
326
327TEST_F(TestLDAPConfig, testSearchScope)
328{
329 auto configFilePath = std::string(dir.c_str()) + "/" + ldapconfFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600330 auto tlsCacertfile = std::string(dir.c_str()) + "/" + tslCacertFile;
Ratan Gupta95a29312019-02-18 20:34:10 +0530331 auto dbusPersistentFilePath =
332 std::string(dir.c_str()) + "/" + dbusPersistFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600333
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600334 if (fs::exists(configFilePath))
335 {
336 fs::remove(configFilePath);
337 }
338 EXPECT_FALSE(fs::exists(configFilePath));
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600339 MockConfigMgr* managerPtr = new MockConfigMgr(
Ratan Gupta95a29312019-02-18 20:34:10 +0530340 bus, LDAP_CONFIG_ROOT, configFilePath.c_str(),
341 dbusPersistentFilePath.c_str(), tlsCacertfile.c_str());
342 EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(3);
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600343 EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(2);
Ratan Guptaaeaf9412019-02-11 04:41:52 -0600344 managerPtr->createConfig(
345 "ldap://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
346 "MyLdap12", ldap_base::Create::SearchScope::sub,
347 ldap_base::Create::Type::ActiveDirectory, "attr1", "attr2");
348 managerPtr->getConfigPtr()->enabled(true);
Ratan Gupta95a29312019-02-18 20:34:10 +0530349
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600350 // Change LDAP SearchScope
351 managerPtr->getConfigPtr()->lDAPSearchScope(
352 ldap_base::Config::SearchScope::one);
353 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPSearchScope(),
354 ldap_base::Config::SearchScope::one);
355 // Delete LDAP configuration
356 managerPtr->deleteObject();
357
358 managerPtr->restore(configFilePath.c_str());
359 // Check LDAP SearchScope after restoring
360 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPSearchScope(),
361 ldap_base::Config::SearchScope::one);
362 delete managerPtr;
363}
364
365TEST_F(TestLDAPConfig, testLDAPType)
366{
367 auto configFilePath = std::string(dir.c_str()) + "/" + ldapconfFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600368 auto tlsCacertfile = std::string(dir.c_str()) + "/" + tslCacertFile;
Ratan Gupta95a29312019-02-18 20:34:10 +0530369 auto dbusPersistentFilePath =
370 std::string(dir.c_str()) + "/" + dbusPersistFile;
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600371
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600372 if (fs::exists(configFilePath))
373 {
374 fs::remove(configFilePath);
375 }
376 EXPECT_FALSE(fs::exists(configFilePath));
Nagaraju Goruganti3b4d06a2018-11-08 03:13:38 -0600377 MockConfigMgr* managerPtr = new MockConfigMgr(
Ratan Gupta95a29312019-02-18 20:34:10 +0530378 bus, LDAP_CONFIG_ROOT, configFilePath.c_str(),
379 dbusPersistentFilePath.c_str(), tlsCacertfile.c_str());
380 EXPECT_CALL(*managerPtr, restartService("nslcd.service")).Times(3);
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600381 EXPECT_CALL(*managerPtr, restartService("nscd.service")).Times(2);
Ratan Guptaaeaf9412019-02-11 04:41:52 -0600382 managerPtr->createConfig(
383 "ldap://9.194.251.138/", "cn=Users,dc=com", "cn=Users,dc=corp",
384 "MyLdap12", ldap_base::Create::SearchScope::sub,
385 ldap_base::Create::Type::ActiveDirectory, "attr1", "attr2");
386 managerPtr->getConfigPtr()->enabled(true);
Ratan Gupta95a29312019-02-18 20:34:10 +0530387
Nagaraju Gorugantid514e5d2018-11-08 03:07:25 -0600388 // Change LDAP type
389 managerPtr->getConfigPtr()->lDAPType(ldap_base::Config::Type::OpenLdap);
390 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPType(),
391 ldap_base::Config::Type::OpenLdap);
392 // Delete LDAP configuration
393 managerPtr->deleteObject();
394
395 managerPtr->restore(configFilePath.c_str());
396 // Check LDAP type after restoring
397 EXPECT_EQ(managerPtr->getConfigPtr()->lDAPType(),
398 ldap_base::Config::Type::OpenLdap);
399 delete managerPtr;
400}
401} // namespace ldap
402} // namespace phosphor