diff --git a/test/meson.build b/test/meson.build
index 61eb737..0deeed8 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -106,3 +106,18 @@
         ],
     ),
 )
+
+test(
+    'test-server-message-variant',
+    executable(
+        'test-server-message-variant',
+        'server/message_variant.cpp',
+        server_files,
+        include_directories: include_directories('server'),
+        dependencies: [
+            gmock_dep,
+            gtest_dep,
+            sdbusplus_dep,
+        ],
+    ),
+)
diff --git a/test/server/Test.interface.yaml b/test/server/Test.interface.yaml
index ed98eb3..18c3450 100644
--- a/test/server/Test.interface.yaml
+++ b/test/server/Test.interface.yaml
@@ -34,3 +34,16 @@
     - name: DoubleAsEpsilon
       type: double
       default: Epsilon
+
+    - name: VariantOfEnums
+      type: variant[enum[self.EnumOne], string, enum[self.EnumTwo]]
+
+enumerations:
+    - name: EnumOne
+      values:
+        - name: OneA
+        - name: OneB
+    - name: EnumTwo
+      values:
+        - name: TwoA
+        - name: TwoB
diff --git a/test/server/message_variant.cpp b/test/server/message_variant.cpp
new file mode 100644
index 0000000..4c3ea0e
--- /dev/null
+++ b/test/server/message_variant.cpp
@@ -0,0 +1,81 @@
+#include "Test/server.hpp"
+
+#include <sdbusplus/bus.hpp>
+
+#include <gtest/gtest.h>
+
+using TestIf = sdbusplus::server::server::Test;
+
+struct Object : public ::testing::Test
+{
+    sdbusplus::bus::bus bus = sdbusplus::bus::new_default();
+    sdbusplus::message::message msg = bus.new_method_call(
+        "xyz.openbmc_project.sdbusplus.test.Object",
+        "/xyz/openbmc_project/sdbusplus/test/object",
+        "xyz.openbmc_project.sdbusplus.test.Object", "Unused");
+
+    using variant_t =
+        std::variant<TestIf::EnumOne, std::string, TestIf::EnumTwo>;
+
+    template <typename V, typename T>
+    void run_test(const T& value)
+    {
+        const V data = value;
+        msg.append(data);
+        ASSERT_EQ(0, sd_bus_message_seal(msg.get(), 0, 0));
+
+        V new_data = {};
+        msg.read(new_data);
+
+        EXPECT_EQ(data, new_data);
+    }
+
+    template <typename V1, typename V2, typename T>
+    void run_test_throw_bad_enum(const T& value)
+    {
+        const V1 data = value;
+        msg.append(data);
+        ASSERT_EQ(0, sd_bus_message_seal(msg.get(), 0, 0));
+
+        V2 new_data = {};
+        EXPECT_THROW(msg.read(new_data),
+                     sdbusplus::exception::InvalidEnumString);
+    }
+};
+
+TEST_F(Object, PlainEnumOne)
+{
+    run_test<TestIf::EnumOne>(TestIf::EnumOne::OneA);
+}
+
+TEST_F(Object, PlainEnumTwo)
+{
+    run_test<TestIf::EnumTwo>(TestIf::EnumTwo::TwoB);
+}
+
+TEST_F(Object, EnumOneAsEnumTwoThrows)
+{
+    run_test_throw_bad_enum<TestIf::EnumOne, TestIf::EnumTwo>(
+        TestIf::EnumOne::OneA);
+}
+
+TEST_F(Object, EnumTwoAsEnumOneThrows)
+{
+    run_test_throw_bad_enum<TestIf::EnumTwo, TestIf::EnumOne>(
+        TestIf::EnumTwo::TwoB);
+}
+
+TEST_F(Object, DISABLED_VariantAsString)
+{
+    run_test<variant_t>(std::string("Hello"));
+}
+
+TEST_F(Object, VariantAsEnumOne)
+{
+    run_test<variant_t>(TestIf::EnumOne::OneA);
+}
+
+TEST_F(Object, DISABLED_VariantAsEnumTwo)
+{
+    run_test<variant_t>(TestIf::EnumTwo::TwoB);
+}
