increased chunk size

Dependencies:   HTTPClient-SSL

Fork of MTS-Socket by MultiTech

Committer:
Vanger
Date:
Wed Mar 11 19:07:13 2015 +0000
Revision:
36:b6e47b4cdb6d
Parent:
35:c85bea9cb713
Fixed basic-auth test to work properly and to allow easy manipulation for testing different names and passwords.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Vanger 35:c85bea9cb713 1 #ifndef TESTHTTPS_H
Vanger 35:c85bea9cb713 2 #define TESTHTTPS_H
Vanger 35:c85bea9cb713 3
Vanger 35:c85bea9cb713 4 #include "mtsas.h"
Vanger 35:c85bea9cb713 5 #include <string>
Vanger 35:c85bea9cb713 6 #include "httpbinCert.h"
Vanger 35:c85bea9cb713 7
Vanger 35:c85bea9cb713 8 using namespace mts;
Vanger 35:c85bea9cb713 9
Vanger 35:c85bea9cb713 10 class TestHTTPS : public TestCollection
Vanger 35:c85bea9cb713 11 {
Vanger 35:c85bea9cb713 12 public:
Vanger 35:c85bea9cb713 13 TestHTTPS();
Vanger 35:c85bea9cb713 14 virtual void run();
Vanger 35:c85bea9cb713 15
Vanger 35:c85bea9cb713 16 private:
Vanger 35:c85bea9cb713 17 MTSSerialFlowControl* io;
Vanger 35:c85bea9cb713 18 Cellular* radio;
Vanger 35:c85bea9cb713 19 HTTPClient* http;
Vanger 35:c85bea9cb713 20 char rbuf[1024];
Vanger 35:c85bea9cb713 21 HTTPMap* send;
Vanger 35:c85bea9cb713 22 HTTPText* receive;
Vanger 35:c85bea9cb713 23 };
Vanger 35:c85bea9cb713 24
Vanger 35:c85bea9cb713 25 TestHTTPS::TestHTTPS() : TestCollection("TestHTTPS") {}
Vanger 35:c85bea9cb713 26
Vanger 35:c85bea9cb713 27 void TestHTTPS::run() {
Vanger 35:c85bea9cb713 28
Vanger 35:c85bea9cb713 29
Vanger 35:c85bea9cb713 30 string url;
Vanger 35:c85bea9cb713 31 string secure_url = "https://httpbin.org:443";
Vanger 35:c85bea9cb713 32 string url_get = "/get";
Vanger 35:c85bea9cb713 33 string url_put = "/put";
Vanger 35:c85bea9cb713 34 string url_post = "/post";
Vanger 35:c85bea9cb713 35 string url_del = "/delete";
Vanger 35:c85bea9cb713 36 string url_stream = "/stream/20";
Vanger 36:b6e47b4cdb6d 37 string url_auth = "/basic-auth";
Vanger 35:c85bea9cb713 38
Vanger 35:c85bea9cb713 39 MTSLog::setLogLevel(MTSLog::TRACE_LEVEL);
Vanger 35:c85bea9cb713 40
Vanger 35:c85bea9cb713 41 Test::start("Setup");
Vanger 35:c85bea9cb713 42 io = new MTSSerialFlowControl(D8, D2, D3, D6);
Vanger 35:c85bea9cb713 43 io->baud(115200);
Vanger 35:c85bea9cb713 44 radio = CellularFactory::create(io);
Vanger 35:c85bea9cb713 45 if (! radio) {
Vanger 35:c85bea9cb713 46 Test::assertTrue(false);
Vanger 35:c85bea9cb713 47 }
Vanger 35:c85bea9cb713 48 radio->configureSignals(D4, D7, RESET);
Vanger 35:c85bea9cb713 49 Transport::setTransport(radio);
Vanger 35:c85bea9cb713 50
Vanger 35:c85bea9cb713 51 http = new HTTPClient();
Vanger 35:c85bea9cb713 52 send = new HTTPMap();
Vanger 35:c85bea9cb713 53 receive = new HTTPText(rbuf);
Vanger 35:c85bea9cb713 54
Vanger 35:c85bea9cb713 55 for (int i = 0; i < 10; i++) {
Vanger 35:c85bea9cb713 56 if (i >= 10) {
Vanger 35:c85bea9cb713 57 Test::assertTrue(false);
Vanger 35:c85bea9cb713 58 }
Vanger 35:c85bea9cb713 59 if (radio->setApn(APN) == MTS_SUCCESS) {
Vanger 35:c85bea9cb713 60 break;
Vanger 35:c85bea9cb713 61 } else {
Vanger 35:c85bea9cb713 62 wait(1);
Vanger 35:c85bea9cb713 63 }
Vanger 35:c85bea9cb713 64 }
Vanger 35:c85bea9cb713 65 for (int i = 0; i < 3; i++) {
Vanger 35:c85bea9cb713 66 if (i >= 3) {
Vanger 35:c85bea9cb713 67 Test::assertTrue(false);
Vanger 35:c85bea9cb713 68 }
Vanger 35:c85bea9cb713 69 if (radio->connect()) {
Vanger 35:c85bea9cb713 70 break;
Vanger 35:c85bea9cb713 71 } else {
Vanger 35:c85bea9cb713 72 wait(1);
Vanger 35:c85bea9cb713 73 }
Vanger 35:c85bea9cb713 74 }
Vanger 35:c85bea9cb713 75
Vanger 35:c85bea9cb713 76 for (int i = 0; i < 5; i++) {
Vanger 35:c85bea9cb713 77 if (i >= 5) {
Vanger 35:c85bea9cb713 78 Test::assertTrue(false);
Vanger 35:c85bea9cb713 79 }
Vanger 35:c85bea9cb713 80 if (radio->ping()) {
Vanger 35:c85bea9cb713 81 break;
Vanger 35:c85bea9cb713 82 } else {
Vanger 35:c85bea9cb713 83 wait(1);
Vanger 35:c85bea9cb713 84 }
Vanger 35:c85bea9cb713 85 }
Vanger 35:c85bea9cb713 86
Vanger 36:b6e47b4cdb6d 87 if (http->addRootCACertificate(CERTIFICATE) != HTTP_OK) {
Vanger 35:c85bea9cb713 88 Test::assertTrue(false);
Vanger 35:c85bea9cb713 89 }
Vanger 36:b6e47b4cdb6d 90 http->setPeerVerification(VERIFY_PEER);
Vanger 35:c85bea9cb713 91
Vanger 35:c85bea9cb713 92 Test::end();
Vanger 35:c85bea9cb713 93
Vanger 35:c85bea9cb713 94 url = secure_url + url_get;
Vanger 35:c85bea9cb713 95 Test::start("HTTPS GET");
Vanger 35:c85bea9cb713 96 Test::assertTrue(http->get(url.c_str(), receive, 10000) == HTTP_OK);
Vanger 35:c85bea9cb713 97 Test::end();
Vanger 35:c85bea9cb713 98
Vanger 35:c85bea9cb713 99 url = secure_url + url_put;
Vanger 35:c85bea9cb713 100 Test::start("HTTPS PUT");
Vanger 35:c85bea9cb713 101 send->put("testing", "put");
Vanger 35:c85bea9cb713 102 Test::assertTrue(http->put(url.c_str(), *send, receive, 10000) == HTTP_OK);
Vanger 36:b6e47b4cdb6d 103 send->clear();
Vanger 35:c85bea9cb713 104 Test::end();
Vanger 35:c85bea9cb713 105
Vanger 35:c85bea9cb713 106 url = secure_url + url_post;
Vanger 35:c85bea9cb713 107 Test::start("HTTPS POST");
Vanger 35:c85bea9cb713 108 send->put("testing", "put");
Vanger 35:c85bea9cb713 109 Test::assertTrue(http->post(url.c_str(), *send, receive, 10000) == HTTP_OK);
Vanger 36:b6e47b4cdb6d 110 send->clear();
Vanger 35:c85bea9cb713 111 Test::end();
Vanger 35:c85bea9cb713 112
Vanger 35:c85bea9cb713 113 url = secure_url + url_del;
Vanger 35:c85bea9cb713 114 Test::start("HTTPS DELETE");
Vanger 35:c85bea9cb713 115 Test::assertTrue(http->del(url.c_str(), receive, 10000) == HTTP_OK);
Vanger 35:c85bea9cb713 116 Test::end();
Vanger 35:c85bea9cb713 117
Vanger 35:c85bea9cb713 118 url = secure_url + url_stream;
Vanger 35:c85bea9cb713 119 char bigbuf[8 * 1024];
Vanger 35:c85bea9cb713 120 HTTPText big(bigbuf);
Vanger 35:c85bea9cb713 121 Test::start("HTTPS big GET");
Vanger 35:c85bea9cb713 122 Test::assertTrue(http->get(url.c_str(), &big, 10000) == HTTP_OK);
Vanger 35:c85bea9cb713 123 Test::end();
Vanger 35:c85bea9cb713 124
Vanger 36:b6e47b4cdb6d 125 string url_usr_pw = "/Bob/123";
Vanger 36:b6e47b4cdb6d 126 url = secure_url + url_auth + url_usr_pw;
Vanger 36:b6e47b4cdb6d 127 const char user[] = "Bob",pw[] = "123";
Vanger 36:b6e47b4cdb6d 128 Test::start("HTTPS AUTH GET");
Vanger 35:c85bea9cb713 129 Test::assertTrue(http->basicAuth(user,pw) == HTTP_OK);
Vanger 36:b6e47b4cdb6d 130 Test::assertTrue(http->get(url.c_str(), receive, 30000) == HTTP_OK);
Vanger 36:b6e47b4cdb6d 131 Test::assertTrue(http->basicAuth(NULL,NULL) == HTTP_OK);
Vanger 35:c85bea9cb713 132 Test::end();
Vanger 35:c85bea9cb713 133
Vanger 35:c85bea9cb713 134 radio->disconnect();
Vanger 35:c85bea9cb713 135 }
Vanger 35:c85bea9cb713 136
Vanger 35:c85bea9cb713 137 #endif