Thu, 23 Mar 2023 15:12:30 +0000
Serialize XML in a consistent order by default
This overrides all XML serialization to emit attributes in an ordered form, so
the XML will match across multiple runs. This can be useful for comparing
different runs, or even two stanzas printed in the same run (e.g. if there is
a mismatch).
36 | 1 | [Client] Romeo |
2 | jid: admin@localhost | |
3 | password: password | |
4 | ||
5 | // admin@localhost is assumed to have node creation privileges | |
6 | ||
7 | [Client] Juliet | |
8 | jid: juliet@localhost | |
9 | password: password | |
10 | ||
11 | --------- | |
12 | ||
13 | Romeo connects | |
14 | ||
15 | Romeo sends: | |
16 | <iq type="set" to="pubsub.localhost"> | |
17 | <pubsub xmlns="http://jabber.org/protocol/pubsub"> | |
18 | <create node="princely_musings"/> | |
19 | </pubsub> | |
20 | </iq> | |
21 | ||
22 | Romeo receives: | |
23 | <iq type="result"/> | |
24 | ||
25 | Juliet connects | |
26 | ||
27 | -- Juliet sends: | |
28 | -- <iq type="set" to="pubsub.localhost"> | |
29 | -- <pubsub xmlns="http://jabber.org/protocol/pubsub"> | |
30 | -- <subscribe node="princely_musings" jid="${Romeo's full JID}"/> | |
31 | -- </pubsub> | |
32 | -- </iq> | |
33 | -- | |
34 | -- Juliet receives: | |
35 | -- <iq type="error"/> | |
36 | ||
37 | Juliet sends: | |
38 | <iq type="set" to="pubsub.localhost"> | |
39 | <pubsub xmlns="http://jabber.org/protocol/pubsub"> | |
40 | <subscribe node="princely_musings" jid="${Juliet's full JID}"/> | |
41 | </pubsub> | |
42 | </iq> | |
43 | ||
44 | Juliet receives: | |
45 | <iq type="result"/> | |
46 | ||
47 | Romeo sends: | |
48 | <iq type="set" to="pubsub.localhost"> | |
49 | <pubsub xmlns="http://jabber.org/protocol/pubsub"> | |
50 | <publish node="princely_musings"> | |
51 | <item id="current"> | |
52 | <entry xmlns="http://www.w3.org/2005/Atom"> | |
53 | <title>Soliloquy</title> | |
54 | <summary>Lorem ipsum dolor sit amet</summary> | |
55 | </entry> | |
56 | </item> | |
57 | </publish> | |
58 | </pubsub> | |
59 | </iq> | |
60 | ||
61 | Romeo receives: | |
62 | <iq type="result"/> | |
63 | ||
64 | Juliet receives: | |
65 | <message type="headline" from="pubsub.localhost"> | |
66 | <event xmlns="http://jabber.org/protocol/pubsub#event"> | |
67 | <items node="princely_musings"> | |
68 | <item id="current"> | |
69 | <entry xmlns="http://www.w3.org/2005/Atom"> | |
70 | <title>Soliloquy</title> | |
71 | <summary>Lorem ipsum dolor sit amet</summary> | |
72 | </entry> | |
73 | </item> | |
74 | </items> | |
75 | </event> | |
76 | </message> | |
77 | ||
78 | Juliet sends: | |
79 | <iq type="set" to="pubsub.localhost"> | |
80 | <pubsub xmlns="http://jabber.org/protocol/pubsub"> | |
81 | <unsubscribe node="princely_musings" jid="${Juliet's full JID}"/> | |
82 | </pubsub> | |
83 | </iq> | |
84 | ||
85 | Juliet receives: | |
86 | <iq type="result"/> | |
87 | ||
88 | Juliet disconnects | |
89 | ||
90 | Romeo sends: | |
91 | <iq type="set" to="pubsub.localhost"> | |
92 | <pubsub xmlns="http://jabber.org/protocol/pubsub#owner"> | |
93 | <delete node="princely_musings"/> | |
94 | </pubsub> | |
95 | </iq> | |
96 | ||
97 | Romeo receives: | |
98 | <iq type="result"/> | |
99 | ||
100 | Romeo disconnects | |
101 | ||
102 | // vim: syntax=xml: |