Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2019-10-09 13:45:43 +0300
committerMarkus Goetz <markus@woboq.com>2019-11-20 16:32:57 +0300
commit112e78ba944148b73ef96d5d61e6838457df56a8 (patch)
tree433fae6494c233ec3d40be014f1fa9432b1a8b4e /test
parent47e42441f4debb4d1e88a5e15a3f5f75039ef390 (diff)
Support for openid connect
Diffstat (limited to 'test')
-rw-r--r--test/testoauth.cpp42
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)