| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #include "tst_httpparser.h"
- void TST_HttpParser::test()
- {
- testGet();
- testPost();
- testPostWithFiles();
- }
- void TST_HttpParser::testGet()
- {
- QByteArray req(buildGetRequest());
- CWF::HttpParser parser(req);
- QVERIFY2(parser.getCookies().size() == 1, "Should be 1");
- QVERIFY2(parser.getUrl() == "/home", "Should be /home");
- QVERIFY2(parser.getParameter("id").toInt() == 10, "Should be 10");
- QVERIFY2(parser.getParameter("nome") == "Herik", "Should be Herik");
- QVERIFY2(parser.getHttpVersion().endsWith("1.1"), "Should be 1.1");
- QVERIFY2(parser.getMethod() == "GET", "Should be GET");
- QVERIFY2(!parser.isMultiPart(), "Should be not be multiPart");
- req = buildGetRequestWithoutEndMsg();
- QVERIFY2(!CWF::HttpParser(req).isValid(), "Should be false");
- req = buildInvalidRequest();
- QVERIFY2(!CWF::HttpParser(req).isValid(), "Should be false");
- }
- void TST_HttpParser::testPost()
- {
- QByteArray req(buildPostRequest('A'));
- CWF::HttpParser parser(req);
- QVERIFY2(parser.getCookies().size() == 1, "Should be 1");
- QVERIFY2(parser.getUrl() == "/home", "Should be /home");
- QVERIFY2(parser.getParameter("id").toInt() == 10, "Should be 10");
- QVERIFY2(parser.getParameter("nome") == "Herik", "Should be Herik");
- QVERIFY2(parser.getHttpVersion().endsWith("1.1"), "Should be 1.1");
- QVERIFY2(parser.getMethod() == "POST", "Should be POST");
- QVERIFY2(!parser.isMultiPart(), "Should be not be multiPart");
- req = buildPostRequest('B');
- QVERIFY2(CWF::HttpParser(req).getParameter("nome").isEmpty(), "Should be true");
- req = buildPostRequest('C');
- QVERIFY2(CWF::HttpParser(req).getParameter("id").toInt() == 10, "Should be 10");
- req = buildPostRequest('D');
- QVERIFY2(CWF::HttpParser(req).getParameter("id").isEmpty(), "Should be true");
- }
- void TST_HttpParser::testPostWithFiles()
- {
- QByteArray req(buildPostRequestWithFiles());
- CWF::HttpParser parser(req);
- QVERIFY2(parser.getCookies().size() == 2, "Should be 2");
- QVERIFY2(parser.getUrl() == "/savefiles", "Should be savefiles");
- QVERIFY2(parser.getParameter("id") == "", "Should be 10");
- QVERIFY2(parser.getUploadedFiles().size() == 2, "Should be 2");
- QVERIFY2(parser.getHttpVersion().endsWith("1.1"), "Should be 1.1");
- QVERIFY2(parser.getMethod() == "POST", "Should be POST");
- QVERIFY2(parser.isMultiPart(), "Should be be multiPart");
- }
- QByteArray TST_HttpParser::buildGetRequest()
- {
- QByteArray req;
- req = "GET /home?id=10&nome=Herik&x HTTP/1.1\r\n";
- req += "Host: localhost:8080\r\n";
- req += "Connection: keep-alive\r\n";
- req += "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36\r\n";
- req += "Cookie: sessionId=12345678901234567890\r\n\r\n";
- return req;
- }
- QByteArray TST_HttpParser::buildPostRequest(char condition)
- {
- QByteArray req;
- req = "POST /home HTTP/1.1\r\n";
- req += "Host: localhost:8080\r\n";
- req += "Connection: keep-alive\r\n";
- req += "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36\r\n";
- req += "Content-Type: application/x-www-form-urlencoded\r\n";
- req += "Cookie: sessionId=\"12345678901234567890\"\r\n\r\n";
- if(condition == 'A')
- req += "id=10&nome=Herik";
- else if(condition == 'B')
- req += "id=10&nome";
- else if(condition == 'C')
- req += "id=10";
- else if(condition == 'D')
- req += "id";
- return req;
- }
- QByteArray TST_HttpParser::buildPostRequestWithFiles()
- {
- QByteArray req;
- req = "POST /savefiles?id= HTTP/1.1\r\n";
- req += "Host: localhost:8080\r\n";
- req += "Connection: keep-alive\r\n";
- req += "Content-Length: 890\r\nCache-Control: max-age=0\r\n";
- req += "Origin: http://localhost:8080\r\n";
- req += "Upgrade-Insecure-Requests: 1\r\n";
- req += "Cookie: xxx=10; yyy=20\r\n";
- req += "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryRfRRkSFRgWLngq8y\r\n";
- req += "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36\r\n";
- req += "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n";
- req += "Referer: http://localhost:8080/pages/savefiles.html\r\n";
- req += "Accept-Encoding: gzip, deflate, br\r\n";
- req += "Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7\r\n\r\n";
- req += "------WebKitFormBoundaryRfRRkSFRgWLngq8y\r\nContent-Disposition: form-data; name=\"theFile\"; filename=\"test.txt\"\r\nContent-Type: text/plain\r\n\r\naaaaaaaa\n\r\n------WebKitFormBoundaryRfRRkSFRgWLngq8y\r\nContent-Disposition: form-data; name=\"theFile2\"; filename=\"test2.txt\"\r\nContent-Type: text/plain\r\n\r\naaaaaaaa\n\r\n------WebKitFormBoundaryRfRRkSFRgWLngq8y\r\nContent-Disposition: form-data; name=\"theFile3\"; filename=\"\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n------WebKitFormBoundaryRfRRkSFRgWLngq8y\r\nContent-Disposition: form-data; name=\"theFile4\"; filename=\"\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n------WebKitFormBoundaryRfRRkSFRgWLngq8y\r\nContent-Disposition: form-data; name=\"theFile5\"; filename=\"\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n------WebKitFormBoundaryRfRRkSFRgWLngq8y\r\nContent-Disposition: form-data; name=\"moo\"\r\n\r\nSend Files\r\n------WebKitFormBoundaryRfRRkSFRgWLngq8y--\r\n";
- return req;
- }
- QByteArray TST_HttpParser::buildGetRequestWithoutEndMsg()
- {
- QByteArray req;
- req = "GET /home?id=10&nome=Herik HTTP/1.1\r\n";
- req += "Host: localhost:8080\r\n";
- req += "Connection: keep-alive";
- return req;
- }
- QByteArray TST_HttpParser::buildInvalidRequest()
- {
- return "GET HTTP/1.1\r\n\r\n";
- }
|