jubjub 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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"