Mozilla/mozilla/embedding/qa/testembed/nsihttpchanneltests.cpp
depstein%netscape.com c9f4a3195f Added nsIHttpChannel->GetResponseText test. Not part of the build.
git-svn-id: svn://10.0.0.236/trunk@135925 18797224-902f-48f8-a5cc-f745e15eee43
2003-01-07 04:26:49 +00:00

302 lines
9.5 KiB
C++

// nsIHttpChannelTests.cpp : implementation file
//
#include "stdafx.h"
#include "testembed.h"
#include "nsIHttpChannelTests.h"
#include "BrowserImpl.h"
#include "BrowserFrm.h"
#include "UrlDialog.h"
#include "ProfileMgr.h"
#include "ProfilesDlg.h"
#include "QaUtils.h"
#include "Tests.h"
#include "nsichanneltests.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// nsIHttpChannelTests
CnsIHttpChannelTests::CnsIHttpChannelTests(nsIWebBrowser *mWebBrowser,
CBrowserImpl *mpBrowserImpl)
{
qaWebBrowser = mWebBrowser;
qaBrowserImpl = mpBrowserImpl;
}
CnsIHttpChannelTests::~CnsIHttpChannelTests()
{
}
/////////////////////////////////////////////////////////////////////////////
// CnsIHttpChannelTests message handlers
nsIHttpChannel * CnsIHttpChannelTests::GetHttpChannelObject(nsCAutoString theSpec)
{
NS_NewURI(getter_AddRefs(theURI), theSpec);
if (!theURI)
QAOutput("Didn't get URI object. Test failed.", 2);
NS_NewChannel(getter_AddRefs(theChannel), theURI, nsnull, nsnull);
if (!theChannel)
QAOutput("Didn't get Channel object. GetChannelObject Test failed.", 2);
theHttpChannel = do_QueryInterface(theChannel);
if (!theHttpChannel)
QAOutput("Didn't get httpChannel object. Test failed.", 2);
return theHttpChannel;
}
void CnsIHttpChannelTests::OnStartTests(UINT nMenuID)
{
theSpec = "http://www.netscape.com";
theHttpChannel = GetHttpChannelObject(theSpec);
if (!theHttpChannel)
{
QAOutput("Didn't get nsIHttpChannel object. Test not run.", 1);
return;
}
switch(nMenuID)
{
case ID_INTERFACES_NSIHTTPCHANNEL_RUNALLTESTS :
RunAllTests();
break ;
case ID_INTERFACES_NSIHTTPCHANNEL_SETREQUESTMETHOD :
SetRequestMethodTest(theHttpChannel, 2);
break ;
case ID_INTERFACES_NSIHTTPCHANNEL_GETREQUESTMETHOD :
GetRequestMethodTest(theHttpChannel, 2);
break ;
case ID_INTERFACES_NSIHTTPCHANNEL_SETREFERRER :
SetReferrerTest(theHttpChannel, 2);
break ;
case ID_INTERFACES_NSIHTTPCHANNEL_GETREFERRER :
GetReferrerTest(theHttpChannel, 2);
break ;
case ID_INTERFACES_NSIHTTPCHANNEL_SETREQUESTHEADER :
SetRequestHeaderTest(theHttpChannel, 2);
break ;
case ID_INTERFACES_NSIHTTPCHANNEL_GETREQUESTHEADER :
GetRequestHeaderTest(theHttpChannel, 2);
break ;
case ID_INTERFACES_NSIHTTPCHANNEL_VISITREQUESTHEADERS :
VisitRequestHeadersTest(theHttpChannel, 2);
break;
case ID_INTERFACES_NSIHTTPCHANNEL_SETALLOWPIPELINING :
SetAllowPipeliningTest(theHttpChannel, PR_FALSE, 2);
break;
case ID_INTERFACES_NSIHTTPCHANNEL_GETALLOWPIPELINING :
GetAllowPipeliningTest(theHttpChannel, 2);
break;
case ID_INTERFACES_NSIHTTPCHANNEL_SETREDIRECTIONLIMIT :
SetRedirectionLimitTest(theHttpChannel, 100, 2);
break;
case ID_INTERFACES_NSIHTTPCHANNEL_GETREDIRECTIONLIMIT :
GetRedirectionLimitTest(theHttpChannel, 2);
break;
// response methods
case ID_INTERFACES_NSIHTTPCHANNEL_GETRESPONSESTATUS :
GetResponseStatusTest(theHttpChannel, 2);
break;
case ID_INTERFACES_NSIHTTPCHANNEL_GETRESPONSESTATUSTEXT :
GetResponseStatusTextTest(theHttpChannel, 2);
break;
}
}
void CnsIHttpChannelTests::RunAllTests()
{
theSpec = "http://www.netscape.com";
theHttpChannel = GetHttpChannelObject(theSpec);
if (!theHttpChannel)
{
QAOutput("Didn't get nsIHttpChannel object. RunAllTests not run.", 1);
return;
}
SetRequestMethodTest(theHttpChannel, 1);
GetRequestMethodTest(theHttpChannel, 1);
SetReferrerTest(theHttpChannel, 1);
GetReferrerTest(theHttpChannel, 1);
SetRequestHeaderTest(theHttpChannel, 1);
GetRequestHeaderTest(theHttpChannel, 1);
VisitRequestHeadersTest(theHttpChannel, 1);
SetAllowPipeliningTest(theHttpChannel, PR_FALSE, 1);
SetAllowPipeliningTest(theHttpChannel, PR_TRUE, 1);
GetAllowPipeliningTest(theHttpChannel, 1);
SetRedirectionLimitTest(theHttpChannel, 0, 1);
SetRedirectionLimitTest(theHttpChannel, 5, 1);
GetRedirectionLimitTest(theHttpChannel, 1);
// see nsIRequestObserver->OnStartRequest for Successful response tests
// we're running response tests here to verify they fail when called here.
GetResponseStatusTest(theHttpChannel, 1);
GetResponseStatusTextTest(theHttpChannel, 1);
QAOutput("\n");
}
void CnsIHttpChannelTests::SetRequestMethodTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
// SetRequestMethod
// try "GET", "PUT", "HEAD", or "POST"
rv = theHttpChannel->SetRequestMethod(NS_LITERAL_CSTRING("POST"));
RvTestResult(rv, "SetRequestMethod()", displayMode);
}
void CnsIHttpChannelTests::GetRequestMethodTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
// GetRequestMethod
nsCAutoString method;
rv = theHttpChannel->GetRequestMethod(method);
RvTestResult(rv, "GetRequestMethod()", displayMode);
// if (method.Equals("POST")
FormatAndPrintOutput("GetRequestMethod method = ", method, displayMode);
}
void CnsIHttpChannelTests::SetReferrerTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
// SetReferrer
nsCAutoString theSpec;
theSpec = "http://www.cisco.com";
NS_NewURI(getter_AddRefs(theURI), theSpec);
if (!theURI)
QAOutput("Didn't get URI object. Test failed.", 2);
rv = theHttpChannel->SetReferrer(theURI);
RvTestResult(rv, "SetReferrer()", displayMode);
}
void CnsIHttpChannelTests::GetReferrerTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
// GetReferrer
nsCAutoString theSpec;
rv = theHttpChannel->GetReferrer(getter_AddRefs(theURI));
RvTestResult(rv, "GetReferrer()", displayMode);
if (!theURI)
QAOutput("Didn't get nsIURI object. Test failed.", displayMode);
else {
theURI->GetSpec(theSpec);
FormatAndPrintOutput("GetReferrerTest uri = ", theSpec, displayMode);
}
}
void CnsIHttpChannelTests::SetRequestHeaderTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
// SetRequestHeader
// try {"Content-Type","text/xml"}, {"Content-Length", 10000}, and
// {"Accept"), NS_LITERAL_CSTRING("text/xml,application/xml,application/xhtml+xml,*/*;q=0.1"),
const char *headerVal = "TheCookie";
rv = theHttpChannel->SetRequestHeader(NS_LITERAL_CSTRING("Cookie"),
nsDependentCString(headerVal),
PR_FALSE);
RvTestResult(rv, "SetRequestHeader()", displayMode);
}
void CnsIHttpChannelTests::GetRequestHeaderTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
// GetRequestHeader
nsCAutoString header;
// could be set to "referrer"
rv = theHttpChannel->GetRequestHeader(NS_LITERAL_CSTRING("Cookie"), header);
RvTestResult(rv, "GetRequestHeader()", displayMode);
FormatAndPrintOutput("GetRequestHeader type = ", header, displayMode);
}
void CnsIHttpChannelTests::VisitRequestHeadersTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
// visitRequestHeaders()
nsCOMPtr<nsIHttpHeaderVisitor> theVisitor;
if (!theVisitor)
QAOutput("Didn't get nsIHttpHeaderVisitor object. Test failed.", displayMode);
rv = theHttpChannel->VisitRequestHeaders(theVisitor);
RvTestResult(rv, "VisitRequestHeaders()", displayMode);
}
void CnsIHttpChannelTests::SetAllowPipeliningTest(nsIHttpChannel *theHttpChannel,
PRBool mAllowPipelining,
PRInt16 displayMode)
{
rv = theHttpChannel->SetAllowPipelining(mAllowPipelining);
RvTestResult(rv, "SetAllowPipelining()", displayMode);
FormatAndPrintOutput("SetAllowPipelining value = ", mAllowPipelining, displayMode);
rv = theHttpChannel->GetAllowPipelining(&mAllowPipelining);
FormatAndPrintOutput("GetAllowPipelining value = ", mAllowPipelining, displayMode);
}
void CnsIHttpChannelTests::GetAllowPipeliningTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
PRBool mAllowPipelining;
rv = theHttpChannel->GetAllowPipelining(&mAllowPipelining);
RvTestResult(rv, "GetAllowPipelining()", displayMode);
FormatAndPrintOutput("GetAllowPipelining value = ", mAllowPipelining, displayMode);
}
void CnsIHttpChannelTests::SetRedirectionLimitTest(nsIHttpChannel *theHttpChannel,
PRUint32 mRedirectionLimit,
PRInt16 displayMode)
{
rv = theHttpChannel->SetRedirectionLimit(mRedirectionLimit);
RvTestResult(rv, "SetRedirectionLimit()", displayMode);
}
void CnsIHttpChannelTests::GetRedirectionLimitTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
PRUint32 mRedirectionLimit;
rv = theHttpChannel->GetRedirectionLimit(&mRedirectionLimit);
RvTestResult(rv, "GetRedirectionLimit()", displayMode);
FormatAndPrintOutput("GetRedirectionLimit value = ", mRedirectionLimit, displayMode);
}
// Response tests
void CnsIHttpChannelTests::CallResponseTests(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
GetResponseStatusTest(theHttpChannel, displayMode);
GetResponseStatusTextTest(theHttpChannel, displayMode);
}
void CnsIHttpChannelTests::GetResponseStatusTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
PRUint32 mResponseStatus;
rv = theHttpChannel->GetResponseStatus(&mResponseStatus);
RvTestResult(rv, "GetResponseStatus()", displayMode);
FormatAndPrintOutput("GetResponseStatus value = ", mResponseStatus, displayMode);
}
void CnsIHttpChannelTests::GetResponseStatusTextTest(nsIHttpChannel *theHttpChannel,
PRInt16 displayMode)
{
nsCAutoString mText;
rv = theHttpChannel->GetResponseStatusText(mText);
RvTestResult(rv, "GetResponseStatusText()", displayMode);
FormatAndPrintOutput("GetResponseStatusText = ", mText, displayMode);
}