diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2019-10-09 13:45:43 +0300 |
---|---|---|
committer | Markus Goetz <markus@woboq.com> | 2019-11-20 16:32:57 +0300 |
commit | 112e78ba944148b73ef96d5d61e6838457df56a8 (patch) | |
tree | 433fae6494c233ec3d40be014f1fa9432b1a8b4e /test | |
parent | 47e42441f4debb4d1e88a5e15a3f5f75039ef390 (diff) |
Support for openid connect
Diffstat (limited to 'test')
-rw-r--r-- | test/testoauth.cpp | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/test/testoauth.cpp b/test/testoauth.cpp index ec58b1d61..e3a95009f 100644 --- a/test/testoauth.cpp +++ b/test/testoauth.cpp @@ -132,7 +132,9 @@ public: account->setUrl(sOAuthTestServer); account->setCredentials(new FakeCredentials{fakeQnam}); fakeQnam->setParent(this); - fakeQnam->setOverride([this](QNetworkAccessManager::Operation op, const QNetworkRequest &req, QIODevice *device) { + fakeQnam->setOverride([this](QNetworkAccessManager::Operation op, const QNetworkRequest &req, QIODevice *device) { + if (req.url().path().endsWith(".well-known/openid-configuration")) + return this->wellKnownReply(op, req); ASSERT(device); ASSERT(device->bytesAvailable()>0); // OAuth2 always sends around POST data. return this->tokenReply(op, req); @@ -187,6 +189,11 @@ public: return new FakePostReply(op, req, std::move(payload), fakeQnam); } + virtual QNetworkReply *wellKnownReply(QNetworkAccessManager::Operation op, const QNetworkRequest &req) + { + return new FakeErrorReply(op, req, fakeQnam, 404); + } + virtual QByteArray tokenReplyPayload() const { QJsonDocument jsondata(QJsonObject{ { "access_token", "123" }, @@ -331,6 +338,39 @@ private slots: } test; test.test(); } + + void testWellKnown() { + struct Test : OAuthTestCase { + int redirectsDone = 0; + QNetworkReply * wellKnownReply(QNetworkAccessManager::Operation op, const QNetworkRequest & req) override { + ASSERT(op == QNetworkAccessManager::GetOperation); + QJsonDocument jsondata(QJsonObject{ + { "authorization_endpoint", QJsonValue( + "oauthtest://openidserver" + sOAuthTestServer.path() + "/index.php/apps/oauth2/authorize") }, + { "token_endpoint" , "oauthtest://openidserver/token_endpoint" } + }); + return new FakePayloadReply(op, req, jsondata.toJson(), fakeQnam); + } + + void openBrowserHook(const QUrl & url) override { + ASSERT(url.host() == "openidserver"); + QUrl url2 = url; + url2.setHost(sOAuthTestServer.host()); + OAuthTestCase::openBrowserHook(url2); + } + + QNetworkReply *tokenReply(QNetworkAccessManager::Operation op, const QNetworkRequest & request) override + { + ASSERT(browserReply); + ASSERT(request.url().toString().startsWith("oauthtest://openidserver/token_endpoint")); + auto req = request; + req.setUrl(request.url().toString().replace("oauthtest://openidserver/token_endpoint", + sOAuthTestServer.toString() + "/index.php/apps/oauth2/api/v1/token")); + return OAuthTestCase::tokenReply(op, req); + } + } test; + test.test(); + } }; QTEST_GUILESS_MAIN(TestOAuth) |