<test-history test='Dynamic Roster 2 (c2s)'>
<OUTPUT test='Dynamic Roster 2 (c2s)'>
<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='test-d' version='1.0'/>
</OUTPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<stream:stream xml:lang="en" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" from="test-d" id="1c372c67-d636-4021-b072-1b750a8cedf9" version="1.0"/>
</INPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<stream:features><ver xmlns="urn:xmpp:features:rosterver"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism></mechanisms><register xmlns="http://jabber.org/features/iq-register"/><auth xmlns="http://jabber.org/features/iq-auth"/></stream:features>
</INPUT>
<OUTPUT test='Dynamic Roster 2 (c2s)'>
<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>AGFsbC14bXBwLXRlc3QAYWxsLXhtcHAtdGVzdC1wYXNzd29yZA==</auth>
</OUTPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
</INPUT>
<OUTPUT test='Dynamic Roster 2 (c2s)'>
<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='test-d' version='1.0'>
</OUTPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<stream:stream xml:lang="en" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" from="test-d" id="1c372c67-d636-4021-b072-1b750a8cedf9" version="1.0"/>
</INPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<stream:features><ver xmlns="urn:xmpp:features:rosterver"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/><register xmlns="http://jabber.org/features/iq-register"/><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/></stream:features>
</INPUT>
<OUTPUT test='Dynamic Roster 2 (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 2 (c2s)'>
<iq xmlns="jabber:client" to="all-xmpp-test@test-d/def-user-resource" 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 2 (c2s)'>
<iq id="dyn-ros-merg-1" type="get">
<query xmlns="jabber:iq:roster"/>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<iq xmlns="jabber:client" to="all-xmpp-test@test-d/def-user-resource" id="dyn-ros-merg-1" type="result"><query xmlns="jabber:iq:roster"/></iq>
</INPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<iq xmlns="jabber:client" to="all-xmpp-test@test-d/def-user-resource" id="tig1" type="set"><query xmlns="jabber:iq:roster"><item jid="dynrost@test-d" subscription="both" name="dynrost"><group>test group</group></item></query></iq>
</INPUT>
<OUTPUT test='Dynamic Roster 2 (c2s)'>
<iq id="dyn-ros-merg-2" type="set">
<query xmlns="jabber:iq:roster">
<item jid="dynrost@test-d" name="claus">
<group>dynamic</group>
<group>coo-worker</group>
</item>
</query>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<iq xmlns="jabber:client" to="all-xmpp-test@test-d/def-user-resource" id="dyn-ros-merg-2" type="error"><query xmlns="jabber:iq:roster">
<item jid="dynrost@test-d" name="claus">
<group>dynamic</group>
<group>coo-worker</group>
</item>
</query><error code="501" type="cancel"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xml:lang="en" xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">You cannot modify this contact. It is controlled by an external service.</text></error></iq>
</INPUT>
<OUTPUT test='Dynamic Roster 2 (c2s)'>
<iq id="dyn-ros-merg-3" type="get">
<query xmlns="jabber:iq:roster"/>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<iq xmlns="jabber:client" to="all-xmpp-test@test-d/def-user-resource" id="dyn-ros-merg-3" type="result"><query xmlns="jabber:iq:roster"/></iq>
</INPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<iq xmlns="jabber:client" to="all-xmpp-test@test-d/def-user-resource" id="tig2" type="set"><query xmlns="jabber:iq:roster"><item jid="dynrost@test-d" subscription="both" name="dynrost"><group>test group</group></item></query></iq>
</INPUT>
<OUTPUT test='Dynamic Roster 2 (c2s)'>
<iq id="dyn-ros-merg-4" type="set">
<query xmlns="jabber:iq:roster">
<item jid="dynrost@test-d" subscription="remove"/>
</query>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<iq xmlns="jabber:client" to="all-xmpp-test@test-d/def-user-resource" id="dyn-ros-merg-4" type="error"><query xmlns="jabber:iq:roster">
<item jid="dynrost@test-d" subscription="remove"/>
</query><error code="501" type="cancel"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xml:lang="en" xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">You cannot modify this contact. It is controlled by an external service.</text></error></iq>
</INPUT>
<OUTPUT test='Dynamic Roster 2 (c2s)'>
<iq id="dyn-ros-merg-5" type="get">
<query xmlns="jabber:iq:roster"/>
</iq>
</OUTPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<iq xmlns="jabber:client" to="all-xmpp-test@test-d/def-user-resource" id="dyn-ros-merg-5" type="result"><query xmlns="jabber:iq:roster"/></iq>
</INPUT>
<INPUT test='Dynamic Roster 2 (c2s)'>
<iq xmlns="jabber:client" to="all-xmpp-test@test-d/def-user-resource" id="tig3" type="set"><query xmlns="jabber:iq:roster"><item jid="dynrost@test-d" subscription="both" name="dynrost"><group>test group</group></item></query></iq>
</INPUT>

</test-history>