slidge 0.2.11__tar.gz → 0.2.12__tar.gz

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 (204) hide show
  1. {slidge-0.2.11 → slidge-0.2.12}/PKG-INFO +1 -1
  2. {slidge-0.2.11 → slidge-0.2.12}/slidge/group/room.py +6 -1
  3. {slidge-0.2.11 → slidge-0.2.12}/slidge.egg-info/PKG-INFO +1 -1
  4. {slidge-0.2.11 → slidge-0.2.12}/tests/test_muc.py +76 -0
  5. {slidge-0.2.11 → slidge-0.2.12}/.gitignore +0 -0
  6. {slidge-0.2.11 → slidge-0.2.12}/.pre-commit-config.yaml +0 -0
  7. {slidge-0.2.11 → slidge-0.2.12}/.woodpecker/container-ci.yaml +0 -0
  8. {slidge-0.2.11 → slidge-0.2.12}/.woodpecker/docs.yaml +0 -0
  9. {slidge-0.2.11 → slidge-0.2.12}/.woodpecker/package.yaml +0 -0
  10. {slidge-0.2.11 → slidge-0.2.12}/.woodpecker/test.yaml +0 -0
  11. {slidge-0.2.11 → slidge-0.2.12}/Dockerfile +0 -0
  12. {slidge-0.2.11 → slidge-0.2.12}/LICENSE +0 -0
  13. {slidge-0.2.11 → slidge-0.2.12}/README.md +0 -0
  14. {slidge-0.2.11 → slidge-0.2.12}/commitlint.config.js +0 -0
  15. {slidge-0.2.11 → slidge-0.2.12}/dev/assets/5x5.png +0 -0
  16. {slidge-0.2.11 → slidge-0.2.12}/dev/assets/slidge-color-small.png +0 -0
  17. {slidge-0.2.11 → slidge-0.2.12}/dev/assets/slidge-color.png +0 -0
  18. {slidge-0.2.11 → slidge-0.2.12}/dev/assets/slidge-mono-black.png +0 -0
  19. {slidge-0.2.11 → slidge-0.2.12}/dev/assets/slidge-mono-white.png +0 -0
  20. {slidge-0.2.11 → slidge-0.2.12}/dev/assets/slidge.svg +0 -0
  21. {slidge-0.2.11 → slidge-0.2.12}/dev/confs/movim.env +0 -0
  22. {slidge-0.2.11 → slidge-0.2.12}/dev/confs/nginx.conf +0 -0
  23. {slidge-0.2.11 → slidge-0.2.12}/dev/confs/slidge-dev.ini +0 -0
  24. {slidge-0.2.11 → slidge-0.2.12}/dev/confs/slidge-example.ini +0 -0
  25. {slidge-0.2.11 → slidge-0.2.12}/dev/hot-reload.sh +0 -0
  26. {slidge-0.2.11 → slidge-0.2.12}/dev/prettify_tests.py +0 -0
  27. {slidge-0.2.11 → slidge-0.2.12}/doap.xml +0 -0
  28. {slidge-0.2.11 → slidge-0.2.12}/docker-compose.yml +0 -0
  29. {slidge-0.2.11 → slidge-0.2.12}/docs/Makefile +0 -0
  30. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/attachments.rst +0 -0
  31. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/component.rst +0 -0
  32. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/config/index.rst +0 -0
  33. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/daemon.rst +0 -0
  34. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/examples/ejabberd.yaml +0 -0
  35. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/examples/index.rst +0 -0
  36. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/examples/prosody.cfg.lua +0 -0
  37. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/index.rst +0 -0
  38. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/install.rst +0 -0
  39. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/note.rst +0 -0
  40. {slidge-0.2.11 → slidge-0.2.12}/docs/source/admin/privilege.rst +0 -0
  41. {slidge-0.2.11 → slidge-0.2.12}/docs/source/codeberg.svg +0 -0
  42. {slidge-0.2.11 → slidge-0.2.12}/docs/source/conf.py +0 -0
  43. {slidge-0.2.11 → slidge-0.2.12}/docs/source/dev/contributing.rst +0 -0
  44. {slidge-0.2.11 → slidge-0.2.12}/docs/source/dev/design.rst +0 -0
  45. {slidge-0.2.11 → slidge-0.2.12}/docs/source/dev/howto.rst +0 -0
  46. {slidge-0.2.11 → slidge-0.2.12}/docs/source/dev/index.rst +0 -0
  47. {slidge-0.2.11 → slidge-0.2.12}/docs/source/dev/tutorial.rst +0 -0
  48. {slidge-0.2.11 → slidge-0.2.12}/docs/source/glossary.rst +0 -0
  49. {slidge-0.2.11 → slidge-0.2.12}/docs/source/index.rst +0 -0
  50. {slidge-0.2.11 → slidge-0.2.12}/docs/source/user/commands.rst +0 -0
  51. {slidge-0.2.11 → slidge-0.2.12}/docs/source/user/contacts.rst +0 -0
  52. {slidge-0.2.11 → slidge-0.2.12}/docs/source/user/foxyproxy.png +0 -0
  53. {slidge-0.2.11 → slidge-0.2.12}/docs/source/user/gajim.png +0 -0
  54. {slidge-0.2.11 → slidge-0.2.12}/docs/source/user/index.rst +0 -0
  55. {slidge-0.2.11 → slidge-0.2.12}/docs/source/user/low_profile.rst +0 -0
  56. {slidge-0.2.11 → slidge-0.2.12}/docs/source/user/movim1.png +0 -0
  57. {slidge-0.2.11 → slidge-0.2.12}/docs/source/user/movim2.png +0 -0
  58. {slidge-0.2.11 → slidge-0.2.12}/docs/source/user/note.rst +0 -0
  59. {slidge-0.2.11 → slidge-0.2.12}/docs/source/user/register.rst +0 -0
  60. {slidge-0.2.11 → slidge-0.2.12}/pyproject.toml +0 -0
  61. {slidge-0.2.11 → slidge-0.2.12}/setup.cfg +0 -0
  62. {slidge-0.2.11 → slidge-0.2.12}/slidge/__init__.py +0 -0
  63. {slidge-0.2.11 → slidge-0.2.12}/slidge/__main__.py +0 -0
  64. {slidge-0.2.11 → slidge-0.2.12}/slidge/command/__init__.py +0 -0
  65. {slidge-0.2.11 → slidge-0.2.12}/slidge/command/adhoc.py +0 -0
  66. {slidge-0.2.11 → slidge-0.2.12}/slidge/command/admin.py +0 -0
  67. {slidge-0.2.11 → slidge-0.2.12}/slidge/command/base.py +0 -0
  68. {slidge-0.2.11 → slidge-0.2.12}/slidge/command/categories.py +0 -0
  69. {slidge-0.2.11 → slidge-0.2.12}/slidge/command/chat_command.py +0 -0
  70. {slidge-0.2.11 → slidge-0.2.12}/slidge/command/register.py +0 -0
  71. {slidge-0.2.11 → slidge-0.2.12}/slidge/command/user.py +0 -0
  72. {slidge-0.2.11 → slidge-0.2.12}/slidge/contact/__init__.py +0 -0
  73. {slidge-0.2.11 → slidge-0.2.12}/slidge/contact/contact.py +0 -0
  74. {slidge-0.2.11 → slidge-0.2.12}/slidge/contact/roster.py +0 -0
  75. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/__init__.py +0 -0
  76. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/config.py +0 -0
  77. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/__init__.py +0 -0
  78. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/caps.py +0 -0
  79. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/disco.py +0 -0
  80. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/message/__init__.py +0 -0
  81. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/message/chat_state.py +0 -0
  82. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/message/marker.py +0 -0
  83. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/message/message.py +0 -0
  84. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/muc/__init__.py +0 -0
  85. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/muc/admin.py +0 -0
  86. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/muc/mam.py +0 -0
  87. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/muc/misc.py +0 -0
  88. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/muc/owner.py +0 -0
  89. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/muc/ping.py +0 -0
  90. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/presence.py +0 -0
  91. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/registration.py +0 -0
  92. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/search.py +0 -0
  93. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/session_dispatcher.py +0 -0
  94. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/util.py +0 -0
  95. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/dispatcher/vcard.py +0 -0
  96. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/gateway.py +0 -0
  97. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/__init__.py +0 -0
  98. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/attachment.py +0 -0
  99. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/avatar.py +0 -0
  100. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/base.py +0 -0
  101. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/db.py +0 -0
  102. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/disco.py +0 -0
  103. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/lock.py +0 -0
  104. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/message.py +0 -0
  105. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/message_maker.py +0 -0
  106. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/message_text.py +0 -0
  107. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/presence.py +0 -0
  108. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/mixins/recipient.py +0 -0
  109. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/pubsub.py +0 -0
  110. {slidge-0.2.11 → slidge-0.2.12}/slidge/core/session.py +0 -0
  111. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/__init__.py +0 -0
  112. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/__init__.py +0 -0
  113. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/env.py +0 -0
  114. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/script.py.mako +0 -0
  115. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/04cf35e3cf85_add_participant_nickname_no_illegal.py +0 -0
  116. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/09f27f098baa_add_missing_attributes_in_room.py +0 -0
  117. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/15b0bd83407a_remove_bogus_unique_constraints_on_room_.py +0 -0
  118. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/2461390c0af2_store_contacts_caps_verstring_in_db.py +0 -0
  119. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/29f5280c61aa_store_subject_setter_in_room.py +0 -0
  120. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/2b1f45ab7379_store_room_subject_setter_by_nickname.py +0 -0
  121. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/3071e0fa69d4_add_contact_client_type.py +0 -0
  122. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/45c24cc73c91_add_bob.py +0 -0
  123. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/5bd48bfdffa2_lift_room_legacy_id_constraint.py +0 -0
  124. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/82a4af84b679_add_muc_history_filled.py +0 -0
  125. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/8b993243a536_add_vcard_content_to_contact_table.py +0 -0
  126. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/8d2ced764698_rely_on_db_to_store_contacts_rooms_and_.py +0 -0
  127. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/aa9d82a7f6ef_db_creation.py +0 -0
  128. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/abba1ae0edb3_store_avatar_legacy_id_in_the_contact_.py +0 -0
  129. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/b33993e87db3_move_everything_to_persistent_db.py +0 -0
  130. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/b64b1a793483_add_source_and_legacy_id_for_archived_.py +0 -0
  131. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/c4a8ec35a0e8_per_room_user_nick.py +0 -0
  132. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/alembic/versions/e91195719c2c_store_users_avatars_persistently.py +0 -0
  133. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/avatar.py +0 -0
  134. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/meta.py +0 -0
  135. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/models.py +0 -0
  136. {slidge-0.2.11 → slidge-0.2.12}/slidge/db/store.py +0 -0
  137. {slidge-0.2.11 → slidge-0.2.12}/slidge/group/__init__.py +0 -0
  138. {slidge-0.2.11 → slidge-0.2.12}/slidge/group/archive.py +0 -0
  139. {slidge-0.2.11 → slidge-0.2.12}/slidge/group/bookmarks.py +0 -0
  140. {slidge-0.2.11 → slidge-0.2.12}/slidge/group/participant.py +0 -0
  141. {slidge-0.2.11 → slidge-0.2.12}/slidge/main.py +0 -0
  142. {slidge-0.2.11 → slidge-0.2.12}/slidge/migration.py +0 -0
  143. {slidge-0.2.11 → slidge-0.2.12}/slidge/py.typed +0 -0
  144. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/__init__.py +0 -0
  145. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/delivery_receipt.py +0 -0
  146. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/link_preview/__init__.py +0 -0
  147. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/link_preview/link_preview.py +0 -0
  148. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/link_preview/stanza.py +0 -0
  149. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/roster.py +0 -0
  150. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/xep_0077/__init__.py +0 -0
  151. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/xep_0077/register.py +0 -0
  152. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/xep_0077/stanza.py +0 -0
  153. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/xep_0100/__init__.py +0 -0
  154. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/xep_0100/gateway.py +0 -0
  155. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/xep_0100/stanza.py +0 -0
  156. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/xep_0153/__init__.py +0 -0
  157. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/xep_0153/vcard_avatar.py +0 -0
  158. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/xep_0292/__init__.py +0 -0
  159. {slidge-0.2.11 → slidge-0.2.12}/slidge/slixfix/xep_0292/vcard4.py +0 -0
  160. {slidge-0.2.11 → slidge-0.2.12}/slidge/util/__init__.py +0 -0
  161. {slidge-0.2.11 → slidge-0.2.12}/slidge/util/archive_msg.py +0 -0
  162. {slidge-0.2.11 → slidge-0.2.12}/slidge/util/conf.py +0 -0
  163. {slidge-0.2.11 → slidge-0.2.12}/slidge/util/jid_escaping.py +0 -0
  164. {slidge-0.2.11 → slidge-0.2.12}/slidge/util/test.py +0 -0
  165. {slidge-0.2.11 → slidge-0.2.12}/slidge/util/types.py +0 -0
  166. {slidge-0.2.11 → slidge-0.2.12}/slidge/util/util.py +0 -0
  167. {slidge-0.2.11 → slidge-0.2.12}/slidge.egg-info/SOURCES.txt +0 -0
  168. {slidge-0.2.11 → slidge-0.2.12}/slidge.egg-info/dependency_links.txt +0 -0
  169. {slidge-0.2.11 → slidge-0.2.12}/slidge.egg-info/entry_points.txt +0 -0
  170. {slidge-0.2.11 → slidge-0.2.12}/slidge.egg-info/requires.txt +0 -0
  171. {slidge-0.2.11 → slidge-0.2.12}/slidge.egg-info/top_level.txt +0 -0
  172. {slidge-0.2.11 → slidge-0.2.12}/superduper/__init__.py +0 -0
  173. {slidge-0.2.11 → slidge-0.2.12}/superduper/__main__.py +0 -0
  174. {slidge-0.2.11 → slidge-0.2.12}/superduper/contact.py +0 -0
  175. {slidge-0.2.11 → slidge-0.2.12}/superduper/gateway.py +0 -0
  176. {slidge-0.2.11 → slidge-0.2.12}/superduper/group.py +0 -0
  177. {slidge-0.2.11 → slidge-0.2.12}/superduper/legacy_client.py +0 -0
  178. {slidge-0.2.11 → slidge-0.2.12}/superduper/session.py +0 -0
  179. {slidge-0.2.11 → slidge-0.2.12}/superduper/util.py +0 -0
  180. {slidge-0.2.11 → slidge-0.2.12}/tests/conftest.py +0 -0
  181. {slidge-0.2.11 → slidge-0.2.12}/tests/test_adhoc/test_access.py +0 -0
  182. {slidge-0.2.11 → slidge-0.2.12}/tests/test_adhoc/test_confirmation.py +0 -0
  183. {slidge-0.2.11 → slidge-0.2.12}/tests/test_adhoc/test_form.py +0 -0
  184. {slidge-0.2.11 → slidge-0.2.12}/tests/test_adhoc/test_reported.py +0 -0
  185. {slidge-0.2.11 → slidge-0.2.12}/tests/test_attachment.py +0 -0
  186. {slidge-0.2.11 → slidge-0.2.12}/tests/test_avatar.py +0 -0
  187. {slidge-0.2.11 → slidge-0.2.12}/tests/test_backfill.py +0 -0
  188. {slidge-0.2.11 → slidge-0.2.12}/tests/test_chat_commands.py +0 -0
  189. {slidge-0.2.11 → slidge-0.2.12}/tests/test_config.py +0 -0
  190. {slidge-0.2.11 → slidge-0.2.12}/tests/test_db/test_store.py +0 -0
  191. {slidge-0.2.11 → slidge-0.2.12}/tests/test_db/test_user.py +0 -0
  192. {slidge-0.2.11 → slidge-0.2.12}/tests/test_feature_restriction.py +0 -0
  193. {slidge-0.2.11 → slidge-0.2.12}/tests/test_mam_archivable.py +0 -0
  194. {slidge-0.2.11 → slidge-0.2.12}/tests/test_mds.py +0 -0
  195. {slidge-0.2.11 → slidge-0.2.12}/tests/test_name_in_constructor.py +0 -0
  196. {slidge-0.2.11 → slidge-0.2.12}/tests/test_resourceprep.py +0 -0
  197. {slidge-0.2.11 → slidge-0.2.12}/tests/test_session.py +0 -0
  198. {slidge-0.2.11 → slidge-0.2.12}/tests/test_session_2.py +0 -0
  199. {slidge-0.2.11 → slidge-0.2.12}/tests/test_set_name_before_fill.py +0 -0
  200. {slidge-0.2.11 → slidge-0.2.12}/tests/test_shakespeare.py +0 -0
  201. {slidge-0.2.11 → slidge-0.2.12}/tests/test_stanza_link_preview.py +0 -0
  202. {slidge-0.2.11 → slidge-0.2.12}/tests/test_util.py +0 -0
  203. {slidge-0.2.11 → slidge-0.2.12}/tests/test_vcard.py +0 -0
  204. {slidge-0.2.11 → slidge-0.2.12}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: slidge
