increased chunk size

Dependencies:   HTTPClient-SSL

Fork of MTS-Socket by MultiTech

Committer:
Vanger
Date:
Wed Mar 11 17:27:16 2015 +0000
Revision:
35:c85bea9cb713
Child:
36:b6e47b4cdb6d
Added HTTPS unit test.; Removed APN declarations, as there is only one static APN declaration now (consolidated the APN's to the same location for all tests)

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 35:c85bea9cb713 37 string url_auth = "/basic-auth/:user/:passwd";
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 35:c85bea9cb713 87 if (http->addRootCACertificate(CERTIFICATE) == HTTP_OK) {
Vanger 35:c85bea9cb713 88 Test::assertTrue(false);
Vanger 35:c85bea9cb713 89 }
Vanger 35:c85bea9cb713 90
Vanger 35:c85bea9cb713 91 Test::end();
Vanger 35:c85bea9cb713 92
Vanger 35:c85bea9cb713 93 url = secure_url + url_get;
Vanger 35:c85bea9cb713 94 Test::start("HTTPS GET");
Vanger 35:c85bea9cb713 95 Test::assertTrue(http->get(url.c_str(), receive, 10000) == HTTP_OK);
Vanger 35:c85bea9cb713 96 Test::end();
Vanger 35:c85bea9cb713 97
Vanger 35:c85bea9cb713 98 url = secure_url + url_put;
Vanger 35:c85bea9cb713 99 Test::start("HTTPS PUT");
Vanger 35:c85bea9cb713 100 send->put("testing", "put");
Vanger 35:c85bea9cb713 101 Test::assertTrue(http->put(url.c_str(), *send, receive, 10000) == HTTP_OK);
Vanger 35:c85bea9cb713 102 Test::end();
Vanger 35:c85bea9cb713 103
Vanger 35:c85bea9cb713 104 url = secure_url + url_post;
Vanger 35:c85bea9cb713 105 Test::start("HTTPS POST");
Vanger 35:c85bea9cb713 106 send->put("testing", "put");
Vanger 35:c85bea9cb713 107 Test::assertTrue(http->post(url.c_str(), *send, receive, 10000) == HTTP_OK);
Vanger 35:c85bea9cb713 108 Test::end();
Vanger 35:c85bea9cb713 109
Vanger 35:c85bea9cb713 110 url = secure_url + url_del;
Vanger 35:c85bea9cb713 111 Test::start("HTTPS DELETE");
Vanger 35:c85bea9cb713 112 Test::assertTrue(http->del(url.c_str(), receive, 10000) == HTTP_OK);
Vanger 35:c85bea9cb713 113 Test::end();
Vanger 35:c85bea9cb713 114
Vanger 35:c85bea9cb713 115 url = secure_url + url_stream;
Vanger 35:c85bea9cb713 116 char bigbuf[8 * 1024];
Vanger 35:c85bea9cb713 117 HTTPText big(bigbuf);
Vanger 35:c85bea9cb713 118 Test::start("HTTPS big GET");
Vanger 35:c85bea9cb713 119 Test::assertTrue(http->get(url.c_str(), &big, 10000) == HTTP_OK);
Vanger 35:c85bea9cb713 120 Test::end();
Vanger 35:c85bea9cb713 121
Vanger 35:c85bea9cb713 122 url = secure_url + url_auth;
Vanger 35:c85bea9cb713 123 const char user[] = "user",pw[] = "passwd";
Vanger 35:c85bea9cb713 124 Test::start("HTTPS basic AUTH");
Vanger 35:c85bea9cb713 125 Test::assertTrue(http->basicAuth(user,pw) == HTTP_OK);
Vanger 35:c85bea9cb713 126 Test::assertTrue(http->get(url.c_str(), receive, 10000) == HTTP_OK);
Vanger 35:c85bea9cb713 127 Test::assertTrue(http->basicAuth("","") == HTTP_OK);
Vanger 35:c85bea9cb713 128 Test::end();
Vanger 35:c85bea9cb713 129
Vanger 35:c85bea9cb713 130 radio->disconnect();
Vanger 35:c85bea9cb713 131 }
Vanger 35:c85bea9cb713 132
Vanger 35:c85bea9cb713 133 #endif