Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package qt6-networkauth for openSUSE:Factory
checked in at 2026-10-18 19:21:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-networkauth (Old)
and /work/SRC/openSUSE:Factory/.qt6-networkauth.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-networkauth"
Sun Oct 18 19:21:30 2026 rev:44 rq:1384400 version:6.12.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-networkauth/qt6-networkauth.changes
2026-08-21 16:51:51.837861652 +0200
+++
/work/SRC/openSUSE:Factory/.qt6-networkauth.new.3698736/qt6-networkauth.changes
2026-10-18 19:21:38.367569963 +0200
@@ -1,0 +2,6 @@
+Wed Sep 30 16:11:19 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 6.12.0
+ https://www.qt.io/blog/qt-6.12-released
+
+-------------------------------------------------------------------
Old:
----
qtnetworkauth-everywhere-src-6.11.2.tar.xz
New:
----
qtnetworkauth-everywhere-src-6.12.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ qt6-networkauth.spec ++++++
--- /var/tmp/diff_new_pack.VtP1Dx/_old 2026-10-18 19:21:39.131601639 +0200
+++ /var/tmp/diff_new_pack.VtP1Dx/_new 2026-10-18 19:21:39.133601722 +0200
@@ -16,8 +16,8 @@
#
-%define real_version 6.11.2
-%define short_version 6.11
+%define real_version 6.12.0
+%define short_version 6.12
%define short_name qtnetworkauth
%define tar_name qtnetworkauth-everywhere-src
%define tar_suffix %{nil}
@@ -28,7 +28,7 @@
%endif
#
Name: qt6-networkauth%{?pkg_suffix}
-Version: 6.11.2
+Version: 6.12.0
Release: 0
Summary: Set of APIs to obtain limited access to online accounts and
HTTP services
License: GPL-3.0-only WITH Qt-GPL-exception-1.0
++++++ qtnetworkauth-everywhere-src-6.11.2.tar.xz ->
qtnetworkauth-everywhere-src-6.12.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.11.2/.cmake.conf
new/qtnetworkauth-everywhere-src-6.12.0/.cmake.conf
--- old/qtnetworkauth-everywhere-src-6.11.2/.cmake.conf 2026-08-11
19:38:11.000000000 +0200
+++ new/qtnetworkauth-everywhere-src-6.12.0/.cmake.conf 2026-09-26
12:11:34.000000000 +0200
@@ -1,9 +1,10 @@
-set(QT_REPO_MODULE_VERSION "6.11.2")
+set(QT_REPO_MODULE_VERSION "6.12.0")
set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
set(QT_EXTRA_INTERNAL_TARGET_DEFINES
"QT_ENABLE_STRICT_MODE_UP_TO=QT_VERSION_CHECK(6,11,0)"
# not yet in strict mode:
"QT_LEAN_HEADERS=2"
+ "QT_NO_DISCONNECT_CONST_CONNECTION=1"
"QT_NO_SINGLE_ARGUMENT_QHASH_OVERLOAD=1"
"QT_NO_QPAIR=1"
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.11.2/.tag
new/qtnetworkauth-everywhere-src-6.12.0/.tag
--- old/qtnetworkauth-everywhere-src-6.11.2/.tag 2026-08-11
19:38:11.000000000 +0200
+++ new/qtnetworkauth-everywhere-src-6.12.0/.tag 2026-09-26
12:11:34.000000000 +0200
@@ -1 +1 @@
-3dc4ab6bd5087fc2f799be67470f5789eb06633c
+d38b832b9b19b0684f6b3539788d610a76ccb99b
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.11.2/CONTRIBUTING.md
new/qtnetworkauth-everywhere-src-6.12.0/CONTRIBUTING.md
--- old/qtnetworkauth-everywhere-src-6.11.2/CONTRIBUTING.md 1970-01-01
01:00:00.000000000 +0100
+++ new/qtnetworkauth-everywhere-src-6.12.0/CONTRIBUTING.md 2026-09-26
12:11:34.000000000 +0200
@@ -0,0 +1,11 @@
+## Qt contribution guidelines
+
+We welcome contributions to Qt!
+
+Note that we cannot accept pull requests on GitHub. All contributions
+to the Qt project are exclusively handled through the
+[Gerrit code review system](https://codereview.qt-project.org).
+
+See
+[contribute.qt-project.org](https://contribute.qt-project.org/) to learn
+more.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.11.2/REUSE.toml
new/qtnetworkauth-everywhere-src-6.12.0/REUSE.toml
--- old/qtnetworkauth-everywhere-src-6.11.2/REUSE.toml 2026-08-11
19:38:11.000000000 +0200
+++ new/qtnetworkauth-everywhere-src-6.12.0/REUSE.toml 2026-09-26
12:11:34.000000000 +0200
@@ -28,8 +28,8 @@
SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR BSD-3-Clause"
[[annotations]]
-path = ["**.qdocconf", "**/doc/images/**",
- "src/oauth/doc/images/**.webp"]
+path = ["**.qdocconf", "**/doc/images/**", "src/oauth/doc/images/**.webp",
+ "CONTRIBUTING.md"]
comment = "documentation"
precedence = "closest"
SPDX-FileCopyrightText = "Copyright (C) The Qt Company Ltd."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/dependencies.yaml
new/qtnetworkauth-everywhere-src-6.12.0/dependencies.yaml
--- old/qtnetworkauth-everywhere-src-6.11.2/dependencies.yaml 2026-08-11
19:38:11.000000000 +0200
+++ new/qtnetworkauth-everywhere-src-6.12.0/dependencies.yaml 2026-09-26
12:11:34.000000000 +0200
@@ -1,4 +1,4 @@
dependencies:
../qtbase:
- ref: ef55f427f2c8b410d34f8a7681020a3000cf6866
+ ref: 025bdad181de241e81bf853c8a2d7bf3d19261a9
required: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.11.2/licenseRule.json
new/qtnetworkauth-everywhere-src-6.12.0/licenseRule.json
--- old/qtnetworkauth-everywhere-src-6.11.2/licenseRule.json 2026-08-11
19:38:11.000000000 +0200
+++ new/qtnetworkauth-everywhere-src-6.12.0/licenseRule.json 2026-09-26
12:11:34.000000000 +0200
@@ -63,8 +63,9 @@
},
{
"comment": "Files with the following endings are Documentation
licensed.",
- "file_pattern_ending": [".qdoc", ".qdocinc" , ".qdocconf", "README",
"qt_attribution.json",
- ".webp"],
+ "file_pattern_ending": [".qdoc", ".qdocinc", ".qdocconf", ".webp",
+ "README", "CONTRIBUTING.md",
+ "qt_attribution.json"],
"location":{
"": {
"comment": "",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/src/oauth/doc/qtnetworkauth.qdocconf
new/qtnetworkauth-everywhere-src-6.12.0/src/oauth/doc/qtnetworkauth.qdocconf
---
old/qtnetworkauth-everywhere-src-6.11.2/src/oauth/doc/qtnetworkauth.qdocconf
2026-08-11 19:38:11.000000000 +0200
+++
new/qtnetworkauth-everywhere-src-6.12.0/src/oauth/doc/qtnetworkauth.qdocconf
2026-09-26 12:11:34.000000000 +0200
@@ -40,6 +40,9 @@
examplesinstallpath = oauth
exampledirs += ../../../examples/oauth snippets
+# Path to the root of qtnetworkauth (for automatic linking to source code)
+url.sources.rootdir = ../../..
+
#manifestmeta.highlighted.names = "QtNetworkAuth/Twitter Timeline Example"
navigation.landingpage = "Qt Network Authorization"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/src/oauth/qabstractoauth.cpp
new/qtnetworkauth-everywhere-src-6.12.0/src/oauth/qabstractoauth.cpp
--- old/qtnetworkauth-everywhere-src-6.11.2/src/oauth/qabstractoauth.cpp
2026-08-11 19:38:11.000000000 +0200
+++ new/qtnetworkauth-everywhere-src-6.12.0/src/oauth/qabstractoauth.cpp
2026-09-26 12:11:34.000000000 +0200
@@ -181,6 +181,16 @@
\sa QAbstractOAuthReplyHandler::tokenRequestErrorOccurred()
*/
+/*!
+ \fn void QAbstractOAuth::finished(QNetworkReply *reply)
+ \internal
+*/
+
+/*!
+ \fn void QAbstractOAuth::replyDataReceived(const QByteArray &data)
+ \internal
+*/
+
// ### Qt 7 remove the support for separate HTTP methods (head(), get(),
post(), put(),
// deleteResource()), see QTBUG-124329
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/src/oauth/qabstractoauth2.cpp
new/qtnetworkauth-everywhere-src-6.12.0/src/oauth/qabstractoauth2.cpp
--- old/qtnetworkauth-everywhere-src-6.11.2/src/oauth/qabstractoauth2.cpp
2026-08-11 19:38:11.000000000 +0200
+++ new/qtnetworkauth-everywhere-src-6.12.0/src/oauth/qabstractoauth2.cpp
2026-09-26 12:11:34.000000000 +0200
@@ -396,8 +396,10 @@
\deprecated [6.13] Use serverReportedErrorOccurred instead
\fn QAbstractOAuth2::error(const QString &error, const QString
&errorDescription, const QUrl &uri)
- Signal emitted when the server responds to the authorization request with
- an error as defined in \l
{https://www.rfc-editor.org/rfc/rfc6749#section-5.2}
+ Signal emitted when the authorization server reports an error while
+ processing an authorization or token request, including a token refresh
+ request, as defined in
+ \l {https://www.rfc-editor.org/rfc/rfc6749#section-5.2}
{RFC 6749 error response}.
\a error is the name of the error; \a errorDescription describes the error
@@ -413,8 +415,10 @@
const QUrl &uri)
\since 6.9
- Signal emitted when the server responds to the authorization request with
- an error as defined in \l
{https://www.rfc-editor.org/rfc/rfc6749#section-5.2}
+ Signal emitted when the authorization server reports an error while
+ processing an authorization or token request, including a token refresh
+ request, as defined in
+ \l {https://www.rfc-editor.org/rfc/rfc6749#section-5.2}
{RFC 6749 error response}.
\a error is the name of the error; \a errorDescription describes the error
@@ -432,6 +436,11 @@
from the server.
*/
+/*!
+ \fn void QAbstractOAuth2::responseTypeChanged(const QString &responseType)
+ \internal
+*/
+
QAbstractOAuth2Private::QAbstractOAuth2Private(const std::pair<QString,
QString> &clientCredentials,
const QUrl &authorizationUrl,
QNetworkAccessManager *manager)
:
@@ -701,8 +710,24 @@
Q_Q(QAbstractOAuth2);
if (values.contains(QtOAuth2RfcKeywords::error)) {
- _q_tokenRequestFailed(QAbstractOAuth::Error::ServerError,
-
values.value(QtOAuth2RfcKeywords::error).toString());
+ const QString error =
values.value(QtOAuth2RfcKeywords::error).toString();
+
+ // RFC 6749 section 5.2: error keyword is required to contain a value
+ if (error.isEmpty()) {
+ _q_tokenRequestFailed(QAbstractOAuth::Error::ServerError,
+ u"Received an empty OAuth error code"_s);
+ return;
+ }
+
+ // A failed refresh does not necessarily invalidate an existing
+ // access token. Restore the status before reporting the error.
+ if (status == QAbstractOAuth::Status::RefreshingToken) {
+ if (!q->token().isEmpty())
+ setStatus(QAbstractOAuth::Status::Granted);
+ else
+ setStatus(QAbstractOAuth::Status::NotAuthenticated);
+ }
+ (void)handleRfcErrorResponseIfPresent(values);
return;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/src/oauth/qoauth1.cpp
new/qtnetworkauth-everywhere-src-6.12.0/src/oauth/qoauth1.cpp
--- old/qtnetworkauth-everywhere-src-6.11.2/src/oauth/qoauth1.cpp
2026-08-11 19:38:11.000000000 +0200
+++ new/qtnetworkauth-everywhere-src-6.12.0/src/oauth/qoauth1.cpp
2026-09-26 12:11:34.000000000 +0200
@@ -575,6 +575,46 @@
}
/*!
+ \fn void QOAuth1::signatureMethodChanged(QOAuth1::SignatureMethod method)
+
+ Emitted when the signature \a method changes.
+
+ \sa signatureMethod(), setSignatureMethod()
+*/
+
+/*!
+ \fn void QOAuth1::clientSharedSecretChanged(const QString &credential)
+
+ Emitted when the client shared secret \a credential changes.
+
+ \sa clientSharedSecret(), setClientSharedSecret(), setClientCredentials()
+*/
+
+/*!
+ \fn void QOAuth1::tokenSecretChanged(const QString &token)
+
+ Emitted when the token secret \a token changes.
+
+ \sa tokenSecret(), setTokenSecret(), setTokenCredentials()
+*/
+
+/*!
+ \fn void QOAuth1::temporaryCredentialsUrlChanged(const QUrl &url)
+
+ Emitted when the temporary credentials \a url changes.
+
+ \sa temporaryCredentialsUrl(), setTemporaryCredentialsUrl()
+*/
+
+/*!
+ \fn void QOAuth1::tokenCredentialsUrlChanged(const QUrl &url)
+
+ Emitted when the token credentials \a url changes.
+
+ \sa tokenCredentialsUrl(), setTokenCredentialsUrl()
+*/
+
+/*!
Sends an authenticated HEAD request and returns a new
QNetworkReply. The \a url and \a parameters are used to create
the request.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/src/oauth/qoauthoobreplyhandler.cpp
new/qtnetworkauth-everywhere-src-6.12.0/src/oauth/qoauthoobreplyhandler.cpp
--- old/qtnetworkauth-everywhere-src-6.11.2/src/oauth/qoauthoobreplyhandler.cpp
2026-08-11 19:38:11.000000000 +0200
+++ new/qtnetworkauth-everywhere-src-6.12.0/src/oauth/qoauthoobreplyhandler.cpp
2026-09-26 12:11:34.000000000 +0200
@@ -42,10 +42,7 @@
emit tokenRequestErrorOccurred(QAbstractOAuth::Error::NetworkError,
reply->errorString());
return;
}
- if (!restReply.isHttpStatusSuccess()) {
- emit tokenRequestErrorOccurred(QAbstractOAuth::Error::ServerError,
reply->errorString());
- return;
- }
+ const bool isHttpStatusSuccess = restReply.isHttpStatusSuccess();
if (reply->header(QNetworkRequest::ContentTypeHeader).isNull()) {
emit tokenRequestErrorOccurred(QAbstractOAuth::Error::ServerError,
u"Empty Content-type header"_s);
@@ -88,6 +85,14 @@
return;
}
+ // RFC 6749 section 5.2 specifies that token endpoint errors are typically
+ // returned with HTTP status 400. Let tokensReceived() handler report
+ // the error if it's an actual sever-side reported error. Otherwise error
out here
+ if (!isHttpStatusSuccess && !ret.contains(u"error"_s)) {
+ emit tokenRequestErrorOccurred(QAbstractOAuth::Error::ServerError,
reply->errorString());
+ return;
+ }
+
Q_EMIT tokensReceived(ret);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/tests/auto/abstractoauth2/tst_abstractoauth2.cpp
new/qtnetworkauth-everywhere-src-6.12.0/tests/auto/abstractoauth2/tst_abstractoauth2.cpp
---
old/qtnetworkauth-everywhere-src-6.11.2/tests/auto/abstractoauth2/tst_abstractoauth2.cpp
2026-08-11 19:38:11.000000000 +0200
+++
new/qtnetworkauth-everywhere-src-6.12.0/tests/auto/abstractoauth2/tst_abstractoauth2.cpp
2026-09-26 12:11:34.000000000 +0200
@@ -49,11 +49,15 @@
void tst_AbstractOAuth2::initTestCase()
{
// QLoggingCategory::setFilterRules(QStringLiteral("qt.networkauth* =
true"));
+#ifdef BUILTIN_TESTDATA
+ testDataDir = QStringLiteral(":/shared/");
+#else
testDataDir = QFileInfo(QFINDTESTDATA("../shared/certs")).absolutePath();
if (testDataDir.isEmpty())
testDataDir = QCoreApplication::applicationDirPath();
if (!testDataDir.endsWith(QLatin1String("/")))
testDataDir += QLatin1String("/");
+#endif
}
void tst_AbstractOAuth2::scopeCharacterWarnings()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/tests/auto/oauth2codeflow/tst_oauth2codeflow.cpp
new/qtnetworkauth-everywhere-src-6.12.0/tests/auto/oauth2codeflow/tst_oauth2codeflow.cpp
---
old/qtnetworkauth-everywhere-src-6.11.2/tests/auto/oauth2codeflow/tst_oauth2codeflow.cpp
2026-08-11 19:38:11.000000000 +0200
+++
new/qtnetworkauth-everywhere-src-6.12.0/tests/auto/oauth2codeflow/tst_oauth2codeflow.cpp
2026-09-26 12:11:34.000000000 +0200
@@ -5,6 +5,7 @@
#include <QtNetworkAuth/qabstractoauthreplyhandler.h>
#include <QtNetworkAuth/qoauth2authorizationcodeflow.h>
+#include <QtNetworkAuth/qoauthhttpserverreplyhandler.h>
#include "oauthtestutils.h"
@@ -25,6 +26,7 @@
void refreshToken();
void getAndRefreshToken();
void tokenRequestErrors();
+ void refreshTokenErrorResponse();
void authorizationErrors();
void modifyTokenRequests();
void pkce_data();
@@ -110,11 +112,15 @@
void tst_OAuth2CodeFlow::initTestCase()
{
// QLoggingCategory::setFilterRules(QStringLiteral("qt.networkauth* =
true"));
+#ifdef BUILTIN_TESTDATA
+ testDataDir = QStringLiteral(":/shared/");
+#else
testDataDir = QFileInfo(QFINDTESTDATA("../shared/certs")).absolutePath();
if (testDataDir.isEmpty())
testDataDir = QCoreApplication::applicationDirPath();
if (!testDataDir.endsWith(QLatin1String("/")))
testDataDir += QLatin1String("/");
+#endif
}
void tst_OAuth2CodeFlow::state()
@@ -666,6 +672,71 @@
QCOMPARE(oauth2.status(), QAbstractOAuth::Status::Granted);
}
+void tst_OAuth2CodeFlow::refreshTokenErrorResponse()
+{
+ auto server = createAuthorizationServer<WebServer>(Responses::defaults());
+
+ QOAuth2AuthorizationCodeFlow oauth2;
+ oauth2.setAuthorizationUrl(server->authorizationEndpoint());
+ oauth2.setTokenUrl(server->tokenEndpoint());
+
+ QOAuthHttpServerReplyHandler replyHandler;
+ oauth2.setReplyHandler(&replyHandler);
+
+ connect(&oauth2, &QOAuth2AuthorizationCodeFlow::authorizeWithBrowser,
+ &oauth2, [&replyHandler](const QUrl &url) {
+ const QUrlQuery query(url.query());
+ emit replyHandler.callbackReceived({
+ { u"code"_s, u"test"_s },
+ { u"state"_s, query.queryItemValue(u"state"_s) }
+ });
+ });
+
+ QSignalSpy grantedSpy(&oauth2, &QAbstractOAuth::granted);
+ oauth2.grant();
+ QTRY_COMPARE(grantedSpy.size(), 1);
+ QCOMPARE(oauth2.status(), QAbstractOAuth::Status::Granted);
+ QCOMPARE(oauth2.token(), u"an-access-token"_s);
+ QCOMPARE(oauth2.refreshToken(), u"a-refresh-token"_s);
+
+ server->responses.tokenHttpStatus = "400 Bad Request"_ba;
+ // https://datatracker.ietf.org/doc/html/rfc6749#section-5.2
+ // invalid_grant is for expired refresh tokens
+ server->responses.tokenBody = R"({
+ "error": "invalid_grant",
+ "error_description": "Token is not active",
+ "error_uri": "https://example.com/oauth/errors/invalid-grant"
+ })"_ba;
+
+ // We should get both server-side reported error as well as generic
requestFailed()
+ QSignalSpy serverErrorSpy(&oauth2,
&QAbstractOAuth2::serverReportedErrorOccurred);
+ QSignalSpy requestFailedSpy(&oauth2, &QAbstractOAuth::requestFailed);
+ QSignalSpy statusSpy(&oauth2, &QAbstractOAuth::statusChanged);
+ QTest::ignoreMessage(QtWarningMsg,
+ QRegularExpression{"Authorization stage:
AuthenticationError:.*"});
+
+ oauth2.refreshTokens();
+
+ QTRY_COMPARE(serverErrorSpy.size(), 1);
+ QCOMPARE(serverErrorSpy.at(0).at(0).toString(), u"invalid_grant"_s);
+ QCOMPARE(serverErrorSpy.at(0).at(1).toString(), u"Token is not active"_s);
+ QCOMPARE(serverErrorSpy.at(0).at(2).toUrl(),
+ QUrl{u"https://example.com/oauth/errors/invalid-grant"_s});
+ QCOMPARE(requestFailedSpy.size(), 1);
+ QCOMPARE(requestFailedSpy.at(0).at(0).value<QAbstractOAuth::Error>(),
+ QAbstractOAuth::Error::ServerError);
+ QCOMPARE(statusSpy.size(), 2);
+ QCOMPARE(statusSpy.at(0).at(0).value<QAbstractOAuth::Status>(),
+ QAbstractOAuth::Status::RefreshingToken);
+ // Since we still have access token, the flow returns back to granted
+ // even if refresh failed
+ QCOMPARE(statusSpy.at(1).at(0).value<QAbstractOAuth::Status>(),
+ QAbstractOAuth::Status::Granted);
+ QCOMPARE(oauth2.status(), QAbstractOAuth::Status::Granted);
+ QCOMPARE(oauth2.token(), u"an-access-token"_s);
+ QCOMPARE(oauth2.refreshToken(), u"a-refresh-token"_s);
+}
+
using Method = QOAuth2AuthorizationCodeFlow::PkceMethod;
void tst_OAuth2CodeFlow::pkce_data()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/tests/auto/oauth2deviceflow/tst_oauth2deviceflow.cpp
new/qtnetworkauth-everywhere-src-6.12.0/tests/auto/oauth2deviceflow/tst_oauth2deviceflow.cpp
---
old/qtnetworkauth-everywhere-src-6.11.2/tests/auto/oauth2deviceflow/tst_oauth2deviceflow.cpp
2026-08-11 19:38:11.000000000 +0200
+++
new/qtnetworkauth-everywhere-src-6.12.0/tests/auto/oauth2deviceflow/tst_oauth2deviceflow.cpp
2026-09-26 12:11:34.000000000 +0200
@@ -141,11 +141,15 @@
void tst_OAuth2DeviceFlow::initTestCase()
{
// QLoggingCategory::setFilterRules(QStringLiteral("qt.networkauth* =
true"));
+#ifdef BUILTIN_TESTDATA
+ testDataDir = QStringLiteral(":/shared/");
+#else
testDataDir = QFileInfo(QFINDTESTDATA("../shared/certs")).absolutePath();
if (testDataDir.isEmpty())
testDataDir = QCoreApplication::applicationDirPath();
if (!testDataDir.endsWith(QLatin1String("/")))
testDataDir += QLatin1String("/");
+#endif
}
class RequestModifier : public QObject
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/tests/auto/oauthhttpserverreplyhandler/CMakeLists.txt
new/qtnetworkauth-everywhere-src-6.12.0/tests/auto/oauthhttpserverreplyhandler/CMakeLists.txt
---
old/qtnetworkauth-everywhere-src-6.11.2/tests/auto/oauthhttpserverreplyhandler/CMakeLists.txt
2026-08-11 19:38:11.000000000 +0200
+++
new/qtnetworkauth-everywhere-src-6.12.0/tests/auto/oauthhttpserverreplyhandler/CMakeLists.txt
2026-09-26 12:11:34.000000000 +0200
@@ -7,6 +7,8 @@
## tst_oauthhttpserverreplyhandler Test:
#####################################################################
+list(APPEND test_data "../shared/certs")
+
qt_internal_add_test(tst_oauthhttpserverreplyhandler
SOURCES
../shared/webserver.h ../shared/webserver.cpp
@@ -17,6 +19,7 @@
Qt::CorePrivate
Qt::Network
Qt::NetworkAuth
+ TESTDATA ${test_data}
)
#### Keys ignored in scope 1:.:.:oauthhttpserverreplyhandler.pro:<TRUE>:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtnetworkauth-everywhere-src-6.11.2/tests/auto/oauthhttpserverreplyhandler/tst_oauthhttpserverreplyhandler.cpp
new/qtnetworkauth-everywhere-src-6.12.0/tests/auto/oauthhttpserverreplyhandler/tst_oauthhttpserverreplyhandler.cpp
---
old/qtnetworkauth-everywhere-src-6.11.2/tests/auto/oauthhttpserverreplyhandler/tst_oauthhttpserverreplyhandler.cpp
2026-08-11 19:38:11.000000000 +0200
+++
new/qtnetworkauth-everywhere-src-6.12.0/tests/auto/oauthhttpserverreplyhandler/tst_oauthhttpserverreplyhandler.cpp
2026-09-26 12:11:34.000000000 +0200
@@ -67,11 +67,15 @@
void tst_QOAuthHttpServerReplyHandler::initTestCase()
{
+#ifdef BUILTIN_TESTDATA
+ testDataDir = QStringLiteral(":/shared/");
+#else
testDataDir = QFileInfo(QFINDTESTDATA("certs")).absolutePath();
if (testDataDir.isEmpty())
testDataDir = QCoreApplication::applicationDirPath();
if (!testDataDir.endsWith(QLatin1String("/")))
testDataDir += QLatin1String("/");
+#endif
}
void tst_QOAuthHttpServerReplyHandler::tokenReplyErrors_data()