diff tests/service-plugin/main.cpp @ 486:0b156b82b8c1

Irccd: rework of paths, closes #611
author David Demelier <markand@malikania.fr>
date Thu, 20 Jul 2017 15:12:41 +0200
parents
children 7e273b7f4f92
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/service-plugin/main.cpp	Thu Jul 20 15:12:41 2017 +0200
@@ -0,0 +1,153 @@
+/*
+ * main.cpp -- test irccd rules
+ *
+ * Copyright (c) 2013-2017 David Demelier <markand@malikania.fr>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <gtest/gtest.h>
+
+#include <irccd/irccd.hpp>
+#include <irccd/service.hpp>
+
+namespace irccd {
+
+TEST(service_plugin, default_paths)
+{
+    Irccd irccd;
+
+    irccd.plugins().setPaths({
+        { "cache",  "/var/cache/irccd"          },
+        { "config", "/etc/irccd"                },
+        { "data",   "/usr/local/share/irccd"    }
+    });
+
+    auto paths = irccd.plugins().paths("ask");
+
+    ASSERT_EQ("/var/cache/irccd/plugin/ask", paths["cache"]);
+    ASSERT_EQ("/etc/irccd/plugin/ask", paths["config"]);
+    ASSERT_EQ("/usr/local/share/irccd/plugin/ask", paths["data"]);
+}
+
+TEST(service_plugin, override_cache)
+{
+    Irccd irccd;
+
+    irccd.plugins().setPaths({
+        { "cache",  "/var/cache/irccd"          },
+        { "config", "/etc/irccd"                },
+        { "data",   "/usr/local/share/irccd"    }
+    });
+    irccd.plugins().setPaths("ask", {
+        { "cache",  "/opt/cache/ask"            }
+    });
+
+    auto paths = irccd.plugins().paths("ask");
+
+    ASSERT_EQ("/opt/cache/ask", paths["cache"]);
+    ASSERT_EQ("/etc/irccd/plugin/ask", paths["config"]);
+    ASSERT_EQ("/usr/local/share/irccd/plugin/ask", paths["data"]);
+}
+
+TEST(service_plugin, override_config)
+{
+    Irccd irccd;
+
+    irccd.plugins().setPaths({
+        { "cache",  "/var/cache/irccd"          },
+        { "config", "/etc/irccd"                },
+        { "data",   "/usr/local/share/irccd"    }
+    });
+    irccd.plugins().setPaths("ask", {
+        { "config", "/opt/config/ask"           }
+    });
+
+    auto paths = irccd.plugins().paths("ask");
+
+    ASSERT_EQ("/var/cache/irccd/plugin/ask", paths["cache"]);
+    ASSERT_EQ("/opt/config/ask", paths["config"]);
+    ASSERT_EQ("/usr/local/share/irccd/plugin/ask", paths["data"]);
+}
+
+TEST(service_plugin, override_data)
+{
+    Irccd irccd;
+
+    irccd.plugins().setPaths({
+        { "cache",  "/var/cache/irccd"          },
+        { "config", "/etc/irccd"                },
+        { "data",   "/usr/local/share/irccd"    }
+    });
+    irccd.plugins().setPaths("ask", {
+        { "data",   "/opt/data/ask"             }
+    });
+
+    auto paths = irccd.plugins().paths("ask");
+
+    ASSERT_EQ("/var/cache/irccd/plugin/ask", paths["cache"]);
+    ASSERT_EQ("/etc/irccd/plugin/ask", paths["config"]);
+    ASSERT_EQ("/opt/data/ask", paths["data"]);
+}
+
+TEST(service_plugin, override_all)
+{
+    Irccd irccd;
+
+    irccd.plugins().setPaths({
+        { "cache",  "/var/cache/irccd"          },
+        { "config", "/etc/irccd"                },
+        { "data",   "/usr/local/share/irccd"    }
+    });
+    irccd.plugins().setPaths("ask", {
+        { "cache",  "/opt/cache/ask"            },
+        { "config", "/opt/config/ask"           },
+        { "data",   "/opt/data/ask"             }
+    });
+
+    auto paths = irccd.plugins().paths("ask");
+
+    ASSERT_EQ("/opt/cache/ask", paths["cache"]);
+    ASSERT_EQ("/opt/config/ask", paths["config"]);
+    ASSERT_EQ("/opt/data/ask", paths["data"]);
+}
+
+TEST(service_plugin, extra_paths)
+{
+    Irccd irccd;
+
+    irccd.plugins().setPaths({
+        { "cache",  "/var/cache/irccd"          },
+        { "config", "/etc/irccd"                },
+        { "data",   "/usr/local/share/irccd"    }
+    });
+    irccd.plugins().setPaths("ask", {
+        { "extra",  "/opt/magic"                }
+    });
+
+    auto paths = irccd.plugins().paths("ask");
+
+    ASSERT_EQ("/var/cache/irccd/plugin/ask", paths["cache"]);
+    ASSERT_EQ("/etc/irccd/plugin/ask", paths["config"]);
+    ASSERT_EQ("/usr/local/share/irccd/plugin/ask", paths["data"]);
+    ASSERT_EQ("/opt/magic", paths["extra"]);
+}
+
+} // !irccd
+
+int main(int argc, char **argv)
+{
+    testing::InitGoogleTest(&argc, argv);
+
+    return RUN_ALL_TESTS();
+}