mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2025-12-06 21:21:08 +01:00
Improve MamManager API
This commit is contained in:
parent
d958b42eff
commit
9161ba9e7d
8 changed files with 794 additions and 392 deletions
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2016 Fernando Ramirez
|
||||
* Copyright 2016 Fernando Ramirez, 2018 Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,23 +16,24 @@
|
|||
*/
|
||||
package org.jivesoftware.smackx.mam;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.jivesoftware.smackx.mam.MamManager.MamQueryArgs;
|
||||
import org.jivesoftware.smackx.mam.element.MamElements;
|
||||
import org.jivesoftware.smackx.xdata.packet.DataForm;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.jxmpp.jid.Jid;
|
||||
import org.jxmpp.jid.impl.JidCreate;
|
||||
import org.jxmpp.jid.JidTestUtil;
|
||||
import org.jxmpp.util.XmppDateTime;
|
||||
|
||||
public class FiltersTest extends MamTest {
|
||||
|
||||
private static String getMamXMemberWith(List<String> fieldsNames, List<String> fieldsValues) {
|
||||
private static String getMamXMemberWith(List<String> fieldsNames, List<? extends CharSequence> fieldsValues) {
|
||||
String xml = "<x xmlns='jabber:x:data' type='submit'>" + "<field var='FORM_TYPE' type='hidden'>" + "<value>"
|
||||
+ MamElements.NAMESPACE + "</value>" + "</field>";
|
||||
|
||||
|
|
@ -47,115 +48,47 @@ public class FiltersTest extends MamTest {
|
|||
|
||||
@Test
|
||||
public void checkStartDateFilter() throws Exception {
|
||||
Method methodAddStartDateFilter = MamManager.class.getDeclaredMethod("addStart", Date.class, DataForm.class);
|
||||
methodAddStartDateFilter.setAccessible(true);
|
||||
|
||||
Date date = new Date();
|
||||
DataForm dataForm = getNewMamForm();
|
||||
methodAddStartDateFilter.invoke(mamManager, date, dataForm);
|
||||
|
||||
MamQueryArgs mamQueryArgs = MamQueryArgs.builder().limitResultsSince(date).build();
|
||||
DataForm dataForm = mamQueryArgs.getDataForm();
|
||||
|
||||
List<String> fields = new ArrayList<>();
|
||||
fields.add("start");
|
||||
List<String> values = new ArrayList<>();
|
||||
values.add(XmppDateTime.formatXEP0082Date(date));
|
||||
|
||||
Assert.assertEquals(dataForm.toXML(null).toString(), getMamXMemberWith(fields, values));
|
||||
assertEquals(getMamXMemberWith(fields, values), dataForm.toXML(null).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkEndDateFilter() throws Exception {
|
||||
Method methodAddEndDateFilter = MamManager.class.getDeclaredMethod("addEnd", Date.class, DataForm.class);
|
||||
methodAddEndDateFilter.setAccessible(true);
|
||||
|
||||
Date date = new Date();
|
||||
DataForm dataForm = getNewMamForm();
|
||||
methodAddEndDateFilter.invoke(mamManager, date, dataForm);
|
||||
|
||||
MamQueryArgs mamQueryArgs = MamQueryArgs.builder().limitResultsBefore(date).build();
|
||||
DataForm dataForm = mamQueryArgs.getDataForm();
|
||||
|
||||
List<String> fields = new ArrayList<>();
|
||||
fields.add("end");
|
||||
List<String> values = new ArrayList<>();
|
||||
values.add(XmppDateTime.formatXEP0082Date(date));
|
||||
|
||||
Assert.assertEquals(dataForm.toXML(null).toString(), getMamXMemberWith(fields, values));
|
||||
assertEquals(getMamXMemberWith(fields, values), dataForm.toXML(null).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkWithJidFilter() throws Exception {
|
||||
Method methodAddJidFilter = MamManager.class.getDeclaredMethod("addWithJid", Jid.class, DataForm.class);
|
||||
methodAddJidFilter.setAccessible(true);
|
||||
Jid jid = JidTestUtil.BARE_JID_1;
|
||||
|
||||
String jid = "test@jid.com";
|
||||
DataForm dataForm = getNewMamForm();
|
||||
methodAddJidFilter.invoke(mamManager, JidCreate.from(jid), dataForm);
|
||||
MamQueryArgs mamQueryArgs = MamQueryArgs.builder().limitResultsToJid(jid).build();
|
||||
DataForm dataForm = mamQueryArgs.getDataForm();
|
||||
|
||||
List<String> fields = new ArrayList<>();
|
||||
fields.add("with");
|
||||
List<String> values = new ArrayList<>();
|
||||
List<CharSequence> values = new ArrayList<>();
|
||||
values.add(jid);
|
||||
|
||||
Assert.assertEquals(dataForm.toXML(null).toString(), getMamXMemberWith(fields, values));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkMultipleFilters() throws Exception {
|
||||
Method methodAddStartDateFilter = MamManager.class.getDeclaredMethod("addStart", Date.class, DataForm.class);
|
||||
methodAddStartDateFilter.setAccessible(true);
|
||||
Method methodAddEndDateFilter = MamManager.class.getDeclaredMethod("addEnd", Date.class, DataForm.class);
|
||||
methodAddEndDateFilter.setAccessible(true);
|
||||
Method methodAddJidFilter = MamManager.class.getDeclaredMethod("addWithJid", Jid.class, DataForm.class);
|
||||
methodAddJidFilter.setAccessible(true);
|
||||
|
||||
DataForm dataForm = getNewMamForm();
|
||||
Date date = new Date();
|
||||
String dateString = XmppDateTime.formatXEP0082Date(date);
|
||||
String jid = "test@jid.com";
|
||||
|
||||
methodAddStartDateFilter.invoke(mamManager, date, dataForm);
|
||||
methodAddEndDateFilter.invoke(mamManager, date, dataForm);
|
||||
methodAddJidFilter.invoke(mamManager, JidCreate.from(jid), dataForm);
|
||||
String dataFormResult = dataForm.toXML(null).toString();
|
||||
|
||||
List<String> fields = new ArrayList<>();
|
||||
List<String> values = new ArrayList<>();
|
||||
|
||||
fields.add("start");
|
||||
values.add(dateString);
|
||||
Assert.assertNotEquals(dataFormResult, getMamXMemberWith(fields, values));
|
||||
|
||||
fields.add("end");
|
||||
values.add(dateString);
|
||||
Assert.assertNotEquals(dataFormResult, getMamXMemberWith(fields, values));
|
||||
|
||||
fields.clear();
|
||||
values.clear();
|
||||
|
||||
fields.add("start");
|
||||
values.add(dateString);
|
||||
fields.add("with");
|
||||
values.add(jid);
|
||||
Assert.assertNotEquals(dataFormResult, getMamXMemberWith(fields, values));
|
||||
|
||||
fields.clear();
|
||||
values.clear();
|
||||
|
||||
fields.add("end");
|
||||
values.add(dateString);
|
||||
fields.add("with");
|
||||
values.add(jid);
|
||||
fields.add("start");
|
||||
values.add(dateString);
|
||||
Assert.assertNotEquals(dataFormResult, getMamXMemberWith(fields, values));
|
||||
|
||||
fields.clear();
|
||||
values.clear();
|
||||
|
||||
fields.add("start");
|
||||
values.add(dateString);
|
||||
fields.add("end");
|
||||
values.add(dateString);
|
||||
fields.add("with");
|
||||
values.add(jid);
|
||||
Assert.assertEquals(dataFormResult, getMamXMemberWith(fields, values));
|
||||
assertEquals(getMamXMemberWith(fields, values), dataForm.toXML(null).toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2016 Fernando Ramirez
|
||||
* Copyright 2016 Fernando Ramirez, 2018 Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,11 +16,10 @@
|
|||
*/
|
||||
package org.jivesoftware.smackx.mam;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import org.jivesoftware.smack.packet.IQ;
|
||||
import org.jivesoftware.smack.packet.StreamOpen;
|
||||
|
||||
import org.jivesoftware.smackx.mam.MamManager.MamQueryArgs;
|
||||
import org.jivesoftware.smackx.mam.element.MamElements;
|
||||
import org.jivesoftware.smackx.mam.element.MamQueryIQ;
|
||||
import org.jivesoftware.smackx.xdata.packet.DataForm;
|
||||
|
|
@ -37,16 +36,14 @@ public class ResultsLimitTest extends MamTest {
|
|||
|
||||
@Test
|
||||
public void checkResultsLimit() throws Exception {
|
||||
Method methodAddResultsLimit = MamManager.class.getDeclaredMethod("addResultsLimit", Integer.class,
|
||||
MamQueryIQ.class);
|
||||
methodAddResultsLimit.setAccessible(true);
|
||||
|
||||
DataForm dataForm = getNewMamForm();
|
||||
MamQueryIQ mamQueryIQ = new MamQueryIQ(queryId, dataForm);
|
||||
mamQueryIQ.setType(IQ.Type.set);
|
||||
mamQueryIQ.setStanzaId("sarasa");
|
||||
|
||||
methodAddResultsLimit.invoke(mamManager, 10, mamQueryIQ);
|
||||
MamQueryArgs mamQueryArgs = MamQueryArgs.builder().setResultPageSize(10).build();
|
||||
mamQueryArgs.maybeAddRsmSet(mamQueryIQ);
|
||||
Assert.assertEquals(mamQueryIQ.toXML(StreamOpen.CLIENT_NAMESPACE).toString(), resultsLimitStanza);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2016 Fernando Ramirez
|
||||
* Copyright 2016 Fernando Ramirez, 2018 Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,18 +16,17 @@
|
|||
*/
|
||||
package org.jivesoftware.smackx.mam;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import static org.jivesoftware.smack.test.util.XmlUnitUtils.assertXmlSimilar;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.jivesoftware.smack.packet.StreamOpen;
|
||||
|
||||
import org.jivesoftware.smackx.mam.MamManager.MamQueryArgs;
|
||||
import org.jivesoftware.smackx.mam.element.MamElements;
|
||||
import org.jivesoftware.smackx.mam.element.MamQueryIQ;
|
||||
import org.jivesoftware.smackx.xdata.FormField;
|
||||
import org.jivesoftware.smackx.xdata.packet.DataForm;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class RetrieveFormFieldsTest extends MamTest {
|
||||
|
|
@ -46,19 +45,11 @@ public class RetrieveFormFieldsTest extends MamTest {
|
|||
MamQueryIQ mamQueryIQ = new MamQueryIQ(queryId);
|
||||
mamQueryIQ.setStanzaId("sarasa");
|
||||
|
||||
Assert.assertEquals(mamQueryIQ.toXML(StreamOpen.CLIENT_NAMESPACE).toString(), retrieveFormFieldStanza);
|
||||
assertEquals(retrieveFormFieldStanza, mamQueryIQ.toXML(StreamOpen.CLIENT_NAMESPACE).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkAddAdditionalFieldsStanza() throws Exception {
|
||||
Method methodAddAdditionalFields = MamManager.class.getDeclaredMethod("addAdditionalFields", List.class,
|
||||
DataForm.class);
|
||||
methodAddAdditionalFields.setAccessible(true);
|
||||
|
||||
DataForm dataForm = getNewMamForm();
|
||||
|
||||
List<FormField> additionalFields = new ArrayList<>();
|
||||
|
||||
FormField field1 = new FormField("urn:example:xmpp:free-text-search");
|
||||
field1.setType(FormField.Type.text_single);
|
||||
field1.addValue("Hi");
|
||||
|
|
@ -67,14 +58,15 @@ public class RetrieveFormFieldsTest extends MamTest {
|
|||
field2.setType(FormField.Type.jid_single);
|
||||
field2.addValue("Hi2");
|
||||
|
||||
additionalFields.add(field1);
|
||||
additionalFields.add(field2);
|
||||
|
||||
methodAddAdditionalFields.invoke(mamManager, additionalFields, dataForm);
|
||||
MamQueryArgs mamQueryArgs = MamQueryArgs.builder()
|
||||
.withAdditionalFormField(field1)
|
||||
.withAdditionalFormField(field2)
|
||||
.build();
|
||||
DataForm dataForm = mamQueryArgs.getDataForm();
|
||||
|
||||
String dataFormResult = dataForm.toXML(null).toString();
|
||||
|
||||
Assert.assertEquals(dataFormResult, additionalFieldsStanza);
|
||||
assertXmlSimilar(additionalFieldsStanza, dataFormResult);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue