package com.juick.tests; import static org.junit.Assert.assertEquals; import com.juick.json.MessageSerializer; import com.juick.xmpp.extensions.JuickMessage; import org.json.JSONObject; import org.junit.Test; import com.juick.Message; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.*; import java.text.ParseException; import java.util.Date; public class MessageTests { @Test public void messageParserSerializer() throws ParseException, ParserConfigurationException, IOException, SAXException { Message msg = new Message(); msg.parseTags("test test" + (char) 0xA0 + "2 test3"); assertEquals("First tag must be", "test", msg.Tags.get(0).getName()); assertEquals("Third tag must be", "test3", msg.Tags.get(2).getName()); assertEquals("Count of tags must be", 3, msg.Tags.size()); Date currentDate = new Date(); msg.setDate(currentDate); MessageSerializer serializer = new MessageSerializer(); JSONObject jsonMessage = serializer.serialize(msg); assertEquals("date should be in timestamp field", serializer.getDf().format(currentDate), jsonMessage.getString("timestamp")); JuickMessage xmppMessage = new JuickMessage(msg); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new ByteArrayInputStream(xmppMessage.toString().getBytes("UTF-8"))); Node juickNode = doc.getElementsByTagName("juick").item(0); NamedNodeMap attrs = juickNode.getAttributes(); assertEquals("date should be in ts field", serializer.getDf().format(currentDate), attrs.getNamedItem("ts").getNodeValue()); } }