diff --git a/tests/core/privilege-helper.cpp b/tests/core/privilege-helper.cpp
new file mode 100644
index 0000000..bd5f989
--- /dev/null
+++ b/tests/core/privilege-helper.cpp
@@ -0,0 +1,67 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2014-2015,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
+ *
+ * This file is part of NFD (Named Data Networking Forwarding Daemon).
+ * See AUTHORS.md for complete list of NFD authors and contributors.
+ *
+ * NFD is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "core/privilege-helper.hpp"
+
+#ifdef HAVE_PRIVILEGE_DROP_AND_ELEVATE
+
+#include "tests/test-common.hpp"
+
+namespace nfd {
+namespace tests {
+
+BOOST_FIXTURE_TEST_SUITE(CorePrivilegeHelper, BaseFixture)
+
+BOOST_AUTO_TEST_CASE(DropRaise)
+{
+  if (::geteuid() != 0) {
+    BOOST_TEST_MESSAGE("This test case needs to be run as super user, skipping");
+    return;
+  }
+
+  // The following assumes that nobody/nogroup is present on the test system
+  BOOST_CHECK_NO_THROW(PrivilegeHelper::initialize("nobody", "nogroup"));
+  BOOST_CHECK_EQUAL(::geteuid(), 0);
+
+  BOOST_CHECK_NO_THROW(PrivilegeHelper::drop());
+  BOOST_CHECK_NE(::geteuid(), 0);
+
+  // separate runElevated case to improve log reporting (otherwise output is unreadable)
+  BOOST_CHECK_NO_THROW(PrivilegeHelper::runElevated([]{}));
+  PrivilegeHelper::runElevated([] {
+      BOOST_CHECK_EQUAL(::geteuid(), 0);
+    });
+  BOOST_CHECK_NE(::geteuid(), 0);
+
+  BOOST_CHECK_NO_THROW(PrivilegeHelper::raise());
+  BOOST_CHECK_EQUAL(::geteuid(), 0);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+} // namespace tests
+} // namespace nfd
+
+#endif // HAVE_PRIVILEGE_DROP_AND_ELEVATE
