diff --git a/sdbusplus/bus.hpp.in b/sdbusplus/bus.hpp.in
index dc809ad..57df1bf 100644
--- a/sdbusplus/bus.hpp.in
+++ b/sdbusplus/bus.hpp.in
@@ -305,6 +305,28 @@
         sd_bus_emit_object_removed(_bus.get(), path);
     }
 
+    /** @brief Wrapper for sd_bus_list_names.
+     *
+     *  @return A vector of strings containing the 'acquired' names from
+     *          sd_bus_list_names.
+     */
+    auto list_names_acquired()
+    {
+        char** names = nullptr;
+
+        sd_bus_list_names(_bus.get(), &names, nullptr);
+
+        std::vector<std::string> result;
+        for(auto ptr = names; ptr && *ptr; ++ptr)
+        {
+            result.push_back(*ptr);
+            free(*ptr);
+        }
+        free(names);
+
+        return result;
+    }
+
     friend struct server::interface::interface;
     friend struct server::manager::manager;
     template<class... Args> friend struct server::object::object;
diff --git a/test/Makefile.am b/test/Makefile.am
index c80b2b5..bc1ede9 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -5,6 +5,10 @@
 
 TESTS = $(check_PROGRAMS)
 
+check_PROGRAMS += bus_list_names
+bus_list_names_SOURCES = bus/list_names.cpp
+bus_list_names_LDFLAGS = $(gtest_ldflags) $(SYSTEMD_LIBS)
+
 check_PROGRAMS += message_append
 message_append_CXXFLAGS = $(SYSTEMD_CFLAGS) $(PTHREAD_CFLAGS)
 message_append_LDFLAGS = $(SYSTEMD_LIBS) $(PTHREAD_LIBS)
diff --git a/test/bus/list_names.cpp b/test/bus/list_names.cpp
new file mode 100644
index 0000000..65333b7
--- /dev/null
+++ b/test/bus/list_names.cpp
@@ -0,0 +1,51 @@
+#include <gtest/gtest.h>
+#include <sdbusplus/bus.hpp>
+
+constexpr auto this_name = "xyz.openbmc_project.sdbusplus.test.ListNames";
+
+class ListNames : public ::testing::Test
+{
+    protected:
+        decltype(sdbusplus::bus::new_default()) bus =
+                sdbusplus::bus::new_default();
+};
+
+TEST_F(ListNames, NoServiceNameWithoutRequestName)
+{
+    auto names = bus.list_names_acquired();
+
+    EXPECT_EQ(names.cend(),
+              std::find(names.cbegin(), names.cend(), this_name));
+}
+
+TEST_F(ListNames, HasServiceNameAfterRequestName)
+{
+    bus.request_name(this_name);
+    auto names = bus.list_names_acquired();
+
+    auto i = std::find(names.cbegin(), names.cend(), this_name);
+
+    ASSERT_NE(names.cend(), i);
+    EXPECT_EQ(this_name, *i);
+}
+
+TEST_F(ListNames, HasUniqueName)
+{
+    auto names = bus.list_names_acquired();
+
+    ASSERT_FALSE(bus.get_unique_name().empty());
+    EXPECT_NE(names.cend(),
+              std::find(names.cbegin(), names.cend(), bus.get_unique_name()));
+}
+
+
+TEST_F(ListNames, HasDbusServer)
+{
+    auto names = bus.list_names_acquired();
+
+    auto dbus_server = "org.freedesktop.DBus";
+    auto i = std::find(names.cbegin(), names.cend(), dbus_server);
+
+    ASSERT_NE(names.cend(), i);
+    EXPECT_EQ(dbus_server, *i);
+}
