diff options
author | Mattes D <github@xoft.cz> | 2016-08-22 19:49:33 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2016-08-22 22:16:42 +0200 |
commit | 6c760ee348dfa61560660c214799b793ce17513b (patch) | |
tree | c32a262d6ad5a62823c655a4cc01d78c41f515a4 /tests/HTTP/UrlClientTest.cpp | |
parent | Merge pull request #3341 from cuberite/LuaStateImprovements (diff) | |
download | cuberite-6c760ee348dfa61560660c214799b793ce17513b.tar cuberite-6c760ee348dfa61560660c214799b793ce17513b.tar.gz cuberite-6c760ee348dfa61560660c214799b793ce17513b.tar.bz2 cuberite-6c760ee348dfa61560660c214799b793ce17513b.tar.lz cuberite-6c760ee348dfa61560660c214799b793ce17513b.tar.xz cuberite-6c760ee348dfa61560660c214799b793ce17513b.tar.zst cuberite-6c760ee348dfa61560660c214799b793ce17513b.zip |
Diffstat (limited to 'tests/HTTP/UrlClientTest.cpp')
-rw-r--r-- | tests/HTTP/UrlClientTest.cpp | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/tests/HTTP/UrlClientTest.cpp b/tests/HTTP/UrlClientTest.cpp new file mode 100644 index 000000000..5f70855fb --- /dev/null +++ b/tests/HTTP/UrlClientTest.cpp @@ -0,0 +1,162 @@ + +#include "Globals.h" +#include "HTTP/UrlClient.h" +#include "OSSupport/NetworkSingleton.h" + + + + + +class cCallbacks: + public cUrlClient::cCallbacks +{ +public: + cCallbacks(cEvent & a_Event): + m_Event(a_Event) + { + } + + virtual void OnConnected(cTCPLink & a_Link) override + { + LOG("Link connected to %s:%u", a_Link.GetRemoteIP().c_str(), a_Link.GetRemotePort()); + } + + virtual bool OnCertificateReceived() override + { + LOG("Server certificate received"); + return true; + } + + virtual void OnRequestSent() override + { + LOG("Request has been sent"); + } + + virtual void OnHeader(const AString & a_Key, const AString & a_Value) override + { + LOG("HTTP Header: \"%s\" -> \"%s\"", a_Key.c_str(), a_Value.c_str()); + } + + virtual void OnHeadersFinished() override + { + LOG("HTTP headers finished."); + } + + virtual void OnBodyData(const void * a_Data, size_t a_Size) override + { + AString body(reinterpret_cast<const char *>(a_Data), a_Size); + LOG("Body part:\n%s", body.c_str()); + } + + /** Called after the response body has been fully reported by OnBody() calls. + There will be no more OnBody() calls. */ + virtual void OnBodyFinished() override + { + LOG("Body finished."); + m_Event.Set(); + } + + virtual void OnRedirecting(const AString & a_RedirectUrl) override + { + LOG("Redirecting to \"%s\".", a_RedirectUrl.c_str()); + } + + virtual void OnError(const AString & a_ErrorMsg) override + { + LOG("Error: %s", a_ErrorMsg.c_str()); + m_Event.Set(); + } + +protected: + cEvent & m_Event; +}; + + + + + +int TestRequest1() +{ + LOG("Running test 1"); + cEvent evtFinished; + cCallbacks callbacks(evtFinished); + AStringMap options; + options["MaxRedirects"] = "0"; + auto res = cUrlClient::Get("http://github.com", callbacks, AStringMap(), AString(), options); + if (res.first) + { + evtFinished.Wait(); + } + else + { + LOG("Immediate error: %s", res.second.c_str()); + return 1; + } + return 0; +} + + + + + +int TestRequest2() +{ + LOG("Running test 2"); + cEvent evtFinished; + cCallbacks callbacks(evtFinished); + auto res = cUrlClient::Get("http://github.com", callbacks); + if (res.first) + { + evtFinished.Wait(); + } + else + { + LOG("Immediate error: %s", res.second.c_str()); + return 1; + } + return 0; +} + + + + + +int TestRequests() +{ + auto res = TestRequest1(); + if (res != 0) + { + return res; + } + res = TestRequest2(); + if (res != 0) + { + return res; + } + return 0; +} + + + + + +int main() +{ + LOGD("Test started"); + + LOGD("Initializing cNetwork..."); + cNetworkSingleton::Get().Initialise(); + + LOGD("Testing..."); + auto res = TestRequests(); + + LOGD("Terminating cNetwork..."); + cNetworkSingleton::Get().Terminate(); + LOGD("cUrlClient test finished"); + + return res; +} + + + + |