Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of MTS-Socket by
Test/TestHTTPS.h@35:c85bea9cb713, 2015-03-11 (annotated)
- 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?
User | Revision | Line number | New 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 |