// // Copyright (C) 2004 SIPfoundry Inc. // Licensed by SIPfoundry under the LGPL license. // // Copyright (C) 2004 Pingtel Corp. // Licensed to SIPfoundry under a Contributor Agreement. // ////////////////////////////////////////////////////////////////////////////// #include #include #include #include "os/OsTime.h" #include "os/OsDateTime.h" #include "CallStateEventBuilder_XML.h" // Note: these tests will fail if PRETTYPRINT_EVENTS is defined in CallStateEventBuilder_XML.cpp const OsDateTime testBaseTime(2004, // year 11, // month (zero based) 15, // day 11, // hour 42, // minute 41, // second 10000 // microsecond ); class CallStateEventBuilder_XMLTest : public CppUnit::TestCase { CPPUNIT_TEST_SUITE(CallStateEventBuilder_XMLTest); CPPUNIT_TEST(testInitial); CPPUNIT_TEST(testRequest); CPPUNIT_TEST(testSetup); CPPUNIT_TEST(testFailure); CPPUNIT_TEST(testEnd); CPPUNIT_TEST_SUITE_END(); public: OsTime testTime; void setUp() { testBaseTime.cvtToTimeSinceEpoch(testTime); } void incrementTime(int milliseconds) { OsTime timeStep(0,1000*milliseconds); testTime += timeStep; } bool expect(const UtlString& actual, const char* expected) { bool matches = 0==actual.compareTo(expected); if (!matches) { printf("\n" "Expected: %s" "Actual : %s", expected, actual.data() ); } return matches; } void testInitial() { UtlString event; CallStateEventBuilder_XML builder("observer.example.com"); builder.observerEvent(0, testTime, CallStateEventBuilder::ObserverReset, "testInitial"); CPPUNIT_ASSERT(builder.finishElement(event)); CPPUNIT_ASSERT(expect(event,"observer.example.com02004-12-15T11:42:41.010Z101testInitialhttp://www.sipfoundry.org/sipX/schema/xml/cse-01-00\n")); builder.finishElement(event); CPPUNIT_ASSERT(event.isNull()); } void testRequest() { UtlString event; incrementTime(1); CallStateEventBuilder_XML builder("observer.example.com"); builder.observerEvent(0, testTime, CallStateEventBuilder::ObserverReset, "testRequest"); CPPUNIT_ASSERT(builder.finishElement(event)); CPPUNIT_ASSERT(expect(event,"observer.example.com02004-12-15T11:42:41.011Z101testRequesthttp://www.sipfoundry.org/sipX/schema/xml/cse-01-00\n")); incrementTime(1); builder.callRequestEvent(1, testTime, "Contact "); CPPUNIT_ASSERT(!builder.finishElement(event)); UtlString callId("08799710-9147-486B-A28D-FFDEB031106B@10.90.10.98"); UtlString fromTag("8633744"); UtlString toTag; UtlString fromField("\"Éê½­ÌÎ\";tag=8633744"); UtlString toField("\"Joe Caller\""); builder.addCallData(1,callId, fromTag, toTag, fromField, toField); CPPUNIT_ASSERT(!builder.finishElement(event)); UtlString viaField("SIP/2.0/UDP 10.1.30.248:7003"); builder.addEventVia(viaField); CPPUNIT_ASSERT(!builder.finishElement(event)); builder.completeCallEvent(); CPPUNIT_ASSERT(builder.finishElement(event)); CPPUNIT_ASSERT(expect(event,"observer.example.com12004-12-15T11:42:41.012Z08799710-9147-486B-A28D-FFDEB031106B@10.90.10.988633744"Éê½­ÌÎ"<sip:1002@sip.net>;tag=8633744"Joe Caller"<sip:jcaller@rhe-sipx.example.com>Contact <sip:requestor@sip.net>SIP/2.0/UDP 10.1.30.248:7003\n")); CPPUNIT_ASSERT(!builder.finishElement(event)); CPPUNIT_ASSERT(event.isNull()); } void testSetup() { UtlString event; incrementTime(3); CallStateEventBuilder_XML builder("observer.example.com"); builder.observerEvent(0, testTime, CallStateEventBuilder::ObserverReset, "testSetup"); CPPUNIT_ASSERT(builder.finishElement(event)); CPPUNIT_ASSERT(expect(event,"observer.example.com02004-12-15T11:42:41.013Z101testSetuphttp://www.sipfoundry.org/sipX/schema/xml/cse-01-00\n")); incrementTime(1); builder.callSetupEvent(1, testTime, "Contact "); CPPUNIT_ASSERT(!builder.finishElement(event)); UtlString callId("08799710-9147-A28D-486B-FFDEB031106B@10.90.10.98"); UtlString fromTag("3744863"); UtlString toTag("19b8e5bK3a"); UtlString fromField("\"Éê½­ÌÎ\";tag=3744863"); UtlString toField("\"Joe Caller\";tag=19b8e5bK3a"); builder.addCallData(2,callId, fromTag, toTag, fromField, toField); CPPUNIT_ASSERT(!builder.finishElement(event)); UtlString viaField("SIP/2.0/UDP 10.1.30.248:7004"); builder.addEventVia(viaField); CPPUNIT_ASSERT(!builder.finishElement(event)); builder.completeCallEvent(); CPPUNIT_ASSERT(builder.finishElement(event)); CPPUNIT_ASSERT(expect(event,"observer.example.com12004-12-15T11:42:41.014Z08799710-9147-A28D-486B-FFDEB031106B@10.90.10.98374486319b8e5bK3a"Éê½­ÌÎ"<sip:1002@sip.net>;tag=3744863"Joe Caller"<sip:jcaller@rhe-sipx.example.com>;tag=19b8e5bK3aContact <sip:responder@sip.net>SIP/2.0/UDP 10.1.30.248:7004\n")); CPPUNIT_ASSERT(!builder.finishElement(event)); CPPUNIT_ASSERT(event.isNull()); } void testFailure() { UtlString event; incrementTime(5); CallStateEventBuilder_XML builder("observer.example.com"); builder.observerEvent(0, testTime, CallStateEventBuilder::ObserverReset, "testFailure"); CPPUNIT_ASSERT(builder.finishElement(event)); CPPUNIT_ASSERT(expect(event,"observer.example.com02004-12-15T11:42:41.015Z101testFailurehttp://www.sipfoundry.org/sipX/schema/xml/cse-01-00\n")); incrementTime(1); builder.callFailureEvent(1, testTime, 403, "Forbidden "); CPPUNIT_ASSERT(!builder.finishElement(event)); UtlString callId("9147-08799710-A28D-486B-FFDEB031106B@10.90.10.98"); UtlString fromTag("7448633"); UtlString toTag("b8e5bK3a19"); UtlString fromField("\"Éê½­ÌÎ\";tag=7448633"); UtlString toField("\"Joe Caller\";tag=b8e5bK3a19"); builder.addCallData(3,callId, fromTag, toTag, fromField, toField); CPPUNIT_ASSERT(!builder.finishElement(event)); UtlString viaField("SIP/2.0/UDP 10.1.30.248:7005"); builder.addEventVia(viaField); CPPUNIT_ASSERT(!builder.finishElement(event)); builder.completeCallEvent(); CPPUNIT_ASSERT(builder.finishElement(event)); CPPUNIT_ASSERT(expect(event,"observer.example.com12004-12-15T11:42:41.016Z9147-08799710-A28D-486B-FFDEB031106B@10.90.10.987448633b8e5bK3a19"Éê½­ÌÎ"<sip:1002@sip.net>;tag=7448633"Joe Caller"<sip:jcaller@rhe-sipx.example.com>;tag=b8e5bK3a19403Forbidden <dummy>SIP/2.0/UDP 10.1.30.248:7005\n")); CPPUNIT_ASSERT(!builder.finishElement(event)); CPPUNIT_ASSERT(event.isNull()); } void testEnd() { UtlString event; incrementTime(7); CallStateEventBuilder_XML builder("observer.example.com"); builder.observerEvent(0, testTime, CallStateEventBuilder::ObserverReset, "testEnd"); CPPUNIT_ASSERT(builder.finishElement(event)); CPPUNIT_ASSERT(expect(event,"observer.example.com02004-12-15T11:42:41.017Z101testEndhttp://www.sipfoundry.org/sipX/schema/xml/cse-01-00\n")); incrementTime(1); builder.callEndEvent(1, testTime); CPPUNIT_ASSERT(!builder.finishElement(event)); UtlString callId("9147-A28D-08799710-486B-FFDEB031106B@10.90.10.98"); UtlString fromTag("3374486"); UtlString toTag("a19b8e5bK3"); UtlString fromField("\"Éê½­ÌÎ\";tag=3374486"); UtlString toField("\"Joe Caller\";tag=a19b8e5bK3"); builder.addCallData(4,callId, fromTag, toTag, fromField, toField); CPPUNIT_ASSERT(!builder.finishElement(event)); UtlString viaField("SIP/2.0/UDP 10.1.30.248:7006"); builder.addEventVia(viaField); CPPUNIT_ASSERT(!builder.finishElement(event)); builder.completeCallEvent(); CPPUNIT_ASSERT(builder.finishElement(event)); CPPUNIT_ASSERT(expect(event,"observer.example.com12004-12-15T11:42:41.018Z9147-A28D-08799710-486B-FFDEB031106B@10.90.10.983374486a19b8e5bK3"Éê½­ÌÎ"<sip:1002@sip.net>;tag=3374486"Joe Caller"<sip:jcaller@rhe-sipx.example.com>;tag=a19b8e5bK3SIP/2.0/UDP 10.1.30.248:7006\n")); CPPUNIT_ASSERT(!builder.finishElement(event)); CPPUNIT_ASSERT(event.isNull()); } }; CPPUNIT_TEST_SUITE_REGISTRATION(CallStateEventBuilder_XMLTest);