--- /dev/null
+#
+# Test the "detail" module
+#
--- /dev/null
+#
+# Input packet
+#
+Packet-Type = Access-Request
+User-Name = "bob"
+User-Password = "hello"
+Calling-Station-Id = "with-nön-ascii!"
+
+#
+# Expected answer
+#
+Packet-Type == Access-Accept
--- /dev/null
+%file.rm("$ENV{MODULE_TEST_DIR}/127-2e0-2e0-2e1-with--n-c3-b6n--ascii-21")
+
+&request -= &Module-Failure-Message[*]
+
+detail_escape
+
+if !%file.exists("$ENV{MODULE_TEST_DIR}/127-2e0-2e0-2e1-with--n-c3-b6n--ascii-21") {
+ test_fail
+}
+
+%file.rm("$ENV{MODULE_TEST_DIR}/127-2e0-2e0-2e1-with--n-c3-b6n--ascii-21")
+
+test_pass
--- /dev/null
+detail {
+ filename = "$ENV{MODULE_TEST_DIR}/%{Net.Src.IP}-detail"
+ header = "%t"
+
+ suppress {
+
+ }
+}
+
+#
+# Instance of detail with suppressed attributes
+#
+detail detail_suppress {
+ filename = "$ENV{MODULE_TEST_DIR}/%{Net.Src.IP}-suppress"
+ header = "%t"
+ suppress {
+ Calling-Station-Id
+ Called-Station-Id
+ Calling-Station-Id # repeated deliberately - will produce warning in debug
+ NAS-Identifier
+ }
+}
+
+#
+# Instance of detail where attributes are escaped in the file name
+#
+detail detail_escape {
+ filename = "$ENV{MODULE_TEST_DIR}/%{Net.Src.IP}-%{Calling-Station-Id}"
+ escape_filenames = yes
+}
+
+exec {
+}
--- /dev/null
+#
+# Input packet
+#
+Packet-Type = Access-Request
+User-Name = "bob"
+User-Password = "hello"
+Calling-Station-Id = aa-bb-cc-dd-ee-ff
+
+#
+# Expected answer
+#
+Packet-Type == Access-Accept
--- /dev/null
+%file.rm("$ENV{MODULE_TEST_DIR}/127.0.0.1-detail")
+
+&request -= &Module-Failure-Message[*]
+
+detail
+
+if !%file.exists("$ENV{MODULE_TEST_DIR}/127.0.0.1-detail") {
+ test_fail
+}
+
+if !%exec('/bin/sh', '-c', "grep -E Calling-Station-Id $ENV{MODULE_TEST_DIR}/127.0.0.1-detail") {
+ test_fail
+}
+
+%file.rm("$ENV{MODULE_TEST_DIR}/127.0.0.1-detail")
+
+test_pass
--- /dev/null
+#
+# Input packet
+#
+Packet-Type = Access-Request
+User-Name = "bob"
+User-Password = "hello"
+Calling-Station-Id = aa-bb-cc-dd-ee-ff
+
+#
+# Expected answer
+#
+Packet-Type == Access-Accept
--- /dev/null
+%file.rm("$ENV{MODULE_TEST_DIR}/127.0.0.1-suppress")
+
+&request -= &Module-Failure-Message[*]
+
+detail_suppress
+
+if !%file.exists("$ENV{MODULE_TEST_DIR}/127.0.0.1-suppress") {
+ test_fail
+}
+
+#
+# Calling-Station-Id should not be in the output
+#
+if %exec('/bin/sh', '-c', "grep -E Calling-Station-Id $ENV{MODULE_TEST_DIR}/127.0.0.1-suppress") {
+ test_fail
+}
+
+%file.rm("$ENV{MODULE_TEST_DIR}/127.0.0.1-suppress")
+
+test_pass