diff --git a/certs_manager.hpp b/certs_manager.hpp
index 7d42d01..8601c64 100644
--- a/certs_manager.hpp
+++ b/certs_manager.hpp
@@ -88,7 +88,7 @@
      *  Reload if the unit supports it and use a restart otherwise.
      *  @param[in] unit - service need to reload.
      */
-    void reloadOrReset(const std::string& unit);
+    virtual void reloadOrReset(const std::string& unit);
 
     /** @brief helper function to copy the file.
      *  @param[in] src - Source file path to copy
diff --git a/test/certs_manager_test.cpp b/test/certs_manager_test.cpp
index ee03229..f1a7587 100644
--- a/test/certs_manager_test.cpp
+++ b/test/certs_manager_test.cpp
@@ -96,6 +96,10 @@
     {
         manager->install(path);
     }
+    void delete_()
+    {
+        manager->delete_();
+    }
     phosphor::certs::Manager* manager;
 };
 
@@ -276,6 +280,45 @@
     EXPECT_FALSE(fs::exists(verifyPath));
 }
 
+/** @brief Test deletion of installed certificate file
+ */
+class MockReloadReset : public phosphor::certs::Manager
+{
+  public:
+    MockReloadReset(sdbusplus::bus::bus& bus, const char* path,
+                    std::string& type, std::string&& unit,
+                    std::string&& certPath) :
+        Manager(bus, path, type, std::forward<std::string>(unit),
+                std::forward<std::string>(certPath))
+    {
+    }
+    virtual ~MockReloadReset()
+    {
+    }
+
+    MOCK_METHOD1(reloadOrReset, void(const std::string& unit));
+};
+TEST_F(TestCertsManager, TestDeleteCertificate)
+{
+    std::string endpoint("ldap");
+    std::string unit("nslcd.service");
+    std::string type("client");
+    std::string path(certDir + "/" + certificateFile);
+    std::string verifyPath(path);
+    std::string verifyUnit(unit);
+    auto objPath = std::string(OBJPATH) + '/' + type + '/' + endpoint;
+    MockReloadReset manager(bus, objPath.c_str(), type, std::move(unit),
+                            std::move(path));
+    EXPECT_CALL(manager, reloadOrReset(verifyUnit)).Times(2);
+    MainApp mainApp(&manager);
+    EXPECT_NO_THROW({ mainApp.install(certificateFile); });
+    EXPECT_TRUE(fs::exists(verifyPath));
+
+    // delete certificate file and verify file is deleted
+    mainApp.delete_();
+    EXPECT_FALSE(fs::exists(verifyPath));
+}
+
 /**
  * Class to generate private and certificate only file and test verification
  */
@@ -380,4 +423,4 @@
         },
         InvalidCertificate);
     EXPECT_FALSE(fs::exists(verifyPath));
-}
\ No newline at end of file
+}
