void HTTPStreamFactoryTest::testProxy() { HTTPTestServer server; HTTPStreamFactory factory("localhost", server.port()); URI uri("http://www.somehost.com/large"); std::auto_ptr<std::istream> pStr(factory.open(uri)); std::ostringstream ostr; StreamCopier::copyStream(*pStr.get(), ostr); assert (ostr.str() == HTTPTestServer::LARGE_BODY); }
void HTTPStreamFactoryTest::testEmptyPath() { HTTPTestServer server; HTTPStreamFactory factory; URI uri("http://localhost"); uri.setPort(server.port()); std::auto_ptr<std::istream> pStr(factory.open(uri)); std::ostringstream ostr; StreamCopier::copyStream(*pStr.get(), ostr); assert (ostr.str() == HTTPTestServer::SMALL_BODY); }
void HTTPStreamFactoryTest::testRedirect() { HTTPTestServer server; Poco::URIStreamOpener opener; opener.registerStreamFactory("http", new HTTPStreamFactory); URI uri("http://localhost/redirect"); uri.setPort(server.port()); std::auto_ptr<std::istream> pStr(opener.open(uri)); std::ostringstream ostr; StreamCopier::copyStream(*pStr.get(), ostr); assert (ostr.str() == HTTPTestServer::LARGE_BODY); }
void HTTPClientSessionTest::testHead() { HTTPTestServer srv; HTTPClientSession s("localhost", srv.port()); HTTPRequest request(HTTPRequest::HTTP_HEAD, "/large"); s.sendRequest(request); HTTPResponse response; std::istream& rs = s.receiveResponse(response); assert (response.getContentLength() == HTTPTestServer::LARGE_BODY.length()); assert (response.getContentType() == "text/plain"); std::ostringstream ostr; assert (StreamCopier::copyStream(rs, ostr) == 0); }
void HTTPClientSessionTest::testGetSmall() { HTTPTestServer srv; HTTPClientSession s("localhost", srv.port()); HTTPRequest request(HTTPRequest::HTTP_GET, "/small"); s.sendRequest(request); HTTPResponse response; std::istream& rs = s.receiveResponse(response); assert (response.getContentLength() == HTTPTestServer::SMALL_BODY.length()); assert (response.getContentType() == "text/plain"); std::ostringstream ostr; StreamCopier::copyStream(rs, ostr); assert (ostr.str() == HTTPTestServer::SMALL_BODY); }
void HTTPClientSessionTest::testProxy() { HTTPTestServer srv; HTTPClientSession s("www.somehost.com"); s.setProxy("localhost", srv.port()); HTTPRequest request(HTTPRequest::HTTP_GET, "/large"); s.sendRequest(request); HTTPResponse response; std::istream& rs = s.receiveResponse(response); assert (response.getContentLength() == HTTPTestServer::LARGE_BODY.length()); assert (response.getContentType() == "text/plain"); std::ostringstream ostr; StreamCopier::copyStream(rs, ostr); assert (ostr.str() == HTTPTestServer::LARGE_BODY); }
void HTTPClientSessionTest::testPostLargeClose() { HTTPTestServer srv; HTTPClientSession s("localhost", srv.port()); HTTPRequest request(HTTPRequest::HTTP_POST, "/echo"); std::string body(8000, 'x'); s.sendRequest(request) << body; HTTPResponse response; std::istream& rs = s.receiveResponse(response); assert (!response.getChunkedTransferEncoding()); assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH); std::ostringstream ostr; StreamCopier::copyStream(rs, ostr); assert (ostr.str() == body); }
void HTTPClientSessionTest::testPostSmallIdentity() { HTTPTestServer srv; HTTPClientSession s("localhost", srv.port()); HTTPRequest request(HTTPRequest::HTTP_POST, "/echo"); std::string body("this is a random request body\r\n0\r\n"); request.setContentLength((int) body.length()); s.sendRequest(request) << body; HTTPResponse response; std::istream& rs = s.receiveResponse(response); assert (response.getContentLength() == body.length()); std::ostringstream ostr; StreamCopier::copyStream(rs, ostr); assert (ostr.str() == body); }
void HTTPStreamFactoryTest::testError() { HTTPTestServer server; HTTPStreamFactory factory; URI uri("http://localhost/notfound"); uri.setPort(server.port()); try { std::istream* pStr = factory.open(uri); fail("not found - must throw"); } catch (HTTPException& exc) { std::string m = exc.displayText(); } }
void HTTPClientSessionTest::testKeepAlive() { HTTPTestServer srv; HTTPClientSession s("localhost", srv.port()); s.setKeepAlive(true); HTTPRequest request(HTTPRequest::HTTP_HEAD, "/keepAlive", HTTPMessage::HTTP_1_1); s.sendRequest(request); HTTPResponse response; std::istream& rs1 = s.receiveResponse(response); assert (response.getContentLength() == HTTPTestServer::SMALL_BODY.length()); assert (response.getContentType() == "text/plain"); assert (response.getKeepAlive()); std::ostringstream ostr1; assert (StreamCopier::copyStream(rs1, ostr1) == 0); request.setMethod(HTTPRequest::HTTP_GET); request.setURI("/small"); s.sendRequest(request); std::istream& rs2 = s.receiveResponse(response); assert (response.getContentLength() == HTTPTestServer::SMALL_BODY.length()); assert (response.getKeepAlive()); std::ostringstream ostr2; StreamCopier::copyStream(rs2, ostr2); assert (ostr2.str() == HTTPTestServer::SMALL_BODY); request.setMethod(HTTPRequest::HTTP_GET); request.setURI("/large"); s.sendRequest(request); std::istream& rs3 = s.receiveResponse(response); assert (response.getContentLength() == HTTPMessage::UNKNOWN_CONTENT_LENGTH); assert (response.getChunkedTransferEncoding()); assert (response.getKeepAlive()); std::ostringstream ostr3; std::streamsize n = StreamCopier::copyStream(rs3, ostr3); assert (ostr3.str() == HTTPTestServer::LARGE_BODY); request.setMethod(HTTPRequest::HTTP_HEAD); request.setURI("/large"); s.sendRequest(request); std::istream& rs4= s.receiveResponse(response); assert (response.getContentLength() == HTTPTestServer::LARGE_BODY.length()); assert (response.getContentType() == "text/plain"); assert (!response.getKeepAlive()); std::ostringstream ostr4; assert (StreamCopier::copyStream(rs4, ostr4) == 0); }