package com.orangelabs.rcs.chat; import java.io.ByteArrayInputStream; import org.xml.sax.InputSource; import android.test.AndroidTestCase; import com.orangelabs.rcs.core.ims.service.im.chat.event.ConferenceInfoDocument; import com.orangelabs.rcs.core.ims.service.im.chat.event.ConferenceInfoParser; import com.orangelabs.rcs.utils.logger.Logger; public class ConferenceInfoParserTest extends AndroidTestCase { private Logger logger = Logger.getLogger(this.getClass().getName()); private static final String CRLF = "\r\n"; protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } /* * Conference-Info SAMPLE: * <?xml version="1.0" encoding="UTF-8"?> * <conference-info xmlns="urn:ietf:params:xml:ns:conference-info" * entity="sips:conf233@example.com" state="full" version="1"> * <!-- CONFERENCE INFO --> * <conference-description> * <subject>Agenda: This month's goals</subject> * <service-uris><entry> * <uri>http://sharepoint/salesgroup/</uri> <purpose>web-page</purpose> * </entry></service-uris> * <maximum-user-count>50</maximum-user-count> * </conference-description> * * <!-- CONFERENCE STATE --> * <conference-state> <user-count>33</user-count></conference-state> * * <!-- USERS --> * <users> * <!-- USER 1 --> * <user entity="sip:bob@example.com" state="full"> <display-text>Bob Hoskins</display-text> * <!-- ENDPOINTS --> * <endpoint entity="sip:bob@pc33.example.com"> <display-text>Bob's Laptop</display-text> * <status>disconnected</status> * <disconnection-method>departed</disconnection-method> * <disconnection-info> * <when>2005-03-04T20:00:00Z</when> <reason>bad voice quality</reason> * <by>sip:mike@example.com</by> </disconnection-info> * <!-- MEDIA --> * <media id="1"> <display-text>main audio</display-text> * <type>audio</type> <label>34567</label> <src-id>432424</src-id> * <status>sendrecv</status></media></endpoint> </user> * * <!-- USER 2 --> * <user entity="sip:alice@example.com" state="full"> * <display-text>Alice</display-text> * <!-- ENDPOINTS --> * <endpoint entity="sip:4kfk4j392jsu@example.com;grid=433kj4j3u"> * <status>connected</status> * <joining-method>dialed-out</joining-method> * <joining-info><when>2005-03-04T20:00:00Z</when> * <by>sip:mike@example.com</by></joining-info> * <!-- MEDIA --> <media * id="1"> <display-text>main audio</display-text> <type>audio</type> * <label>34567</label> <src-id>534232</src-id> <status>sendrecv</status> * </media> </endpoint> </user> </users> </conference-info> */ public void testGetConferenceInfo() { StringBuffer sb = new StringBuffer("<?xml version=\"1.08\" encoding=\"UTF-8\"?>"); sb.append(CRLF); sb.append("<conference-info xmlns=\"urn:ietf:params:xml:ns:conference-info\" entity=\"sips:conf233@example.com\" state=\"full\" version=\"1\">"); sb.append(CRLF); sb.append("<conference-description>"); sb.append("<subject>Agenda: This month's goals</subject>"); sb.append("<service-uris>"); sb.append("<entry> <uri>http://sharepoint/salesgroup/</uri> <purpose>web-page</purpose> </entry>"); sb.append("</service-uris> <maximum-user-count>50</maximum-user-count>"); sb.append("</conference-description>"); sb.append(CRLF); sb.append("<conference-state>"); sb.append("<user-count>33</user-count> </conference-state> "); sb.append(CRLF); sb.append("<users>"); sb.append("<user entity=\"sip:bob@example.com\" state=\"full\"> "); sb.append("<display-text>Bob Hoskins</display-text> "); sb.append("<endpoint entity=\"sip:4kfk4j392jsu@example.com;grid=433kj4j3u\"> "); sb.append("<display-text>Bob's Laptop</display-text> "); sb.append("<status>disconnected</status> <disconnection-method>departed</disconnection-method> "); sb.append("<disconnection-info> <when>2005-03-04T20:00:00Z</when> "); sb.append("<by>sip:mike@example.com</by> </disconnection-info> "); sb.append("<media id=\"1\"> <display-text>main audio</display-text> "); sb.append("<type>audio</type> <label>34567</label> <src-id>534232</src-id> "); sb.append("<status>sendrecv</status> </media> </endpoint> </user> "); sb.append(CRLF); sb.append("<user entity=\"sip:alice@example.com\" state=\"full\"> "); sb.append("<display-text>Alice</display-text> "); sb.append("<endpoint entity=\"sip:4kfk4j392jsu@example.com;grid=433kj4j3u\"> "); sb.append("<status>connected</status> <joining-method>dialed-out</joining-method> "); sb.append("<joining-info> <when>2005-03-04T20:00:00Z</when> "); sb.append("<by>sip:mike@example.com</by> </joining-info> "); sb.append("<media id=\"1\"> <display-text>main audio</display-text> "); sb.append("<type>audio</type> <label>34567</label> <src-id>534232</src-id> "); sb.append("<status>sendrecv</status> </media> </endpoint> </user> "); sb.append("</users> </conference-info> "); String xml = sb.toString(); try { InputSource inputso = new InputSource(new ByteArrayInputStream( xml.getBytes())); ConferenceInfoParser parser = new ConferenceInfoParser(inputso); ConferenceInfoDocument confInfoDoc = parser.getConferenceInfo(); if (logger.isActivated()) { logger.info("conference info URI = " + confInfoDoc.getEntity()); logger.info("conference info state = " + confInfoDoc.getState()); logger.info("conference info users = " + confInfoDoc.getUserCount()); } assertEquals(confInfoDoc.getEntity(), "sips:conf233@example.com"); assertEquals(confInfoDoc.getState(), "full"); assertEquals(confInfoDoc.getMaxUserCount(), 50); assertEquals(confInfoDoc.getUserCount(), 33); } catch (Exception e) { fail("no Conference info source parsed"); e.printStackTrace(); } } }