OUTPUT: <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='test-d' version='1.0'>
INPUT: <stream:stream id="60f90c8f-7222-468d-99da-10ea457d309e" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" from="test-d" xml:lang="en" version="1.0"/>
INPUT: <stream:features><auth xmlns="http://jabber.org/features/iq-auth"/><register xmlns="http://jabber.org/features/iq-register"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>CRAM-MD5</mechanism><mechanism>ANONYMOUS</mechanism></mechanisms><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></stream:features>
OUTPUT: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5'/>
INPUT: <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">cmVhbG09InRlc3QtZCIsbm9uY2U9IjVZbSt3V1dYNUlYWVBWYkkvS0prVkx4UnpYQThSY0JvVTF4eThRQlAiLHFvcD0iYXV0aCIsY2hhcnNldD11dGYtOCxhbGdvcml0aG09bWQ1LXNlc3M=</challenge>
OUTPUT: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>Y2hhcnNldD11dGYtOCx1c2VybmFtZT0iYWRtaW4iLHJlYWxtPSJ0ZXN0LWQiLG5vbmNlPSI1WW0rd1dXWDVJWFlQVmJJL0tKa1ZMeFJ6WEE4UmNCb1UxeHk4UUJQIixuYz0wMDAwMDAwMSxjbm9uY2U9InRDMkhzOHBsYjNPUmE4OURWd0dVdENrWUNUY3Nzcmg3UElIQUNGYlkiLGRpZ2VzdC11cmk9InhtcHAvdGVzdC1kIixtYXhidWY9NjU1MzYscmVzcG9uc2U9NWY0MzBhOGExNjc5ODg0YTRmYWFiZGIwMDFjZTU2NGIscW9wPWF1dGgsYXV0aHppZD0iYWRtaW4i</response>
INPUT: <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl">cnNwYXV0aD0xMjkyNmUyOGQ1MTkyZDBiMzdkMzgzYmIwNWJkODdjZg==</success>
OUTPUT: <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='test-d' version='1.0'>
INPUT: <stream:stream id="60f90c8f-7222-468d-99da-10ea457d309e" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" from="test-d" xml:lang="en" version="1.0"/>
INPUT: <stream:features><register xmlns="http://jabber.org/features/iq-register"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></stream:features>
OUTPUT: <iq type='set' id='bind1'><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><resource>def-user-resource</resource></bind></iq>
INPUT: <iq id="bind1" to="admin@test-d/def-user-resource" type="result"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>admin@test-d/def-user-resource</jid></bind></iq>
OUTPUT: <iq id="roster_3333" type="get"><query xmlns="jabber:iq:roster"/></iq>
INPUT: <iq id="roster_3333" to="admin@test-d/def-user-resource" type="result"><query xmlns="jabber:iq:roster"><item name="all-xmpp-test" subscription="both" jid="all-xmpp-test@test-d"/></query></iq>
OUTPUT: <iq id="roster-remove-1234" type="set"><query xmlns="jabber:iq:roster"><item subscription="remove" jid="all-xmpp-test@test-d"/></query></iq>
INPUT: <iq id="rsttig1" to="admin@test-d/def-user-resource" type="set"><query xmlns="jabber:iq:roster"><item subscription="remove" jid="all-xmpp-test@test-d"/></query></iq>
INPUT: <iq id="roster-remove-1234" to="admin@test-d/def-user-resource" type="result"/>
INPUT: <iq id="rsttig1" to="admin@test-d/def-user-resource" type="set"><query xmlns="jabber:iq:roster"><item subscription="remove" jid="all-xmpp-test@test-d"/></query></iq>
INPUT: <iq id="rsttig1" to="admin@test-d/def-user-resource" type="set"><query xmlns="jabber:iq:roster"><item subscription="remove" jid="all-xmpp-test@test-d"/></query></iq>
OUTPUT: <iq id="roster_7777" type="get"><query xmlns="jabber:iq:roster"/></iq>
INPUT: <iq id="roster_7777" to="admin@test-d/def-user-resource" type="result"><query xmlns="jabber:iq:roster"/></iq>
OUTPUT: <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='test-d' version='1.0'>
INPUT: <stream:stream id="e1583967-0e4f-4e9f-8213-d2b632ffc5bf" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" from="test-d" xml:lang="en" version="1.0"/>
INPUT: <stream:features><auth xmlns="http://jabber.org/features/iq-auth"/><register xmlns="http://jabber.org/features/iq-register"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>CRAM-MD5</mechanism><mechanism>ANONYMOUS</mechanism></mechanisms><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></stream:features>
OUTPUT: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5'/>
INPUT: <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">cmVhbG09InRlc3QtZCIsbm9uY2U9IkhybTJoQ2g1YWJza2Z5aFFoc3dOL0RFQUJWVEpVd2ZCK05XVXV5STgiLHFvcD0iYXV0aCIsY2hhcnNldD11dGYtOCxhbGdvcml0aG09bWQ1LXNlc3M=</challenge>
OUTPUT: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>Y2hhcnNldD11dGYtOCx1c2VybmFtZT0iYWxsLXhtcHAtdGVzdCIscmVhbG09InRlc3QtZCIsbm9uY2U9IkhybTJoQ2g1YWJza2Z5aFFoc3dOL0RFQUJWVEpVd2ZCK05XVXV5STgiLG5jPTAwMDAwMDAxLGNub25jZT0icnBDR3FwT3lRRkZiT2o2a2toZHBaNFE1NmorWkh3SXQ4M0FQZWEwZCIsZGlnZXN0LXVyaT0ieG1wcC90ZXN0LWQiLG1heGJ1Zj02NTUzNixyZXNwb25zZT0xZmNmNTRlYTM0YjdhYjQyMDhhZGEyNWZkOGY5ZTg5MCxxb3A9YXV0aCxhdXRoemlkPSJhbGwteG1wcC10ZXN0Ig==</response>
INPUT: <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl">cnNwYXV0aD0xYTAzOGJjZDQ3NmQ5YzYwMjQ4ODJmYWNhNzNiNWNmMQ==</success>
OUTPUT: <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='test-d' version='1.0'>
INPUT: <stream:stream id="e1583967-0e4f-4e9f-8213-d2b632ffc5bf" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" from="test-d" xml:lang="en" version="1.0"/>
INPUT: <stream:features><register xmlns="http://jabber.org/features/iq-register"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></stream:features>
OUTPUT: <iq type='set' id='bind1'><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><resource>def-user-resource</resource></bind></iq>
INPUT: <iq id="bind1" to="all-xmpp-test@test-d/def-user-resource" type="result"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>all-xmpp-test@test-d/def-user-resource</jid></bind></iq>
OUTPUT: <iq id="roster_444" type="get"><query xmlns="jabber:iq:roster"/></iq>
INPUT: <iq id="roster_444" to="all-xmpp-test@test-d/def-user-resource" type="result"><query xmlns="jabber:iq:roster"><item name="admin" subscription="both" jid="admin@test-d"/></query></iq>
INPUT: <iq id="rsttig1" to="all-xmpp-test@test-d/def-user-resource" type="set"><query xmlns="jabber:iq:roster"><item name="admin" subscription="to" jid="admin@test-d"/></query></iq>
INPUT: <iq id="rsttig2" to="all-xmpp-test@test-d/def-user-resource" type="set"><query xmlns="jabber:iq:roster"><item name="admin" subscription="none" jid="admin@test-d"/></query></iq>
INPUT: <presence from="admin@test-d/def-user-resource" to="all-xmpp-test@test-d" type="unavailable"/>
OUTPUT: <iq id="roster-remove-3210" type="set"><query xmlns="jabber:iq:roster"><item subscription="remove" jid="admin@test-d"/></query></iq>
INPUT: <iq id="rsttig3" to="all-xmpp-test@test-d/def-user-resource" type="set"><query xmlns="jabber:iq:roster"><item subscription="remove" jid="admin@test-d"/></query></iq>
INPUT: <iq id="rsttig3" to="all-xmpp-test@test-d/def-user-resource" type="set"><query xmlns="jabber:iq:roster"><item subscription="remove" jid="admin@test-d"/></query></iq>
INPUT: <iq id="roster-remove-3210" to="all-xmpp-test@test-d/def-user-resource" type="result"/>
OUTPUT: <iq id="roster_888" type="get"><query xmlns="jabber:iq:roster"/></iq>
INPUT: <iq id="roster_888" to="all-xmpp-test@test-d/def-user-resource" type="result"><query xmlns="jabber:iq:roster"/></iq>
