<test-history test='Dynamic Roster 1 (c2s)'>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='test-d' version='1.0'/>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="test-d" id="cd1a9b15-6107-48ba-8057-9eb729d47d97" xml:lang="en" version="1.0"/>
</INPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<stream:features><auth xmlns="http://jabber.org/features/iq-auth"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>SCRAM-SHA-256</mechanism><mechanism>SCRAM-SHA-1</mechanism><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism></mechanisms><register xmlns="http://jabber.org/features/iq-register"/><ver xmlns="urn:xmpp:features:rosterver"/><sub xmlns="urn:xmpp:features:pre-approval"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression></stream:features>
</INPUT>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>AGFsbC14bXBwLXRlc3QAYWxsLXhtcHAtdGVzdC1wYXNzd29yZA==</auth>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
</INPUT>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='test-d' version='1.0'>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="test-d" id="cd1a9b15-6107-48ba-8057-9eb729d47d97" xml:lang="en" version="1.0"/>
</INPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<stream:features><register xmlns="http://jabber.org/features/iq-register"/><csi xmlns="urn:xmpp:csi:0"/><ver xmlns="urn:xmpp:features:rosterver"/><sub xmlns="urn:xmpp:features:pre-approval"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"><optional/></session></stream:features>
</INPUT>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<iq type='set' id='bind1'><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><resource>def-user-resource</resource></bind></iq>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<iq to="all-xmpp-test@test-d/def-user-resource" xmlns="jabber:client" id="bind1" type="result"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>all-xmpp-test@test-d/def-user-resource</jid></bind></iq>
</INPUT>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<iq id="roster_dynamic_1" type="get">
<query xmlns="jabber:iq:roster-dynamic"/>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<iq to="all-xmpp-test@test-d/def-user-resource" xmlns="jabber:client" id="roster_dynamic_1" type="error"><query xmlns="jabber:iq:roster-dynamic"/><error code="400" type="modify"><bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" xml:lang="en">Missing 'item' element, request can not be processed.</text></error></iq>
</INPUT>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<iq id="roster_dynamic_2" type="get">
<query xmlns="jabber:iq:roster-dynamic">
<item jid="copernicus@eureka.com"/>
</query>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<iq to="all-xmpp-test@test-d/def-user-resource" xmlns="jabber:client" id="roster_dynamic_2" type="result"><query xmlns="jabber:iq:roster-dynamic"><item jid="copernicus@eureka.com"/></query></iq>
</INPUT>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<iq id="roster_dynamic_3" type="set">
<query xmlns="jabber:iq:roster-dynamic">
<item jid="copernicus@eureka.com">
<note>This a note about Copernicus</note>
<phone>+12 3456 789012</phone>
</item>
</query>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<iq to="all-xmpp-test@test-d/def-user-resource" xmlns="jabber:client" id="roster_dynamic_3" type="result"/>
</INPUT>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<iq id="roster_dynamic_4" type="get">
<query xmlns="jabber:iq:roster-dynamic">
<item jid="copernicus@eureka.com"/>
</query>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<iq to="all-xmpp-test@test-d/def-user-resource" xmlns="jabber:client" id="roster_dynamic_4" type="result"><query xmlns="jabber:iq:roster-dynamic"><item jid="copernicus@eureka.com">
<note>This a note about Copernicus</note><phone>+12 3456 789012</phone></item></query></iq>
</INPUT>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<iq id="roster_dynamic_5" type="set">
<query xmlns="jabber:iq:roster-dynamic">
<item jid="copernicus@eureka.com">
<note>This a note about Copernicus</note>
<phone>+12 3456 789012</phone>
</item>
<item jid="newton@eureka.com">
<note>Newton is heavy!</note>
<phone>+12 3456 777777</phone>
</item>
<item jid="pascal@eureka.com">
<note>Pascal is great!</note>
<phone>+12 3456 888888</phone>
</item>
</query>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<iq to="all-xmpp-test@test-d/def-user-resource" xmlns="jabber:client" id="roster_dynamic_5" type="result"/>
</INPUT>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<iq id="roster_dynamic_6" type="get">
<query xmlns="jabber:iq:roster-dynamic">
<item jid="newton@eureka.com"/>
</query>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<iq to="all-xmpp-test@test-d/def-user-resource" xmlns="jabber:client" id="roster_dynamic_6" type="result"><query xmlns="jabber:iq:roster-dynamic"><item jid="newton@eureka.com">
<note>Newton is heavy!</note><phone>+12 3456 777777</phone></item></query></iq>
</INPUT>
<OUTPUT test='Dynamic Roster 1 (c2s)'>
<iq id="roster_dynamic_7" type="get">
<query xmlns="jabber:iq:roster-dynamic">
<item jid="pascal@eureka.com"/>
</query>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 1 (c2s)'>
<iq to="all-xmpp-test@test-d/def-user-resource" xmlns="jabber:client" id="roster_dynamic_7" type="result"><query xmlns="jabber:iq:roster-dynamic"><item jid="pascal@eureka.com">
<note>Pascal is great!</note><phone>+12 3456 888888</phone></item></query></iq>
</INPUT>

</test-history>