jubjub 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/README.mdown +42 -6
  2. data/lib/jubjub/connection/xmpp_gateway/muc.rb +4 -20
  3. data/lib/jubjub/connection/xmpp_gateway/pubsub.rb +194 -13
  4. data/lib/jubjub/data_form.rb +30 -0
  5. data/lib/jubjub/muc.rb +4 -93
  6. data/lib/jubjub/muc/collection.rb +55 -0
  7. data/lib/jubjub/muc/configuration.rb +5 -0
  8. data/lib/jubjub/muc/muc.rb +37 -0
  9. data/lib/jubjub/pubsub.rb +8 -201
  10. data/lib/jubjub/pubsub/affiliation.rb +83 -0
  11. data/lib/jubjub/pubsub/affiliation_collection.rb +38 -0
  12. data/lib/jubjub/pubsub/collection.rb +68 -0
  13. data/lib/jubjub/pubsub/configuration.rb +5 -0
  14. data/lib/jubjub/pubsub/item.rb +35 -0
  15. data/lib/jubjub/pubsub/item_collection.rb +35 -0
  16. data/lib/jubjub/pubsub/pubsub.rb +66 -0
  17. data/lib/jubjub/pubsub/subscription.rb +24 -0
  18. data/lib/jubjub/user.rb +2 -2
  19. data/spec/connection/xmpp_gateway_muc_spec.rb +3 -3
  20. data/spec/connection/xmpp_gateway_pubsub_spec.rb +167 -11
  21. data/spec/fixtures/dataform_1.xml +65 -0
  22. data/spec/fixtures/vcr_cassettes/pubsub_default_configuration.yml +118 -0
  23. data/spec/fixtures/vcr_cassettes/pubsub_modify_affiliations.yml +275 -0
  24. data/spec/fixtures/vcr_cassettes/pubsub_purge.yml +68 -0
  25. data/spec/fixtures/vcr_cassettes/pubsub_retrieve_affiliations.yml +99 -0
  26. data/spec/mixins/user_spec.rb +8 -8
  27. data/spec/models/muc_collection_spec.rb +17 -12
  28. data/spec/models/muc_configuration_spec.rb +1 -1
  29. data/spec/models/pubsub_affiliation_collection_spec.rb +86 -0
  30. data/spec/models/pubsub_affiliation_spec.rb +244 -0
  31. data/spec/models/pubsub_collection_spec.rb +50 -18
  32. data/spec/models/pubsub_item_collection_spec.rb +12 -12
  33. data/spec/models/pubsub_item_spec.rb +9 -2
  34. data/spec/models/pubsub_spec.rb +27 -2
  35. data/spec/models/pubsub_subscription_spec.rb +2 -2
  36. data/spec/spec_helper.rb +1 -1
  37. data/spec/support/helpers.rb +7 -0
  38. data/spec/support/shared_examples.rb +30 -0
  39. metadata +46 -19
