diff options
3 files changed, 7 insertions, 9 deletions
diff --git a/juick-xmpp/src/main/java/com/juick/components/JuickBot.java b/juick-xmpp/src/main/java/com/juick/components/JuickBot.java index a9ee9698..5df24d16 100644 --- a/juick-xmpp/src/main/java/com/juick/components/JuickBot.java +++ b/juick-xmpp/src/main/java/com/juick/components/JuickBot.java @@ -205,7 +205,7 @@ public class JuickBot implements StanzaListener, AutoCloseable { public boolean incomingMessage(Message msg) { if (msg.getType() != null && msg.getType().equals(Message.Type.ERROR)) { - StanzaError error = msg.getExtension(StanzaError.class); + StanzaError error = msg.getError(); if (error != null && error.getCondition().equals(Condition.RESOURCE_CONSTRAINT)) { // offline query is full, deactivating this jid if (userService.setActiveStatusForJID(msg.getFrom().toEscapedString(), UserService.ActiveStatus.Inactive)) { diff --git a/juick-xmpp/src/main/java/com/juick/components/XMPPServer.java b/juick-xmpp/src/main/java/com/juick/components/XMPPServer.java index cb2bb681..29d57d53 100644 --- a/juick-xmpp/src/main/java/com/juick/components/XMPPServer.java +++ b/juick-xmpp/src/main/java/com/juick/components/XMPPServer.java @@ -372,7 +372,7 @@ public class XMPPServer implements ConnectionListener, AutoCloseable { return !Arrays.asList(brokenSSLhosts).contains(connection.to.toEscapedString()); } - protected Stanza parse(String xml) { + public Stanza parse(String xml) { try { Unmarshaller unmarshaller = session.createUnmarshaller(); return (Stanza)unmarshaller.unmarshal(new StringReader(xml)); diff --git a/juick-xmpp/src/test/java/com/juick/xmpp/server/XMPPServerTests.java b/juick-xmpp/src/test/java/com/juick/xmpp/server/XMPPServerTests.java index fde88787..ccc4f1d4 100644 --- a/juick-xmpp/src/test/java/com/juick/xmpp/server/XMPPServerTests.java +++ b/juick-xmpp/src/test/java/com/juick/xmpp/server/XMPPServerTests.java @@ -19,6 +19,7 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import rocks.xmpp.addr.Jid; import rocks.xmpp.core.stanza.model.Message; +import rocks.xmpp.core.stanza.model.Stanza; import rocks.xmpp.core.stanza.model.StanzaError; import rocks.xmpp.core.stanza.model.errors.Condition; import rocks.xmpp.core.stanza.model.server.ServerMessage; @@ -63,13 +64,10 @@ public class XMPPServerTests { } @Test public void botIsUpAndProcessingResourceConstraints() { - StanzaError stanzaError = new StanzaError(StanzaError.Type.CANCEL, Condition.RESOURCE_CONSTRAINT); - Message msg = ServerMessage.from(new Message()); - msg.setType(Message.Type.ERROR); - msg.addExtension(stanzaError); - Jid from = Jid.of("localhost"); - msg.setFrom(from); + String xmlMessage = "<message xmlns=\"jabber:server\" from=\"renha@bitcheese.net\" to=\"juick@juick.com/Juick\" type=\"error\"><body>Reply by @LexX</body><juick xmlns=\"http://juick.com/message\" mid=\"2885759\" privacy=\"1\" replyto=\"0\" rid=\"8\" ts=\"2017-10-10 07:41:10\"><body>Похоже нынче можно публично заявлять о своем веганстве. </body><user xmlns=\"http://juick.com/user\" uname=\"LexX\" uid=\"6340\"></user></juick><error type=\"wait\"><resource-constraint xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"></resource-constraint><text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">Your contact offline message queue is full. The message has been discarded.</text></error></message>"; + Jid from = Jid.of("renha@bitcheese.net"); when(userService.setActiveStatusForJID(from.toEscapedString(), UserService.ActiveStatus.Inactive)).thenReturn(true); - bot.incomingMessage(msg); + Stanza msg = server.parse(xmlMessage); + bot.incomingMessage((ServerMessage)msg); } } |