Add the 'connecting' event
[slixmpp.git] / tests / test_stanza_xep_0325.py
blob222e10eae84733d1ff95861083ef86ea3537a918
1 # -*- coding: utf-8 -*-
2 """
3 Slixmpp: The Slick XMPP Library
4 Implementation of xeps for Internet of Things
5 http://wiki.xmpp.org/web/Tech_pages/IoT_systems
6 Copyright (C) 2013 Sustainable Innovation, Joachim.lindborg@sust.se, bjorn.westrom@consoden.se
7 This file is part of Slixmpp.
9 See the file LICENSE for copying permission.
10 """
12 from slixmpp.test import *
13 import slixmpp.plugins.xep_0325 as xep_0325
15 namespace='sn'
17 class TestControlStanzas(SlixTest):
20 def setUp(self):
21 pass
23 def testSetRequest(self):
24 """
25 test of set request stanza
26 """
27 iq = self.Iq()
28 iq['type'] = 'set'
29 iq['from'] = 'master@clayster.com/amr'
30 iq['to'] = 'device@clayster.com'
31 iq['id'] = '1'
32 iq['set'].add_node("Device02", "Source02", "MyCacheType");
33 iq['set'].add_node("Device15");
34 iq['set'].add_data("Tjohej", "boolean", "true")
36 self.check(iq,"""
37 <iq type='set'
38 from='master@clayster.com/amr'
39 to='device@clayster.com'
40 id='1'>
41 <set xmlns='urn:xmpp:iot:control'>
42 <node nodeId='Device02' sourceId='Source02' cacheType='MyCacheType'/>
43 <node nodeId='Device15'/>
44 <boolean name='Tjohej' value='true'/>
45 </set>
46 </iq>
47 """
50 iq['set'].del_node("Device02");
52 self.check(iq,"""
53 <iq type='set'
54 from='master@clayster.com/amr'
55 to='device@clayster.com'
56 id='1'>
57 <set xmlns='urn:xmpp:iot:control'>
58 <node nodeId='Device15'/>
59 <boolean name='Tjohej' value='true'/>
60 </set>
61 </iq>
62 """
65 iq['set'].del_nodes();
67 self.check(iq,"""
68 <iq type='set'
69 from='master@clayster.com/amr'
70 to='device@clayster.com'
71 id='1'>
72 <set xmlns='urn:xmpp:iot:control'>
73 <boolean name='Tjohej' value='true'/>
74 </set>
75 </iq>
76 """
80 def testDirectSet(self):
81 """
82 test of direct set stanza
83 """
84 msg = self.Message()
85 msg['from'] = 'master@clayster.com/amr'
86 msg['to'] = 'device@clayster.com'
87 msg['set'].add_node("Device02");
88 msg['set'].add_node("Device15");
89 msg['set'].add_data("Tjohej", "boolean", "true")
91 self.check(msg,"""
92 <message
93 from='master@clayster.com/amr'
94 to='device@clayster.com'>
95 <set xmlns='urn:xmpp:iot:control'>
96 <node nodeId='Device02'/>
97 <node nodeId='Device15'/>
98 <boolean name='Tjohej' value='true'/>
99 </set>
100 </message>
105 def testSetResponse(self):
107 test of set response stanza
109 iq = self.Iq()
110 iq['type'] = 'result'
111 iq['from'] = 'master@clayster.com/amr'
112 iq['to'] = 'device@clayster.com'
113 iq['id'] = '8'
114 iq['setResponse']['responseCode'] = "OK";
116 self.check(iq,"""
117 <iq type='result'
118 from='master@clayster.com/amr'
119 to='device@clayster.com'
120 id='8'>
121 <setResponse xmlns='urn:xmpp:iot:control' responseCode='OK' />
122 </iq>
126 iq = self.Iq()
127 iq['type'] = 'error'
128 iq['from'] = 'master@clayster.com/amr'
129 iq['to'] = 'device@clayster.com'
130 iq['id'] = '9'
131 iq['setResponse']['responseCode'] = "OtherError";
132 iq['setResponse']['error']['var'] = "Output";
133 iq['setResponse']['error']['text'] = "Test of other error.!";
136 self.check(iq,"""
137 <iq type='error'
138 from='master@clayster.com/amr'
139 to='device@clayster.com'
140 id='9'>
141 <setResponse xmlns='urn:xmpp:iot:control' responseCode='OtherError'>
142 <error var='Output'>Test of other error.!</error>
143 </setResponse>
144 </iq>
148 iq = self.Iq()
149 iq['type'] = 'error'
150 iq['from'] = 'master@clayster.com/amr'
151 iq['to'] = 'device@clayster.com'
152 iq['id'] = '9'
153 iq['setResponse']['responseCode'] = "NotFound";
154 iq['setResponse'].add_node("Device17", "Source09");
155 iq['setResponse'].add_node("Device18", "Source09");
156 iq['setResponse'].add_data("Tjohopp");
159 self.check(iq,"""
160 <iq type='error'
161 from='master@clayster.com/amr'
162 to='device@clayster.com'
163 id='9'>
164 <setResponse xmlns='urn:xmpp:iot:control' responseCode='NotFound'>
165 <node nodeId='Device17' sourceId='Source09'/>
166 <node nodeId='Device18' sourceId='Source09'/>
167 <parameter name='Tjohopp' />
168 </setResponse>
169 </iq>
173 def testSetRequestDatas(self):
175 test of set request data stanzas
177 iq = self.Iq()
178 iq['type'] = 'set'
179 iq['from'] = 'master@clayster.com/amr'
180 iq['to'] = 'device@clayster.com'
181 iq['id'] = '1'
182 iq['set'].add_node("Device02", "Source02", "MyCacheType");
183 iq['set'].add_node("Device15");
185 iq['set'].add_data("Tjohej", "boolean", "true");
186 iq['set'].add_data("Tjohej2", "boolean", "false");
188 iq['set'].add_data("TjohejC", "color", "FF00FF");
189 iq['set'].add_data("TjohejC2", "color", "00FF00");
191 iq['set'].add_data("TjohejS", "string", "String1");
192 iq['set'].add_data("TjohejS2", "string", "String2");
194 iq['set'].add_data("TjohejDate", "date", "2012-01-01");
195 iq['set'].add_data("TjohejDate2", "date", "1900-12-03");
197 iq['set'].add_data("TjohejDateT4", "dateTime", "1900-12-03 12:30");
198 iq['set'].add_data("TjohejDateT2", "dateTime", "1900-12-03 11:22");
200 iq['set'].add_data("TjohejDouble2", "double", "200.22");
201 iq['set'].add_data("TjohejDouble3", "double", "-12232131.3333");
203 iq['set'].add_data("TjohejDur", "duration", "P5Y");
204 iq['set'].add_data("TjohejDur2", "duration", "PT2M1S");
206 iq['set'].add_data("TjohejInt", "int", "1");
207 iq['set'].add_data("TjohejInt2", "int", "-42");
209 iq['set'].add_data("TjohejLong", "long", "123456789098");
210 iq['set'].add_data("TjohejLong2", "long", "-90983243827489374");
212 iq['set'].add_data("TjohejTime", "time", "23:59");
213 iq['set'].add_data("TjohejTime2", "time", "12:00");
215 self.check(iq,"""
216 <iq type='set'
217 from='master@clayster.com/amr'
218 to='device@clayster.com'
219 id='1'>
220 <set xmlns='urn:xmpp:iot:control'>
221 <node nodeId='Device02' sourceId='Source02' cacheType='MyCacheType'/>
222 <node nodeId='Device15'/>
223 <boolean name='Tjohej' value='true'/>
224 <boolean name='Tjohej2' value='false'/>
225 <color name='TjohejC' value='FF00FF'/>
226 <color name='TjohejC2' value='00FF00'/>
227 <string name='TjohejS' value='String1'/>
228 <string name='TjohejS2' value='String2'/>
229 <date name='TjohejDate' value='2012-01-01'/>
230 <date name='TjohejDate2' value='1900-12-03'/>
231 <dateTime name='TjohejDateT4' value='1900-12-03 12:30'/>
232 <dateTime name='TjohejDateT2' value='1900-12-03 11:22'/>
233 <double name='TjohejDouble2' value='200.22'/>
234 <double name='TjohejDouble3' value='-12232131.3333'/>
235 <duration name='TjohejDur' value='P5Y'/>
236 <duration name='TjohejDur2' value='PT2M1S'/>
237 <int name='TjohejInt' value='1'/>
238 <int name='TjohejInt2' value='-42'/>
239 <long name='TjohejLong' value='123456789098'/>
240 <long name='TjohejLong2' value='-90983243827489374'/>
241 <time name='TjohejTime' value='23:59'/>
242 <time name='TjohejTime2' value='12:00'/>
243 </set>
244 </iq>
248 suite = unittest.TestLoader().loadTestsFromTestCase(TestControlStanzas)