@@ -0,0 +1,65 @@
1
+ <iq from='joogle@botster.shakespeare.lit'
2
+ to='romeo@montague.net/home'
3
+ type='result'
4
+ xml:lang='en'
5
+ id='create1'>
6
+ <command xmlns='http://jabber.org/protocol/commands'
7
+ node='create'
8
+ sessionid='create:20040408T0128Z'
9
+ status='executing'>
10
+ <x xmlns='jabber:x:data' type='form'>
11
+ <title>Bot Configuration</title>
12
+ <instructions>Fill out this form to configure your new bot!</instructions>
13
+ <field type='hidden'
14
+ var='FORM_TYPE'>
15
+ <value>jabber:bot</value>
16
+ </field>
17
+ <field type='fixed'><value>Section 1: Bot Info</value></field>
18
+ <field type='text-single'
19
+ label='The name of your bot'
20
+ var='botname'/>
21
+ <field type='text-multi'
22
+ label='Helpful description of your bot'
23
+ var='description'/>
24
+ <field type='boolean'
25
+ label='Public bot?'
26
+ var='public'>
27
+ <required/>
28
+ </field>
29
+ <field type='text-private'
30
+ label='Password for special access'
31
+ var='password'/>
32
+ <field type='fixed'><value>Section 2: Features</value></field>
33
+ <field type='list-multi'
34
+ label='What features will the bot support?'
35
+ var='features'>
36
+ <option label='Contests'><value>contests</value></option>
37
+ <option label='News'><value>news</value></option>
38
+ <option label='Polls'><value>polls</value></option>
39
+ <option label='Reminders'><value>reminders</value></option>
40
+ <option label='Search'><value>search</value></option>
41
+ <value>news</value>
42
+ <value>search</value>
43
+ </field>
44
+ <field type='fixed'><value>Section 3: Subscriber List</value></field>
45
+ <field type='list-single'
46
+ label='Maximum number of subscribers'
47
+ var='maxsubs'>
48
+ <value>20</value>
49
+ <option label='10'><value>10</value></option>
50
+ <option label='20'><value>20</value></option>
51
+ <option label='30'><value>30</value></option>
52
+ <option label='50'><value>50</value></option>
53
+ <option label='100'><value>100</value></option>
54
+ <option label='None'><value>none</value></option>
55
+ </field>
56
+ <field type='fixed'><value>Section 4: Invitations</value></field>
57
+ <field type='jid-multi'
58
+ label='People to invite'
59
+ var='invitelist'>
60
+ <desc>Tell all your friends about your new bot!</desc>
61
+ </field>
62
+ </x>
63
+ </command>
64
+ </iq>
65
+
@@ -0,0 +1,118 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :post
5
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
6
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22get%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%23owner%22%3e%0a%20%20%20%20%3cdefault%2f%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
7
+ headers:
8
+ content-type:
9
+ - application/x-www-form-urlencoded
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 200
13
+ message: ...
14
+ headers:
15
+ content-type:
16
+ - application/xml
17
+ content-length:
18
+ - "3905"
19
+ body: |
20
+ <iq type="result" id="blather00bb" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/17171467891308244735792143">
21
+ <pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
22
+ <default>
23
+ <x xmlns="jabber:x:data" type="form">
24
+ <field type="hidden" label="" var="FORM_TYPE">
25
+ <value>http://jabber.org/protocol/pubsub#node_config</value>
26
+ </field>
27
+ <field type="boolean" label="Deliver payloads with event notifications" var="pubsub#deliver_payloads">
28
+ <value>1</value>
29
+ </field>
30
+ <field type="boolean" label="Deliver event notifications" var="pubsub#deliver_notifications">
31
+ <value>1</value>
32
+ </field>
33
+ <field type="boolean" label="Notify subscribers when the node configuration changes" var="pubsub#notify_config">
34
+ <value>0</value>
35
+ </field>
36
+ <field type="boolean" label="Notify subscribers when the node is deleted" var="pubsub#notify_delete">
37
+ <value>0</value>
38
+ </field>
39
+ <field type="boolean" label="Notify subscribers when items are removed from the node" var="pubsub#notify_retract">
40
+ <value>1</value>
41
+ </field>
42
+ <field type="boolean" label="Persist items to storage" var="pubsub#persist_items">
43
+ <value>1</value>
44
+ </field>
45
+ <field type="text-single" label="A friendly name for the node" var="pubsub#title">
46
+ <value/>
47
+ </field>
48
+ <field type="text-single" label="Max # of items to persist" var="pubsub#max_items">
49
+ <value>10</value>
50
+ </field>
51
+ <field type="boolean" label="Whether to allow subscriptions" var="pubsub#subscribe">
52
+ <value>1</value>
53
+ </field>
54
+ <field type="list-single" label="Specify the access model" var="pubsub#access_model">
55
+ <option>
56
+ <value>open</value>
57
+ </option>
58
+ <option>
59
+ <value>authorize</value>
60
+ </option>
61
+ <option>
62
+ <value>presence</value>
63
+ </option>
64
+ <option>
65
+ <value>roster</value>
66
+ </option>
67
+ <option>
68
+ <value>whitelist</value>
69
+ </option>
70
+ <value>open</value>
71
+ </field>
72
+ <field type="list-multi" label="Roster groups allowed to subscribe" var="pubsub#roster_groups_allowed"/>
73
+ <field type="list-single" label="Specify the publisher model" var="pubsub#publish_model">
74
+ <option>
75
+ <value>publishers</value>
76
+ </option>
77
+ <option>
78
+ <value>subscribers</value>
79
+ </option>
80
+ <option>
81
+ <value>open</value>
82
+ </option>
83
+ <value>publishers</value>
84
+ </field>
85
+ <field type="list-single" label="Specify the event message type" var="pubsub#notification_type">
86
+ <option>
87
+ <value>headline</value>
88
+ </option>
89
+ <option>
90
+ <value>normal</value>
91
+ </option>
92
+ <value>headline</value>
93
+ </field>
94
+ <field type="text-single" label="Max payload size in bytes" var="pubsub#max_payload_size">
95
+ <value>60000</value>
96
+ </field>
97
+ <field type="list-single" label="When to send the last published item" var="pubsub#send_last_published_item">
98
+ <option>
99
+ <value>never</value>
100
+ </option>
101
+ <option>
102
+ <value>on_sub</value>
103
+ </option>
104
+ <option>
105
+ <value>on_sub_and_presence</value>
106
+ </option>
107
+ <value>on_sub_and_presence</value>
108
+ </field>
109
+ <field type="boolean" label="Only deliver notifications to available users" var="pubsub#presence_based_delivery">
110
+ <value>0</value>
111
+ </field>
112
+ <field type="text-multi" label="The collections with which a node is affiliated" var="pubsub#collection"/>
113
+ </x>
114
+ </default>
115
+ </pubsub>
116
+ </iq>
117
+
118
+ http_version: "1.1"
@@ -0,0 +1,275 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :post
5
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
6
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%22%3e%0a%20%20%20%20%3ccreate%20node%3d%22node_modify_affiliations_1%22%2f%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
7
+ headers:
8
+ content-type:
9
+ - application/x-www-form-urlencoded
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 200
13
+ message: ...
14
+ headers:
15
+ content-type:
16
+ - application/xml
17
+ content-length:
18
+ - "251"
19
+ body: |
20
+ <iq type="result" id="blather017d" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741">
21
+ <pubsub xmlns="http://jabber.org/protocol/pubsub">
22
+ <create node="node_modify_affiliations_1"/>
23
+ </pubsub>
24
+ </iq>
25
+
26
+ http_version: "1.1"
27
+ - !ruby/struct:VCR::HTTPInteraction
28
+ request: !ruby/struct:VCR::Request
29
+ method: :post
30
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
31
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%23owner%22%3e%0a%20%20%20%20%3caffiliations%20node%3d%22node_modify_affiliations_1%22%3e%0a%20%20%20%20%20%20%3caffiliation%20affiliation%3d%22owner%22%20jid%3d%22theozaurus%40theo-template.local%22%2f%3e%0a%20%20%20%20%3c%2faffiliations%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
32
+ headers:
33
+ content-type:
34
+ - application/x-www-form-urlencoded
35
+ response: !ruby/struct:VCR::Response
36
+ status: !ruby/struct:VCR::ResponseStatus
37
+ code: 200
38
+ message: ...
39
+ headers:
40
+ content-type:
41
+ - application/xml
42
+ content-length:
43
+ - "133"
44
+ body: |
45
+ <iq type="result" id="blather017f" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741"/>
46
+
47
+ http_version: "1.1"
48
+ - !ruby/struct:VCR::HTTPInteraction
49
+ request: !ruby/struct:VCR::Request
50
+ method: :post
51
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
52
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%23owner%22%3e%0a%20%20%20%20%3cdelete%20node%3d%22node_modify_affiliations_1%22%2f%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
53
+ headers:
54
+ content-type:
55
+ - application/x-www-form-urlencoded
56
+ response: !ruby/struct:VCR::Response
57
+ status: !ruby/struct:VCR::ResponseStatus
58
+ code: 200
59
+ message: ...
60
+ headers:
61
+ content-type:
62
+ - application/xml
63
+ content-length:
64
+ - "133"
65
+ body: |
66
+ <iq type="result" id="blather0181" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741"/>
67
+
68
+ http_version: "1.1"
69
+ - !ruby/struct:VCR::HTTPInteraction
70
+ request: !ruby/struct:VCR::Request
71
+ method: :post
72
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
73
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%22%3e%0a%20%20%20%20%3ccreate%20node%3d%22node_modify_affiliations_2%22%2f%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
74
+ headers:
75
+ content-type:
76
+ - application/x-www-form-urlencoded
77
+ response: !ruby/struct:VCR::Response
78
+ status: !ruby/struct:VCR::ResponseStatus
79
+ code: 200
80
+ message: ...
81
+ headers:
82
+ content-type:
83
+ - application/xml
84
+ content-length:
85
+ - "251"
86
+ body: |
87
+ <iq type="result" id="blather0183" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741">
88
+ <pubsub xmlns="http://jabber.org/protocol/pubsub">
89
+ <create node="node_modify_affiliations_2"/>
90
+ </pubsub>
91
+ </iq>
92
+
93
+ http_version: "1.1"
94
+ - !ruby/struct:VCR::HTTPInteraction
95
+ request: !ruby/struct:VCR::Request
96
+ method: :post
97
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
98
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%23owner%22%3e%0a%20%20%20%20%3caffiliations%20node%3d%22node_modify_affiliations_2%22%3e%0a%20%20%20%20%20%20%3caffiliation%20affiliation%3d%22owner%22%20jid%3d%22theozaurus%40theo-template.local%22%2f%3e%0a%20%20%20%20%20%20%3caffiliation%20affiliation%3d%22publisher%22%20jid%3d%22trex%40theo-template.local%22%2f%3e%0a%20%20%20%20%3c%2faffiliations%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
99
+ headers:
100
+ content-type:
101
+ - application/x-www-form-urlencoded
102
+ response: !ruby/struct:VCR::Response
103
+ status: !ruby/struct:VCR::ResponseStatus
104
+ code: 200
105
+ message: ...
106
+ headers:
107
+ content-type:
108
+ - application/xml
109
+ content-length:
110
+ - "133"
111
+ body: |
112
+ <iq type="result" id="blather0185" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741"/>
113
+
114
+ http_version: "1.1"
115
+ - !ruby/struct:VCR::HTTPInteraction
116
+ request: !ruby/struct:VCR::Request
117
+ method: :post
118
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
119
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%23owner%22%3e%0a%20%20%20%20%3cdelete%20node%3d%22node_modify_affiliations_2%22%2f%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
120
+ headers:
121
+ content-type:
122
+ - application/x-www-form-urlencoded
123
+ response: !ruby/struct:VCR::Response
124
+ status: !ruby/struct:VCR::ResponseStatus
125
+ code: 200
126
+ message: ...
127
+ headers:
128
+ content-type:
129
+ - application/xml
130
+ content-length:
131
+ - "133"
132
+ body: |
133
+ <iq type="result" id="blather0187" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741"/>
134
+
135
+ http_version: "1.1"
136
+ - !ruby/struct:VCR::HTTPInteraction
137
+ request: !ruby/struct:VCR::Request
138
+ method: :post
139
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
140
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%22%3e%0a%20%20%20%20%3ccreate%20node%3d%22node_modify_affiliations_3%22%2f%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
141
+ headers:
142
+ content-type:
143
+ - application/x-www-form-urlencoded
144
+ response: !ruby/struct:VCR::Response
145
+ status: !ruby/struct:VCR::ResponseStatus
146
+ code: 200
147
+ message: ...
148
+ headers:
149
+ content-type:
150
+ - application/xml
151
+ content-length:
152
+ - "251"
153
+ body: |
154
+ <iq type="result" id="blather0189" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741">
155
+ <pubsub xmlns="http://jabber.org/protocol/pubsub">
156
+ <create node="node_modify_affiliations_3"/>
157
+ </pubsub>
158
+ </iq>
159
+
160
+ http_version: "1.1"
161
+ - !ruby/struct:VCR::HTTPInteraction
162
+ request: !ruby/struct:VCR::Request
163
+ method: :post
164
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
165
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%23owner%22%3e%0a%20%20%20%20%3caffiliations%20node%3d%22node_modify_affiliations_3%22%3e%0a%20%20%20%20%20%20%3caffiliation%20affiliation%3d%22owner%22%20jid%3d%22theozaurus%40theo-template.local%22%2f%3e%0a%20%20%20%20%20%20%3caffiliation%20affiliation%3d%22publisher%22%20jid%3d%22trex%40theo-template.local%22%2f%3e%0a%20%20%20%20%3c%2faffiliations%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
166
+ headers:
167
+ content-type:
168
+ - application/x-www-form-urlencoded
169
+ response: !ruby/struct:VCR::Response
170
+ status: !ruby/struct:VCR::ResponseStatus
171
+ code: 200
172
+ message: ...
173
+ headers:
174
+ content-type:
175
+ - application/xml
176
+ content-length:
177
+ - "133"
178
+ body: |
179
+ <iq type="result" id="blather018b" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741"/>
180
+
181
+ http_version: "1.1"
182
+ - !ruby/struct:VCR::HTTPInteraction
183
+ request: !ruby/struct:VCR::Request
184
+ method: :post
185
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
186
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%23owner%22%3e%0a%20%20%20%20%3cdelete%20node%3d%22node_modify_affiliations_3%22%2f%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
187
+ headers:
188
+ content-type:
189
+ - application/x-www-form-urlencoded
190
+ response: !ruby/struct:VCR::Response
191
+ status: !ruby/struct:VCR::ResponseStatus
192
+ code: 200
193
+ message: ...
194
+ headers:
195
+ content-type:
196
+ - application/xml
197
+ content-length:
198
+ - "133"
199
+ body: |
200
+ <iq type="result" id="blather018d" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741"/>
201
+
202
+ http_version: "1.1"
203
+ - !ruby/struct:VCR::HTTPInteraction
204
+ request: !ruby/struct:VCR::Request
205
+ method: :post
206
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
207
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%22%3e%0a%20%20%20%20%3ccreate%20node%3d%22node_modify_affiliations_4%22%2f%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
208
+ headers:
209
+ content-type:
210
+ - application/x-www-form-urlencoded
211
+ response: !ruby/struct:VCR::Response
212
+ status: !ruby/struct:VCR::ResponseStatus
213
+ code: 200
214
+ message: ...
215
+ headers:
216
+ content-type:
217
+ - application/xml
218
+ content-length:
219
+ - "251"
220
+ body: |
221
+ <iq type="result" id="blather018f" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741">
222
+ <pubsub xmlns="http://jabber.org/protocol/pubsub">
223
+ <create node="node_modify_affiliations_4"/>
224
+ </pubsub>
225
+ </iq>
226
+
227
+ http_version: "1.1"
228
+ - !ruby/struct:VCR::HTTPInteraction
229
+ request: !ruby/struct:VCR::Request
230
+ method: :post
231
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
232
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%23owner%22%3e%0a%20%20%20%20%3caffiliations%20node%3d%22node_modify_affiliations_4%22%3e%0a%20%20%20%20%20%20%3caffiliation%20affiliation%3d%22WIBBLE%22%20jid%3d%22theozaurus%40theo-template.local%22%2f%3e%0a%20%20%20%20%3c%2faffiliations%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
233
+ headers:
234
+ content-type:
235
+ - application/x-www-form-urlencoded
236
+ response: !ruby/struct:VCR::Response
237
+ status: !ruby/struct:VCR::ResponseStatus
238
+ code: 200
239
+ message: ...
240
+ headers:
241
+ content-type:
242
+ - application/xml
243
+ content-length:
244
+ - "468"
245
+ body: |
246
+ <iq type="error" id="blather0191" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741" lang="en">
247
+ <pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
248
+ <affiliations node="node_modify_affiliations_4">
249
+ <affiliation affiliation="WIBBLE" jid="theozaurus@theo-template.local"/>
250
+ </affiliations>
251
+ </pubsub>
252
+ <error code="400" type="modify"><bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
253
+
254
+ http_version: "1.1"
255
+ - !ruby/struct:VCR::HTTPInteraction
256
+ request: !ruby/struct:VCR::Request
257
+ method: :post
258
+ uri: http://theozaurus%40theo-template.local:secret@127.0.0.1:8000/
259
+ body: stanza=%3c%3fxml%20version%3d%221.0%22%3f%3e%0a%3ciq%20type%3d%22set%22%20to%3d%22pubsub.theo-template.local%22%3e%0a%20%20%3cpubsub%20xmlns%3d%22http%3a%2f%2fjabber.org%2fprotocol%2fpubsub%23owner%22%3e%0a%20%20%20%20%3cdelete%20node%3d%22node_modify_affiliations_4%22%2f%3e%0a%20%20%3c%2fpubsub%3e%0a%3c%2fiq%3e%0a
260
+ headers:
261
+ content-type:
262
+ - application/x-www-form-urlencoded
263
+ response: !ruby/struct:VCR::Response
264
+ status: !ruby/struct:VCR::ResponseStatus
265
+ code: 200
266
+ message: ...
267
+ headers:
268
+ content-type:
269
+ - application/xml
270
+ content-length:
271
+ - "133"
272
+ body: |
273
+ <iq type="result" id="blather0193" from="pubsub.theo-template.local" to="theozaurus@theo-template.local/2822370568130823521353741"/>
274
+
275
+ http_version: "1.1"