147 lines
6.8 KiB
Java
147 lines
6.8 KiB
Java
/**
|
|
*
|
|
* Copyright 2021 Florian Schmaus
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
package org.jivesoftware.smackx.xdata.provider;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
|
import java.io.IOException;
|
|
import java.util.List;
|
|
|
|
import org.jivesoftware.smack.parsing.SmackParsingException;
|
|
import org.jivesoftware.smack.util.PacketParserUtils;
|
|
import org.jivesoftware.smack.xml.XmlPullParser;
|
|
import org.jivesoftware.smack.xml.XmlPullParserException;
|
|
import org.jivesoftware.smackx.xdata.FormField;
|
|
import org.jivesoftware.smackx.xdata.packet.DataForm;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
public class DataFormProviderTest {
|
|
|
|
@Test
|
|
public void testRetrieveFieldTypeFromReported() throws XmlPullParserException, IOException, SmackParsingException {
|
|
|
|
String firstForm =
|
|
"<x xmlns='jabber:x:data' type='form'>" +
|
|
" <title>Advanced User Search</title>" +
|
|
" <instructions>The following fields are available for searching. Wildcard (*) characters are allowed as part of the query.</instructions>" +
|
|
" <field var='FORM_TYPE' type='hidden'>" +
|
|
" <value>jabber:iq:search</value>" +
|
|
" </field>" +
|
|
" <field label='Search' var='search'>" +
|
|
" <required/>" +
|
|
" </field>" +
|
|
" <field label='Username' var='Username' type='boolean'>" +
|
|
" <value>true</value>" +
|
|
" </field>" +
|
|
" <field label='Name' var='Name' type='boolean'>" +
|
|
" <value>true</value>" +
|
|
" </field>" +
|
|
" <field label='Email' var='Email' type='boolean'>" +
|
|
" <value>true</value>" +
|
|
" </field>" +
|
|
"</x>";
|
|
XmlPullParser parser = PacketParserUtils.getParserFor(firstForm);
|
|
DataForm firstDataForm = DataFormProvider.INSTANCE.parse(parser);
|
|
FormField usernameFormField = firstDataForm.getField("Username");
|
|
assertEquals(FormField.Type.bool, usernameFormField.getType());
|
|
|
|
String secondForm =
|
|
"<x xmlns='jabber:x:data' type='result'>" +
|
|
" <field var='FORM_TYPE' type='hidden'/>" +
|
|
" <reported>" +
|
|
" <field var='jid' type='jid-single' label='JID'/>" +
|
|
" <field var='Username' type='text-single' label='Username'/>" +
|
|
" <field var='Name' type='text-single' label='Name'/>" +
|
|
" <field var='Email' type='text-single' label='Email'/>" +
|
|
" </reported>" +
|
|
" <item>" +
|
|
" <field var='Email'>" +
|
|
" <value>" +
|
|
" 0" +
|
|
" </value>" +
|
|
" </field>" +
|
|
" <field var='jid'>" +
|
|
" <value>frank@orphu</value>" +
|
|
" </field>" +
|
|
" <field var='Username'>" +
|
|
" <value>" +
|
|
" frank" +
|
|
" </value>" +
|
|
" </field>" +
|
|
" <field var='Name'>" +
|
|
" <value>" +
|
|
" 0" +
|
|
" </value>" +
|
|
" </field>" +
|
|
" </item>" +
|
|
" <item>" +
|
|
" <field var='Email'>" +
|
|
" <value>" +
|
|
" </value>" +
|
|
" </field>" +
|
|
" <field var='jid'>" +
|
|
" <value>frank2@orphu</value>" +
|
|
" </field>" +
|
|
" <field var='Username'>" +
|
|
" <value>" +
|
|
" frank2" +
|
|
" </value>" +
|
|
" </field>" +
|
|
" <field var='Name'>" +
|
|
" <value>" +
|
|
" </value>" +
|
|
" </field>" +
|
|
" </item>" +
|
|
"</x>";
|
|
parser = PacketParserUtils.getParserFor(secondForm);
|
|
DataForm secondDataForm = DataFormProvider.INSTANCE.parse(parser);
|
|
List<DataForm.Item> items = secondDataForm.getItems();
|
|
assertEquals(2, items.size());
|
|
}
|
|
|
|
@Test
|
|
public void testRetrieveFieldWithEmptyLabel() throws XmlPullParserException, IOException, SmackParsingException {
|
|
|
|
String form =
|
|
"<x xmlns='jabber:x:data' type='form'>" +
|
|
" <title>Advanced User Search</title>" +
|
|
" <instructions>The following fields are available for searching. Wildcard (*) characters are allowed as part of the query.</instructions>" +
|
|
" <field var='FORM_TYPE' label='' type='hidden'>" +
|
|
" <value>jabber:iq:search</value>" +
|
|
" </field>" +
|
|
" <field label='Search' var='search'>" +
|
|
" <required/>" +
|
|
" </field>" +
|
|
" <field label='Username' var='Username' type='boolean'>" +
|
|
" <value>true</value>" +
|
|
" </field>" +
|
|
" <field label='Name' var='Name' type='boolean'>" +
|
|
" <value>true</value>" +
|
|
" </field>" +
|
|
" <field label='Email' var='Email' type='boolean'>" +
|
|
" <value>true</value>" +
|
|
" </field>" +
|
|
"</x>";
|
|
XmlPullParser parser = PacketParserUtils.getParserFor(form);
|
|
DataForm dataForm = DataFormProvider.INSTANCE.parse(parser);
|
|
FormField usernameFormField = dataForm.getField("FORM_TYPE");
|
|
assertEquals(FormField.Type.hidden, usernameFormField.getType());
|
|
assertEquals("", usernameFormField.getLabel());
|
|
}
|
|
}
|