3
- Version: 0.2.11
3
+ Version: 0.2.12
4
4
  Summary: XMPP bridging framework
5
5
  Author-email: Nicolas Cedilnik <nicoco@nicoco.fr>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -922,8 +922,13 @@ class LegacyMUC(
922
922
  after_id = after_id_rsm or after_id
923
923
 
924
924
  before_rsm = iq["mam"]["rsm"]["before"]
925
- if before_rsm is True and max_results is not None:
925
+ if before_rsm is not None and max_results is not None:
926
926
  last_page_n = max_results
927
+ # - before_rsm is True means the empty element <before />, which means
928
+ # "last page in chronological order", cf https://xmpp.org/extensions/xep-0059.html#backwards
929
+ # - before_rsm == "an ID" means <before>an ID</before>
930
+ if before_rsm is not True:
931
+ before_id = before_rsm
927
932
  else:
928
933
  last_page_n = None
929
934
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: slidge
3
- Version: 0.2.11
3
+ Version: 0.2.12
4
4
  Summary: XMPP bridging framework
5
5
  Author-email: Nicolas Cedilnik <nicoco@nicoco.fr>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -1919,6 +1919,82 @@ class TestMuc(Base):
1919
1919
  </iq>
1920
1920
  """
1921
1921
  )
1922
+ self.recv( # language=XML
1923
+ """
1924
+ <iq from='romeo@montague.lit/gajim'
1925
+ type='set'
1926
+ id='iq-id1'
1927
+ to='room-private@aim.shakespeare.lit'>
1928
+ <query xmlns='urn:xmpp:mam:2'
1929
+ queryid='query-id'>
1930
+ <x xmlns='jabber:x:data'
1931
+ type='submit'>
1932
+ <field var='FORM_TYPE'
1933
+ type='hidden'>
1934
+ <value>urn:xmpp:mam:2</value>
1935
+ </field>
1936
+ <field var='start'>
1937
+ <value>2000-01-01T03:00:00Z</value>
1938
+ </field>
1939
+ </x>
1940
+ <set xmlns='http://jabber.org/protocol/rsm'>
1941
+ <max>3</max>
1942
+ <before>7</before>
1943
+ </set>
1944
+ </query>
1945
+ </iq>
1946
+ """
1947
+ )
1948
+ for i in range(4, 7):
1949
+ self.send( # language=XML
1950
+ f"""
1951
+ <message to='romeo@montague.lit/gajim'
1952
+ from='room-private@aim.shakespeare.lit'>
1953
+ <result xmlns='urn:xmpp:mam:2'
1954
+ queryid='query-id'
1955
+ id='{i}'>
1956
+ <forwarded xmlns='urn:xmpp:forward:0'>
1957
+ <delay xmlns='urn:xmpp:delay'
1958
+ stamp='2000-01-01T{i:02d}:00:00Z' />
1959
+ <message xmlns='jabber:client'
1960
+ from="room-private@aim.shakespeare.lit/history-man-{i}"
1961
+ type='groupchat'
1962
+ id='{i}'>
1963
+ <body>Body #{i}</body>
1964
+ <stanza-id xmlns="urn:xmpp:sid:0"
1965
+ id="{i}"
1966
+ by="room-private@aim.shakespeare.lit" />
1967
+ <occupant-id xmlns="urn:xmpp:occupant-id:0"
1968
+ id="uuid" />
1969
+ <x xmlns="http://jabber.org/protocol/muc#user">
1970
+ <item role="participant"
1971
+ affiliation="member"
1972
+ jid="uuid@aim.shakespeare.lit" />
1973
+ </x>
1974
+ </message>
1975
+ </forwarded>
1976
+ </result>
1977
+ </message>
1978
+ """
1979
+ )
1980
+ self.send( # language=XML
1981
+ """
1982
+ <iq type='result'
1983
+ id='iq-id1'
1984
+ from='room-private@aim.shakespeare.lit'
1985
+ to='romeo@montague.lit/gajim'>
1986
+ <fin xmlns='urn:xmpp:mam:2'
1987
+ stable="false"
1988
+ complete='true'>
1989
+ <set xmlns='http://jabber.org/protocol/rsm'>
1990
+ <first>4</first>
1991
+ <last>6</last>
1992
+ <count>3</count>
1993
+ </set>
1994
+ </fin>
1995
+ </iq>
1996
+ """
1997
+ )
1922
1998
 
1923
1999
  def test_mam_flip(self):
1924
2000
  self.recv( # language=XML
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes