1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
import unittest
from slixmpp import JID, Iq, Message
from slixmpp.test import SlixTest
from slixmpp.plugins.xep_0313 import stanza
from slixmpp.plugins.xep_0004.stanza import Form
from slixmpp.plugins.xep_0297 import stanza as fstanza
from slixmpp.plugins.xep_0059 import stanza as rstanza
from slixmpp.xmlstream import register_stanza_plugin
class TestMAM(SlixTest):
def setUp(self):
register_stanza_plugin(stanza.MAM, Form)
register_stanza_plugin(Iq, stanza.MAM)
register_stanza_plugin(Message, stanza.Result)
register_stanza_plugin(Iq, stanza.Fin)
register_stanza_plugin(
stanza.Result,
fstanza.Forwarded
)
register_stanza_plugin(stanza.MAM, rstanza.Set)
register_stanza_plugin(stanza.Fin, rstanza.Set)
register_stanza_plugin(Iq, stanza.Metadata)
register_stanza_plugin(stanza.Metadata, stanza.Start)
register_stanza_plugin(stanza.Metadata, stanza.End)
def testMAMQuery(self):
"""Test that we can build a simple MAM query."""
iq = Iq()
iq['type'] = 'set'
iq['mam']['queryid'] = 'f27'
self.check(iq, """
<iq type='set'>
<query xmlns='urn:xmpp:mam:2' queryid='f27'/>
</iq>
""")
def testMAMQueryOptions(self):
"""Test that we can build a mam query with all options."""
iq = Iq()
iq['type'] = 'set'
iq['mam']['with'] = JID('juliet@capulet.lit')
iq['mam']['start'] = '2010-06-07T00:00:00Z'
iq['mam']['end'] = '2010-07-07T13:23:54Z'
iq['mam']['after_id'] = 'id1'
iq['mam']['before_id'] = 'id2'
iq['mam']['ids'] = ['a', 'b', 'c']
self.check(iq, """
<iq type='set'>
<query xmlns='urn:xmpp:mam:2'>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE' type='hidden'>
<value>urn:xmpp:mam:2</value>
</field>
<field var='with'>
<value>juliet@capulet.lit</value>
</field>
<field var='start'>
<value>2010-06-07T00:00:00Z</value>
</field>
<field var='end'>
<value>2010-07-07T13:23:54Z</value>
</field>
<field var='after-id'>
<value>id1</value>
</field>
<field var='before-id'>
<value>id2</value>
</field>
<field var='ids'>
<value>a</value>
<value>b</value>
<value>c</value>
</field>
</x>
</query>
</iq>
""", use_values=False)
def testMAMMetadata(self):
"""Test that we can build a MAM metadata payload"""
iq = Iq()
iq['type'] = 'result'
iq['mam_metadata']['start']['id'] = 'YWxwaGEg'
iq['mam_metadata']['start']['timestamp'] = '2008-08-22T21:09:04Z'
iq['mam_metadata']['end']['id'] = 'b21lZ2Eg'
iq['mam_metadata']['end']['timestamp'] = '2020-04-20T14:34:21Z'
self.check(iq, """
<iq type='result'>
<metadata xmlns='urn:xmpp:mam:2'>
<start id='YWxwaGEg' timestamp='2008-08-22T21:09:04Z' />
<end id='b21lZ2Eg' timestamp='2020-04-20T14:34:21Z' />
</metadata>
</iq>
""")
suite = unittest.TestLoader().loadTestsFromTestCase(TestMAM)
|