diff options
author | Jan Holesovsky <kendy@collabora.com> | 2017-08-17 11:47:14 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2017-08-17 13:41:07 +0200 |
commit | f8ca17278f8d1114e37e656025bbf0bac2d59cc7 (patch) | |
tree | 4b35449970721337046dc3f1ae681ed7ad11d274 /test/UnitOAuth.cpp | |
parent | afcfac4bef95cf7800effbc90818a0bfb8b434c2 (diff) |
access_header: Pass the access_header around + unit test.
Change-Id: I5d6d93e289d8faceda59deae128e8124a0193d95
Reviewed-on: https://gerrit.libreoffice.org/41243
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Reviewed-by: pranavk <pranavk@collabora.co.uk>
Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'test/UnitOAuth.cpp')
-rw-r--r-- | test/UnitOAuth.cpp | 80 |
1 files changed, 53 insertions, 27 deletions
diff --git a/test/UnitOAuth.cpp b/test/UnitOAuth.cpp index 0136d0c81..ed82982e7 100644 --- a/test/UnitOAuth.cpp +++ b/test/UnitOAuth.cpp @@ -29,16 +29,44 @@ using Poco::Net::OAuth20Credentials; class UnitOAuth : public UnitWSD { enum class Phase { - Load, // loading the document + Load0, // loading the document with Bearer token + Load1, // loading the document with Basic auth Polling // let the loading progress, and when it succeeds, finish } _phase; + bool _finished0; + bool _finished1; + public: UnitOAuth() : - _phase(Phase::Load) + _phase(Phase::Load0), + _finished0(false), + _finished1(false) { } + void assertRequest(const Poco::Net::HTTPRequest& request, int fileIndex) + { + // check that the request contains the Authorization: header + try { + if (fileIndex == 0) + { + OAuth20Credentials creds(request); + CPPUNIT_ASSERT_EQUAL(std::string("s3hn3ct0k3v"), creds.getBearerToken()); + } + else + { + OAuth20Credentials creds(request, "Basic"); + CPPUNIT_ASSERT_EQUAL(std::string("basic=="), creds.getBearerToken()); + } + } + catch (const std::exception&) + { + // fail as fast as possible + exit(1); + } + } + /// Here we act as a WOPI server, so that we have a server that responds to /// the wopi requests without additional expensive setup. virtual bool handleHttpRequest(const Poco::Net::HTTPRequest& request, std::shared_ptr<StreamSocket>& socket) override @@ -49,20 +77,11 @@ public: LOG_INF("Fake wopi host request: " << uriReq.toString()); // CheckFileInfo - if (uriReq.getPath() == "/wopi/files/0") + if (uriReq.getPath() == "/wopi/files/0" || uriReq.getPath() == "/wopi/files/1") { - LOG_INF("Fake wopi host request, handling CheckFileInfo."); + LOG_INF("Fake wopi host request, handling CheckFileInfo: " << uriReq.getPath()); - // check that the request contains the Authorization: header - try { - OAuth20Credentials creds(request); - CPPUNIT_ASSERT_EQUAL(creds.getBearerToken(), std::string("s3hn3ct0k3v")); - } - catch (const std::exception&) - { - // fail as fast as possible - exit(1); - } + assertRequest(request, (uriReq.getPath() == "/wopi/files/0")? 0: 1); Poco::LocalDateTime now; Poco::JSON::Object::Ptr fileInfo = new Poco::JSON::Object(); @@ -97,19 +116,19 @@ public: return true; } // GetFile - else if (uriReq.getPath() == "/wopi/files/0/contents") + else if (uriReq.getPath() == "/wopi/files/0/contents" || uriReq.getPath() == "/wopi/files/1/contents") { - LOG_INF("Fake wopi host request, handling GetFile."); + LOG_INF("Fake wopi host request, handling GetFile: " << uriReq.getPath()); - // check that the request contains the Authorization: header - try { - OAuth20Credentials creds(request); - CPPUNIT_ASSERT_EQUAL(creds.getBearerToken(), std::string("s3hn3ct0k3v")); + if (uriReq.getPath() == "/wopi/files/0/contents") + { + assertRequest(request, 0); + _finished0 = true; } - catch (const std::exception&) + else { - // fail as fast as possible - exit(1); + assertRequest(request, 1); + _finished1 = true; } const std::string mimeType = "text/plain; charset=utf-8"; @@ -126,7 +145,8 @@ public: socket->send(oss.str()); socket->shutdown(); - exitTest(TestResult::Ok); + if (_finished0 && _finished1) + exitTest(TestResult::Ok); return true; } @@ -140,9 +160,12 @@ public: switch (_phase) { - case Phase::Load: + case Phase::Load0: + case Phase::Load1: { - Poco::URI wopiURL(helpers::getTestServerURI() + "/wopi/files/0?access_token=s3hn3ct0k3v"); + Poco::URI wopiURL(helpers::getTestServerURI() + + ((_phase == Phase::Load0)? "/wopi/files/0?access_token=s3hn3ct0k3v": + "/wopi/files/1?access_header=Authorization: Basic basic==")); //wopiURL.setPort(_wopiSocket->address().port()); std::string wopiSrc; Poco::URI::encode(wopiURL.toString(), ":/?", wopiSrc); @@ -155,7 +178,10 @@ public: helpers::sendTextFrame(*ws->getLOOLWebSocket(), "load url=" + wopiSrc, testName); - _phase = Phase::Polling; + if (_phase == Phase::Load0) + _phase = Phase::Load1; + else + _phase = Phase::Polling; break; } case Phase::Polling: |