From 0d526d6f20695b48d374b1966038ac5c4397e17c Mon Sep 17 00:00:00 2001
From: Eric Garver <eric@garver.life>
Date: Mon, 24 Jun 2019 10:20:23 -0400
Subject: [PATCH 15/20] test: dbus: service API coverage
(cherry picked from commit b0ecd9e3916a691fa7adefa258e7ab0df2e9e1ea)
---
src/tests/dbus.at | 1 +
src/tests/dbus/service.at | 290 ++++++++++++++++++++++++++++++++++++++
2 files changed, 291 insertions(+)
create mode 100644 src/tests/dbus/service.at
diff --git a/src/tests/dbus.at b/src/tests/dbus.at
index 4cb0568cbc9c..46fec2ff4024 100644
--- a/src/tests/dbus.at
+++ b/src/tests/dbus.at
@@ -1,2 +1,3 @@
AT_BANNER([dbus])
m4_include([dbus/firewalld.conf.at])
+m4_include([dbus/service.at])
diff --git a/src/tests/dbus/service.at b/src/tests/dbus/service.at
new file mode 100644
index 000000000000..579548d66509
--- /dev/null
+++ b/src/tests/dbus/service.at
@@ -0,0 +1,290 @@
+FWD_START_TEST([dbus api - services])
+AT_KEYWORDS(dbus service rhbz1721414)
+
+DBUS_INTROSPECT([config], [[//method[@name="addService"]]], 0, [dnl
+ <method name="addService">
+ <arg direction="in" name="service" type="s"/>
+ <arg direction="in" name="settings" type="(sssa(ss)asa{ss}asa(ss))"/>
+ <arg direction="out" type="o"/>
+ </method>
+])
+DBUS_CHECK([config], [config.addService],
+ ["foobar" dnl name
+ '("1.0", dnl version
+ "foobar", dnl short
+ "foobar service is for foobar", dnl description
+ @<:@("1234", "udp"), ("22", "tcp"), ("1234", "udp")@:>@, dnl ports, deliberate duplicate
+ @<:@"ftp"@:>@, dnl modules
+ {"ipv4": "1.2.3.4"}, dnl destination
+ @<:@"icmp", "igmp"@:>@, dnl protocols
+ @<:@("4321", "tcp"), ("4321", "udp")@:>@ dnl source ports
+ )'dnl
+ ], 0, [stdout])
+SERVICE_OBJ=[$(sed -e "s/.*config\/service\/\([^']\+\)['].*/\1/" ./stdout)]
+export SERVICE_OBJ
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getSettings"]]], 0, [dnl
+ <method name="getSettings">
+ <arg direction="out" type="(sssa(ss)asa{ss}asa(ss))"/>
+ </method>
+])
+DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.getSettings], [], 0, [dnl
+ [(('1.0', 'foobar', 'foobar service is for foobar', [('1234', 'udp'), ('22', 'tcp')], ['ftp'], {'ipv4': '1.2.3.4'}, ['icmp', 'igmp'], [('4321', 'tcp'), ('4321', 'udp')]),)]
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="update"]]], 0, [dnl
+ <method name="update">
+ <arg direction="in" name="settings" type="(sssa(ss)asa{ss}asa(ss))"/>
+ </method>
+])
+DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.update],
+ ['("1.1", dnl version
+ "foobar new", dnl short
+ "foobar new service is for foobar", dnl description
+ @<:@("12345", "udp"), ("2222", "tcp")@:>@, dnl ports
+ @<:@"ftp"@:>@, dnl modules
+ {}, dnl destination
+ @<:@"icmp"@:>@, dnl protocols
+ @<:@("4321", "tcp")@:>@ dnl source ports
+ )'dnl
+ ], 0, [ignore])
+
+DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.getSettings], [], 0, [dnl
+ [(('1.1', 'foobar new', 'foobar new service is for foobar', [('12345', 'udp'), ('2222', 'tcp')], ['ftp'], @a{ss} {}, ['icmp'], [('4321', 'tcp')]),)]
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="loadDefaults"]]], 0, [dnl
+ <method name="loadDefaults">
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="remove"]]], 0, [dnl
+ <method name="remove">
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="rename"]]], 0, [dnl
+ <method name="rename">
+ <arg direction="in" name="name" type="s"/>
+ </method>
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getVersion"]]], 0, [dnl
+ <method name="getVersion">
+ <arg direction="out" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="setVersion"]]], 0, [dnl
+ <method name="setVersion">
+ <arg direction="in" name="version" type="s"/>
+ </method>
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getShort"]]], 0, [dnl
+ <method name="getShort">
+ <arg direction="out" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="setShort"]]], 0, [dnl
+ <method name="setShort">
+ <arg direction="in" name="short" type="s"/>
+ </method>
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getDescription"]]], 0, [dnl
+ <method name="getDescription">
+ <arg direction="out" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="setDescription"]]], 0, [dnl
+ <method name="setDescription">
+ <arg direction="in" name="description" type="s"/>
+ </method>
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getPorts"]]], 0, [dnl
+ <method name="getPorts">
+ <arg direction="out" type="a(ss)"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="setPorts"]]], 0, [dnl
+ <method name="setPorts">
+ <arg direction="in" name="ports" type="a(ss)"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="addPort"]]], 0, [dnl
+ <method name="addPort">
+ <arg direction="in" name="port" type="s"/>
+ <arg direction="in" name="protocol" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="removePort"]]], 0, [dnl
+ <method name="removePort">
+ <arg direction="in" name="port" type="s"/>
+ <arg direction="in" name="protocol" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="queryPort"]]], 0, [dnl
+ <method name="queryPort">
+ <arg direction="in" name="port" type="s"/>
+ <arg direction="in" name="protocol" type="s"/>
+ <arg direction="out" type="b"/>
+ </method>
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getSourcePorts"]]], 0, [dnl
+ <method name="getSourcePorts">
+ <arg direction="out" type="a(ss)"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="setSourcePorts"]]], 0, [dnl
+ <method name="setSourcePorts">
+ <arg direction="in" name="ports" type="a(ss)"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="addSourcePort"]]], 0, [dnl
+ <method name="addSourcePort">
+ <arg direction="in" name="port" type="s"/>
+ <arg direction="in" name="protocol" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="removeSourcePort"]]], 0, [dnl
+ <method name="removeSourcePort">
+ <arg direction="in" name="port" type="s"/>
+ <arg direction="in" name="protocol" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="querySourcePort"]]], 0, [dnl
+ <method name="querySourcePort">
+ <arg direction="in" name="port" type="s"/>
+ <arg direction="in" name="protocol" type="s"/>
+ <arg direction="out" type="b"/>
+ </method>
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getProtocols"]]], 0, [dnl
+ <method name="getProtocols">
+ <arg direction="out" type="as"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="setProtocols"]]], 0, [dnl
+ <method name="setProtocols">
+ <arg direction="in" name="protocols" type="as"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="addProtocol"]]], 0, [dnl
+ <method name="addProtocol">
+ <arg direction="in" name="protocol" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="removeProtocol"]]], 0, [dnl
+ <method name="removeProtocol">
+ <arg direction="in" name="protocol" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="queryProtocol"]]], 0, [dnl
+ <method name="queryProtocol">
+ <arg direction="in" name="protocol" type="s"/>
+ <arg direction="out" type="b"/>
+ </method>
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getModules"]]], 0, [dnl
+ <method name="getModules">
+ <arg direction="out" type="as"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="setModules"]]], 0, [dnl
+ <method name="setModules">
+ <arg direction="in" name="modules" type="as"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="addModule"]]], 0, [dnl
+ <method name="addModule">
+ <arg direction="in" name="module" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="removeModule"]]], 0, [dnl
+ <method name="removeModule">
+ <arg direction="in" name="module" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="queryModule"]]], 0, [dnl
+ <method name="queryModule">
+ <arg direction="in" name="module" type="s"/>
+ <arg direction="out" type="b"/>
+ </method>
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getDestinations"]]], 0, [dnl
+ <method name="getDestinations">
+ <arg direction="out" type="a{ss}"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="setDestinations"]]], 0, [dnl
+ <method name="setDestinations">
+ <arg direction="in" name="destinations" type="a{ss}"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="setDestination"]]], 0, [dnl
+ <method name="setDestination">
+ <arg direction="in" name="family" type="s"/>
+ <arg direction="in" name="address" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getDestination"]]], 0, [dnl
+ <method name="getDestination">
+ <arg direction="in" name="family" type="s"/>
+ <arg direction="out" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="removeDestination"]]], 0, [dnl
+ <method name="removeDestination">
+ <arg direction="in" name="family" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="queryDestination"]]], 0, [dnl
+ <method name="queryDestination">
+ <arg direction="in" name="family" type="s"/>
+ <arg direction="in" name="address" type="s"/>
+ <arg direction="out" type="b"/>
+ </method>
+])
+
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getIncludes"]]], 0, [dnl
+ <method name="getIncludes">
+ <arg direction="out" type="as"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="setIncludes"]]], 0, [dnl
+ <method name="setIncludes">
+ <arg direction="in" name="includes" type="as"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="addInclude"]]], 0, [dnl
+ <method name="addInclude">
+ <arg direction="in" name="include" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="removeInclude"]]], 0, [dnl
+ <method name="removeInclude">
+ <arg direction="in" name="include" type="s"/>
+ </method>
+])
+DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="queryInclude"]]], 0, [dnl
+ <method name="queryInclude">
+ <arg direction="in" name="include" type="s"/>
+ <arg direction="out" type="b"/>
+ </method>
+])
+
+FWD_RELOAD
+DBUS_INTROSPECT([], [[//method[@name="getServiceSettings"]]], 0, [dnl
+ <method name="getServiceSettings">
+ <arg direction="in" name="service" type="s"/>
+ <arg direction="out" type="(sssa(ss)asa{ss}asa(ss))"/>
+ </method>
+])
+DBUS_CHECK([], [getServiceSettings], ["foobar"], 0, [dnl
+ [(('1.1', 'foobar new', 'foobar new service is for foobar', [('12345', 'udp'), ('2222', 'tcp')], ['ftp'], @a{ss} {}, ['icmp'], [('4321', 'tcp')]),)]
+])
+
+FWD_END_TEST
--
2.20.1