|
reSIProcate/DialogUsageManager
9694
|
#include "resip/stack/SdpContents.hxx"#include "resip/stack/PlainContents.hxx"#include "resip/stack/SipMessage.hxx"#include "resip/stack/ShutdownMessage.hxx"#include "resip/stack/SipStack.hxx"#include "resip/dum/ClientAuthManager.hxx"#include "resip/dum/ClientInviteSession.hxx"#include "resip/dum/ClientRegistration.hxx"#include "resip/dum/DialogUsageManager.hxx"#include "resip/dum/DumShutdownHandler.hxx"#include "resip/dum/InviteSessionHandler.hxx"#include "resip/dum/RequestValidationHandler.hxx"#include "resip/dum/MasterProfile.hxx"#include "resip/dum/RegistrationHandler.hxx"#include "resip/dum/ServerInviteSession.hxx"#include "resip/dum/ServerOutOfDialogReq.hxx"#include "resip/dum/OutOfDialogHandler.hxx"#include "resip/dum/AppDialog.hxx"#include "resip/dum/AppDialogSet.hxx"#include "rutil/Log.hxx"#include "rutil/Logger.hxx"#include "rutil/Random.hxx"#include "rutil/WinLeakCheck.hxx"#include <sstream>#include <time.h>
Go to the source code of this file.
Classes | |
| class | TestInviteSessionHandler |
Defines | |
| #define | RESIPROCATE_SUBSYSTEM Subsystem::TEST |
Functions | |
| int | main (int argc, char **argv) |
| #define RESIPROCATE_SUBSYSTEM Subsystem::TEST |
Definition at line 28 of file testRequestValidationHandler.cxx.
| int main | ( | int | argc, |
| char ** | argv | ||
| ) |
Definition at line 236 of file testRequestValidationHandler.cxx.
References resip::DialogUsageManager::addTransport(), resip::Log::Cout, resip::Data::data(), resip::Log::Debug, resip::DialogUsageManager::getMasterProfile(), h_RequestLine, resip::Log::initialize(), resip::DialogUsageManager::makeOutOfDialogRequest(), resip::SipStack::process(), resip::DialogUsageManager::process(), resip::DialogUsageManager::send(), resip::DialogUsageManager::setClientAuthManager(), resip::DialogUsageManager::setInviteSessionHandler(), resip::DialogUsageManager::setMasterProfile(), resip::DialogUsageManager::setRequestValidationHandler(), resip::Data::size(), resip::TCP, type, and resip::UDP.
{
Log::initialize(Log::Cout, resip::Log::Debug, argv[0]);
NameAddr uacAor("sip:127.0.0.1:17298");
NameAddr uasAor("sip:127.0.0.1:17299");
SdpContents* dummySdp;
HeaderFieldValue* hfv;
Data* txt;
txt = new Data("v=0\r\n"
"o=1900 369696545 369696545 IN IP4 192.168.2.15\r\n"
"s=X-Lite\r\n"
"c=IN IP4 192.168.2.15\r\n"
"t=0 0\r\n"
"m=audio 8000 RTP/AVP 8 3 98 97 101\r\n"
"a=rtpmap:8 pcma/8000\r\n"
"a=rtpmap:3 gsm/8000\r\n"
"a=rtpmap:98 iLBC\r\n"
"a=rtpmap:97 speex/8000\r\n"
"a=rtpmap:101 telephone-event/8000\r\n"
"a=fmtp:101 0-15\r\n");
hfv = new HeaderFieldValue(txt->data(), (unsigned int)txt->size());
Mime type("application", "sdp");
dummySdp = new SdpContents(*hfv, type);
//set up UAC
SipStack stackUac;
DialogUsageManager* dumUac = new DialogUsageManager(stackUac);
dumUac->addTransport(UDP, 17298);
dumUac->addTransport(TCP, 17298);
SharedPtr<MasterProfile> uacMasterProfile(new MasterProfile);
auto_ptr<ClientAuthManager> uacAuth(new ClientAuthManager);
dumUac->setMasterProfile(uacMasterProfile);
dumUac->setClientAuthManager(uacAuth);
TestInviteSessionHandler uac("UAC");
dumUac->setInviteSessionHandler(&uac);
dumUac->setRequestValidationHandler(&uac);
dumUac->getMasterProfile()->setDefaultFrom(uacAor);
//set up UAS
SipStack stackUas;
DialogUsageManager* dumUas = new DialogUsageManager(stackUas);
dumUas->addTransport(UDP, 17299);
dumUas->addTransport(TCP, 17299);
SharedPtr<MasterProfile> uasMasterProfile(new MasterProfile);
std::auto_ptr<ClientAuthManager> uasAuth(new ClientAuthManager);
dumUas->setMasterProfile(uasMasterProfile);
dumUas->setClientAuthManager(uasAuth);
dumUas->getMasterProfile()->setDefaultFrom(uasAor);
TestInviteSessionHandler uas("UAS");
dumUas->setInviteSessionHandler(&uas);
dumUas->setRequestValidationHandler(&uas);
// First test: invalid method
dumUac->send(dumUac->makeOutOfDialogRequest(uasAor, MESSAGE));
// Second test: invalid scheme
SharedPtr<SipMessage> invalidSchemeMsg = dumUac->makeOutOfDialogRequest(uasAor, OPTIONS);
invalidSchemeMsg->header(h_RequestLine).uri().scheme() = "tel";
dumUac->send(invalidSchemeMsg);
// !fjoanis! TODO: Add more tests
assert(uas.mInvalidMethod == 0);
assert(uas.mInvalidScheme == 0);
assert(uas.mInvalidRequiredOptions == 0);
assert(uas.m100RelNotSupportedByRemote == 0);
assert(uas.mInvalidContentType == 0);
assert(uas.mInvalidContentEncoding == 0);
assert(uas.mInvalidContentLanguage == 0);
assert(uas.mInvalidAccept == 0);
assert(uac.mInvalidMethod == 0);
assert(uac.mInvalidScheme == 0);
assert(uac.mInvalidRequiredOptions == 0);
assert(uac.m100RelNotSupportedByRemote == 0);
assert(uac.mInvalidContentType == 0);
assert(uac.mInvalidContentEncoding == 0);
assert(uac.mInvalidContentLanguage == 0);
assert(uac.mInvalidAccept == 0);
// Now give them some cycles
for(int i=0;i<10;i++)
{
{
stackUac.process(50);
while(dumUac->process());
}
{
stackUas.process(50);
while(dumUas->process());
}
}
assert(uas.mInvalidMethod == 1);
assert(uas.mInvalidScheme == 1);
assert(uas.mInvalidRequiredOptions == 0);
assert(uas.m100RelNotSupportedByRemote == 0);
assert(uas.mInvalidContentType == 0);
assert(uas.mInvalidContentEncoding == 0);
assert(uas.mInvalidContentLanguage == 0);
assert(uas.mInvalidAccept == 0);
assert(uac.mInvalidMethod == 0);
assert(uac.mInvalidScheme == 0);
assert(uac.mInvalidRequiredOptions == 0);
assert(uac.m100RelNotSupportedByRemote == 0);
assert(uac.mInvalidContentType == 0);
assert(uac.mInvalidContentEncoding == 0);
assert(uac.mInvalidContentLanguage == 0);
assert(uac.mInvalidAccept == 0);
delete dumUac;
delete dumUas;
delete dummySdp;
delete txt;
delete hfv;
cout << "!!!!!!!!!!!!!!!!!! Successful !!!!!!!!!! " << endl;
#if defined(WIN32) && defined(_DEBUG) && defined(LEAK_CHECK)
}
#endif
}

1.7.5.1