@Override protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) { if (getChildElementName() == null) return null; return super.getIQChildElementBuilder(xml); } }
/** * According to <a href="http://xmpp.org/rfcs/rfc3920.html#stanzas-semantics-iq" * >RFC3920: IQ Semantics</a> we shouldn't respond to an IQ of type result. * @throws XmppStringprepException */ @Test public void testGeneratingResponseBasedOnResult() throws XmppStringprepException { final IQ request = new TestIQ(ELEMENT, NAMESPACE); request.setType(IQ.Type.result); request.setFrom(JidCreate.from("sender@test/Smack")); request.setTo(JidCreate.from("receiver@test/Smack")); try { IQ.createResultIQ(request); } catch (IllegalArgumentException e) { return; } fail("It shouldn't be possible to generate a response for a result IQ!"); }
/** * According to <a href="http://xmpp.org/rfcs/rfc3920.html#stanzas-semantics-iq" * >RFC3920: IQ Semantics</a> we shouldn't respond to an IQ of type error. * @throws XmppStringprepException */ @Test public void testGeneratingErrorBasedOnError() throws XmppStringprepException { final StanzaError.Builder error = StanzaError.getBuilder(StanzaError.Condition.bad_request); final IQ request = new TestIQ(ELEMENT, NAMESPACE); request.setType(IQ.Type.error); request.setFrom(JidCreate.from("sender@test/Smack")); request.setTo(JidCreate.from("receiver@test/Smack")); request.setError(error); try { IQ.createErrorResponse(request, error); } catch (IllegalArgumentException e) { return; } fail("It shouldn't be possible to generate a response for a error IQ!"); } }
/** * Test creating a simple and empty IQ response. * @throws XmppStringprepException */ @Test public void testGeneratingSimpleResponse() throws XmppStringprepException { final IQ request = new TestIQ(ELEMENT, NAMESPACE); request.setFrom(JidCreate.from("sender@test/Smack")); request.setTo(JidCreate.from("receiver@test/Smack")); final IQ result = IQ.createResultIQ(request); assertEquals(IQ.Type.result, result.getType()); assertNotNull(result.getStanzaId()); assertEquals(request.getStanzaId(), result.getStanzaId()); assertEquals(request.getFrom(), result.getTo()); assertEquals(request.getTo(), result.getFrom()); assertEquals("", result.getChildElementXML().toString()); }
/** * Test creating a error response based on an IQ request. * @throws XmppStringprepException */ @Test public void testGeneratingValidErrorResponse() throws XmppStringprepException { final StanzaError.Builder error = StanzaError.getBuilder(StanzaError.Condition.bad_request); final IQ request = new TestIQ(ELEMENT, NAMESPACE); request.setType(IQ.Type.set); request.setFrom(JidCreate.from("sender@test/Smack")); request.setTo(JidCreate.from("receiver@test/Smack")); final IQ result = IQ.createErrorResponse(request, error); assertEquals(IQ.Type.error, result.getType()); assertNotNull(result.getStanzaId()); assertEquals(request.getStanzaId(), result.getStanzaId()); assertEquals(request.getFrom(), result.getTo()); assertEquals(error.build().toXML(), result.getError().toXML()); // TODO this test was never valid // assertEquals(CHILD_ELEMENT, result.getChildElementXML()); }