Before

…lines 1–8 unchanged (8 lines)
9 */
10
11#include <QtTest>
12#include <QDebug>
13
14#include "accessmanager.h"
15#include "propagatedownload.h"
16#include "owncloudpropagator_p.h"
17#include "syncenginetestutils.h"
18
19using namespace Qt::StringLiterals;
20
21#ifdef HAVE_QHTTPSERVER
…lines 22–192 unchanged (171 lines)
193 QVERIFY(job.reply());
194 QCOMPARE(job.reply()->error(), QNetworkReply::NoError);
195 // the download succeeded
196 QCOMPARE(receivedContent.size(), decompressedContent.size());
197 }
198 }
199#endif
200};
201
202QTEST_GUILESS_MAIN(TestNextcloudPropagator)
203#include "testnextcloudpropagator.moc"
204

After

…lines 1–8 unchanged (8 lines)
9 */
10
11#include <QtTest>
12#include <QDebug>
13
14#include "accessmanager.h"
15#include "creds/webflowcredentials.h"
16#include "propagatedownload.h"
17#include "owncloudpropagator_p.h"
18#include "syncenginetestutils.h"
19
20using namespace Qt::StringLiterals;
21
…lines 22–194 unchanged (173 lines)
195 QCOMPARE(job.reply()->error(), QNetworkReply::NoError);
196 // the download succeeded
197 QCOMPARE(receivedContent.size(), decompressedContent.size());
198 }
199 }
200
201 void testDirectUrlCredentials()
202 {
203 // for this one we need two HTTP servers:
204 // - one that acts as a host for direct downloads
205 // - and another one that's our pretend-Nextcloud server
206 //
207 // in any case the requests made to the direct download server should
208 // never contain the `Authorization` header
209
210 QHttpServer directDownloadServer;
211 directDownloadServer.route("/data/directData", [](const QHttpServerRequest &request, QHttpServerResponder &responder) -> void {
212 QVERIFY(!request.headers().contains(QHttpHeaders::WellKnownHeader::Authorization));
213
214 QHttpHeaders headers;
215 headers.append(QHttpHeaders::WellKnownHeader::ContentType, "text/plain"_ba);
216 responder.write("OK directData"_ba, headers);
217 });
218 directDownloadServer.route("/data/redirectToOtherUrl", [](const QHttpServerRequest &request, QHttpServerResponder &responder) -> void {
219 QVERIFY(!request.headers().contains(QHttpHeaders::WellKnownHeader::Authorization));
220
221 QHttpHeaders headers;
222 headers.append(QHttpHeaders::WellKnownHeader::Location, "/someOtherPath/redirectTarget"_ba);
223 responder.write(""_ba, headers, QHttpServerResponder::StatusCode::Found);
224 });
225 directDownloadServer.route("/someOtherPath/redirectTarget", [](const QHttpServerRequest &request, QHttpServerResponder &responder) -> void {
226 QVERIFY(!request.headers().contains(QHttpHeaders::WellKnownHeader::Authorization));
227
228 QHttpHeaders headers;
229 headers.append(QHttpHeaders::WellKnownHeader::ContentType, "text/plain"_ba);
230 headers.append("OC-ETag"_ba, "0123456789abcdef"_ba);
231 headers.append("ETag"_ba, "0123456789abcdef"_ba);
232 responder.write("OK redirectTarget"_ba, headers);
233 });
234
235 QTcpServer directDownloadTcpServer;
236 QVERIFY(directDownloadTcpServer.listen(QHostAddress::LocalHost));
237 QVERIFY(directDownloadServer.bind(&directDownloadTcpServer));
238 const QString directDownloadBaseUrl = "http://%1:%2"_L1.arg(directDownloadTcpServer.serverAddress().toString(), QString::number(directDownloadTcpServer.serverPort()));
239 qInfo() << "Listening on" << directDownloadBaseUrl;
240
241 QHttpServer nextcloudServer;
242 nextcloudServer.route("/remote.php/dav/files/propagatortest/someFile", [](const QHttpServerRequest &request, QHttpServerResponder &responder) -> void {
243 QVERIFY(request.headers().contains(QHttpHeaders::WellKnownHeader::Authorization));
244
245 QHttpHeaders headers;
246 headers.append(QHttpHeaders::WellKnownHeader::ContentType, "text/plain"_ba);
247 headers.append("OC-ETag"_ba, "0123456789abcdef"_ba);
248 headers.append("ETag"_ba, "0123456789abcdef"_ba);
249 responder.write("OK someFile"_ba, headers);
250 });
251 nextcloudServer.route("/remote.php/dav/files/propagatortest/redirectedFile", [&directDownloadBaseUrl](const QHttpServerRequest &request, QHttpServerResponder &responder) -> void {
252 QVERIFY(request.headers().contains(QHttpHeaders::WellKnownHeader::Authorization));
253
254 QHttpHeaders headers;
255 headers.append(QHttpHeaders::WellKnownHeader::ContentType, "text/plain"_ba);
256 headers.append(QHttpHeaders::WellKnownHeader::Location, directDownloadBaseUrl + "/someOtherPath/redirectTarget"_L1);
257 responder.write(""_ba, headers, QHttpServerResponder::StatusCode::Found);
258 });
259
260 QTcpServer nextcloudTcpServer;
261 QVERIFY(nextcloudTcpServer.listen(QHostAddress::LocalHost));
262 QVERIFY(nextcloudServer.bind(&nextcloudTcpServer));
263 const QString nextcloudBaseUrl = "http://%1:%2"_L1.arg(nextcloudTcpServer.serverAddress().toString(), QString::number(nextcloudTcpServer.serverPort()));
264 qInfo() << "Listening on" << nextcloudBaseUrl;
265
266
267 auto account = OCC::Account::create();
268 // using WebFlowCredentials here to to make sure it works as expected for real
269 account->setCredentials(new WebFlowCredentials(u"propagatortest"_s, u"invalid"_s));
270 account->setDavUser(u"propagatortest"_s);
271 account->setUrl(nextcloudBaseUrl);
272
273
274 {
275 qInfo() << "Test: direct URL";
276 QBuffer receivedContent;
277 receivedContent.open(QIODevice::ReadWrite);
278
279 auto job = GETFileJob(account, QUrl{directDownloadBaseUrl + "/data/directData"_L1}, &receivedContent, {}, {}, 0);
280 QSignalSpy spy(&job, &GETFileJob::finishedSignal);
281
282 job.start();
283 spy.wait(1000);
284
285 // The temporary web servers verify the received headers
286 QCOMPARE(receivedContent.data(), "OK directData"_ba);
287 }
288
289 {
290 qInfo() << "Test: direct URL with redirect";
291 QBuffer receivedContent;
292 receivedContent.open(QIODevice::ReadWrite);
293
294 auto job = GETFileJob(account, QUrl{directDownloadBaseUrl + "/data/redirectToOtherUrl"_L1}, &receivedContent, {}, {}, 0);
295 QSignalSpy spy(&job, &GETFileJob::finishedSignal);
296
297 job.start();
298 spy.wait(1000);
299
300 // The temporary web servers verify the received headers
301 QCOMPARE(receivedContent.data(), "OK redirectTarget"_ba);
302 }
303
304 {
305 qInfo() << "Test: standard dav path";
306 QBuffer receivedContent;
307 receivedContent.open(QIODevice::ReadWrite);
308
309 auto job = GETFileJob(account, "/someFile"_L1, &receivedContent, {}, {}, 0);
310 QSignalSpy spy(&job, &GETFileJob::finishedSignal);
311
312 job.start();
313 spy.wait(1000);
314
315 // The temporary web servers verify the received headers
316 QCOMPARE(receivedContent.data(), "OK someFile"_ba);
317 }
318
319 {
320 qInfo() << "Test: standard dav path with a redirect to a different origin";
321 QBuffer receivedContent;
322 receivedContent.open(QIODevice::ReadWrite);
323
324 auto job = GETFileJob(account, "/redirectedFile"_L1, &receivedContent, {}, {}, 0);
325 QSignalSpy spy(&job, &GETFileJob::finishedSignal);
326
327 job.start();
328 spy.wait(1000);
329
330 // The temporary web servers verify the received headers
331 QCOMPARE(receivedContent.data(), "OK redirectTarget"_ba);
332 }
333 }
334#endif
335};
336
337QTEST_GUILESS_MAIN(TestNextcloudPropagator)
338#include "testnextcloudpropagator.moc"
339

Before

translation_unit
comment "/*\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcl"...
preproc_include
#include "#include"
system_lib_string "<QtTest>"
preproc_include
#include "#include"
system_lib_string "<QDebug>"
preproc_include
#include "#include"
string_literal
" "\""
string_content "accessmanager.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "propagatedownload.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "owncloudpropagator_p.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "syncenginetestutils.h"
" "\""
using_declaration
using "using"
namespace "namespace"
qualified_identifier
namespace_identifier "Qt"
:: "::"
identifier "StringLiterals"
; ";"
preproc_ifdef
#ifdef "#ifdef"
identifier "HAVE_QHTTPSERVER"
preproc_include
#include "#include"
system_lib_string "<QHttpServer>"
preproc_include
#include "#include"
system_lib_string "<QTcpServer>"
#endif "#endif"
using_declaration
using "using"
namespace "namespace"
identifier "OCC"
; ";"
namespace_definition (+24 nodes collapsed)
class_specifier
class "class"
type_identifier "TestNextcloudPropagator"
base_class_clause
: ":"
access_specifier
public "public"
type_identifier "QObject"
field_declaration_list
{ "{"
function_definition (+70 nodes collapsed)
function_definition
primitive_type "void"
function_declarator
field_identifier "testUpdateErrorFromSession"
parameter_list
( "("
) ")"
compound_statement
{ "{"
comment "//OwncloudPropagator propagator(nullptr, QLatin1String(\"test"...
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
true "true"
) ")"
; ";"
} "}"
function_definition (+416 nodes collapsed)
function_definition (+190 nodes collapsed)
function_definition (+210 nodes collapsed)
preproc_ifdef
#ifdef "#ifdef"
identifier "HAVE_QHTTPSERVER"
function_definition (+836 nodes collapsed)
#endif "#endif"
} "}"
; ";"
expression_statement
call_expression
identifier "QTEST_GUILESS_MAIN"
argument_list
( "("
identifier "TestNextcloudPropagator"
) ")"
; ""
preproc_include
#include "#include"
string_literal
" "\""
string_content "testnextcloudpropagator.moc"
" "\""

After

translation_unit
comment "/*\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcl"...
preproc_include
#include "#include"
system_lib_string "<QtTest>"
preproc_include
#include "#include"
system_lib_string "<QDebug>"
preproc_include
#include "#include"
string_literal
" "\""
string_content "accessmanager.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "creds/webflowcredentials.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "propagatedownload.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "owncloudpropagator_p.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "syncenginetestutils.h"
" "\""
using_declaration
using "using"
namespace "namespace"
qualified_identifier
namespace_identifier "Qt"
:: "::"
identifier "StringLiterals"
; ";"
preproc_ifdef
#ifdef "#ifdef"
identifier "HAVE_QHTTPSERVER"
preproc_include
#include "#include"
system_lib_string "<QHttpServer>"
preproc_include
#include "#include"
system_lib_string "<QTcpServer>"
#endif "#endif"
using_declaration
using "using"
namespace "namespace"
identifier "OCC"
; ";"
namespace_definition (+24 nodes collapsed)
class_specifier
class "class"
type_identifier "TestNextcloudPropagator"
base_class_clause
: ":"
access_specifier
public "public"
type_identifier "QObject"
field_declaration_list
{ "{"
function_definition (+70 nodes collapsed)
function_definition
primitive_type "void"
function_declarator
field_identifier "testUpdateErrorFromSession"
parameter_list
( "("
) ")"
compound_statement
{ "{"
comment "//OwncloudPropagator propagator(nullptr, QLatin1String(\"test"...
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
true "true"
) ")"
; ";"
} "}"
function_definition (+416 nodes collapsed)
function_definition (+190 nodes collapsed)
function_definition (+210 nodes collapsed)
preproc_ifdef
#ifdef "#ifdef"
identifier "HAVE_QHTTPSERVER"
function_definition (+836 nodes collapsed)
function_definition
primitive_type "void"
function_declarator
field_identifier "testDirectUrlCredentials"
parameter_list
( "("
) ")"
compound_statement
{ "{"
comment "// for this one we need two HTTP servers:"
comment "// - one that acts as a host for direct downloads"
comment "// - and another one that's our pretend-Nextcloud server"
comment "//"
comment "// in any case the requests made to the direct download serv"...
comment "// never contain the `Authorization` header"
declaration
type_identifier "QHttpServer"
identifier "directDownloadServer"
; ";"
expression_statement
call_expression
field_expression
identifier "directDownloadServer"
. "."
field_identifier "route"
argument_list
( "("
string_literal
" "\""
string_content "/data/directData"
" "\""
, ","
lambda_expression
lambda_capture_specifier
[ "["
] "]"
abstract_function_declarator
parameter_list
( "("
parameter_declaration
type_qualifier
const "const"
type_identifier "QHttpServerRequest"
reference_declarator
& "&"
identifier "request"
, ","
parameter_declaration
type_identifier "QHttpServerResponder"
reference_declarator
& "&"
identifier "responder"
) ")"
trailing_return_type
-> "->"
type_descriptor
primitive_type "void"
compound_statement
{ "{"
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
unary_expression
! "!"
call_expression
field_expression
call_expression
field_expression
identifier "request"
. "."
field_identifier "headers"
argument_list
( "("
) ")"
. "."
field_identifier "contains"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "Authorization"
) ")"
) ")"
; ";"
declaration
type_identifier "QHttpHeaders"
identifier "headers"
; ";"
expression_statement
call_expression
field_expression
identifier "headers"
. "."
field_identifier "append"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "ContentType"
, ","
user_defined_literal
string_literal
" "\""
string_content "text/plain"
" "\""
literal_suffix "_ba"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "responder"
. "."
field_identifier "write"
argument_list
( "("
user_defined_literal
string_literal
" "\""
string_content "OK directData"
" "\""
literal_suffix "_ba"
, ","
identifier "headers"
) ")"
; ";"
} "}"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "directDownloadServer"
. "."
field_identifier "route"
argument_list
( "("
string_literal
" "\""
string_content "/data/redirectToOtherUrl"
" "\""
, ","
lambda_expression
lambda_capture_specifier
[ "["
] "]"
abstract_function_declarator
parameter_list
( "("
parameter_declaration
type_qualifier
const "const"
type_identifier "QHttpServerRequest"
reference_declarator
& "&"
identifier "request"
, ","
parameter_declaration
type_identifier "QHttpServerResponder"
reference_declarator
& "&"
identifier "responder"
) ")"
trailing_return_type
-> "->"
type_descriptor
primitive_type "void"
compound_statement
{ "{"
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
unary_expression
! "!"
call_expression
field_expression
call_expression
field_expression
identifier "request"
. "."
field_identifier "headers"
argument_list
( "("
) ")"
. "."
field_identifier "contains"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "Authorization"
) ")"
) ")"
; ";"
declaration
type_identifier "QHttpHeaders"
identifier "headers"
; ";"
expression_statement
call_expression
field_expression
identifier "headers"
. "."
field_identifier "append"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "Location"
, ","
user_defined_literal
string_literal
" "\""
string_content "/someOtherPath/redirectTarget"
" "\""
literal_suffix "_ba"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "responder"
. "."
field_identifier "write"
argument_list
( "("
user_defined_literal
string_literal
" "\""
" "\""
literal_suffix "_ba"
, ","
identifier "headers"
, ","
qualified_identifier
namespace_identifier "QHttpServerResponder"
:: "::"
qualified_identifier
namespace_identifier "StatusCode"
:: "::"
identifier "Found"
) ")"
; ";"
} "}"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "directDownloadServer"
. "."
field_identifier "route"
argument_list
( "("
string_literal
" "\""
string_content "/someOtherPath/redirectTarget"
" "\""
, ","
lambda_expression
lambda_capture_specifier
[ "["
] "]"
abstract_function_declarator
parameter_list
( "("
parameter_declaration
type_qualifier
const "const"
type_identifier "QHttpServerRequest"
reference_declarator
& "&"
identifier "request"
, ","
parameter_declaration
type_identifier "QHttpServerResponder"
reference_declarator
& "&"
identifier "responder"
) ")"
trailing_return_type
-> "->"
type_descriptor
primitive_type "void"
compound_statement
{ "{"
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
unary_expression
! "!"
call_expression
field_expression
call_expression
field_expression
identifier "request"
. "."
field_identifier "headers"
argument_list
( "("
) ")"
. "."
field_identifier "contains"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "Authorization"
) ")"
) ")"
; ";"
declaration
type_identifier "QHttpHeaders"
identifier "headers"
; ";"
expression_statement
call_expression
field_expression
identifier "headers"
. "."
field_identifier "append"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "ContentType"
, ","
user_defined_literal
string_literal
" "\""
string_content "text/plain"
" "\""
literal_suffix "_ba"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "headers"
. "."
field_identifier "append"
argument_list
( "("
user_defined_literal
string_literal
" "\""
string_content "OC-ETag"
" "\""
literal_suffix "_ba"
, ","
user_defined_literal
string_literal
" "\""
string_content "0123456789abcdef"
" "\""
literal_suffix "_ba"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "headers"
. "."
field_identifier "append"
argument_list
( "("
user_defined_literal
string_literal
" "\""
string_content "ETag"
" "\""
literal_suffix "_ba"
, ","
user_defined_literal
string_literal
" "\""
string_content "0123456789abcdef"
" "\""
literal_suffix "_ba"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "responder"
. "."
field_identifier "write"
argument_list
( "("
user_defined_literal
string_literal
" "\""
string_content "OK redirectTarget"
" "\""
literal_suffix "_ba"
, ","
identifier "headers"
) ")"
; ";"
} "}"
) ")"
; ";"
declaration
type_identifier "QTcpServer"
identifier "directDownloadTcpServer"
; ";"
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
call_expression
field_expression
identifier "directDownloadTcpServer"
. "."
field_identifier "listen"
argument_list
( "("
qualified_identifier
namespace_identifier "QHostAddress"
:: "::"
identifier "LocalHost"
) ")"
) ")"
; ";"
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
call_expression
field_expression
identifier "directDownloadServer"
. "."
field_identifier "bind"
argument_list
( "("
pointer_expression
& "&"
identifier "directDownloadTcpServer"
) ")"
) ")"
; ";"
declaration
type_qualifier
const "const"
type_identifier "QString"
init_declarator
identifier "directDownloadBaseUrl"
= "="
call_expression
field_expression
user_defined_literal
string_literal
" "\""
string_content "http://%1:%2"
" "\""
literal_suffix "_L1"
. "."
field_identifier "arg"
argument_list
( "("
call_expression
field_expression
call_expression
field_expression
identifier "directDownloadTcpServer"
. "."
field_identifier "serverAddress"
argument_list
( "("
) ")"
. "."
field_identifier "toString"
argument_list
( "("
) ")"
, ","
call_expression
qualified_identifier
namespace_identifier "QString"
:: "::"
identifier "number"
argument_list
( "("
call_expression
field_expression
identifier "directDownloadTcpServer"
. "."
field_identifier "serverPort"
argument_list
( "("
) ")"
) ")"
) ")"
; ";"
expression_statement
binary_expression
binary_expression
call_expression
identifier "qInfo"
argument_list
( "("
) ")"
<< "<<"
string_literal
" "\""
string_content "Listening on"
" "\""
<< "<<"
identifier "directDownloadBaseUrl"
; ";"
declaration
type_identifier "QHttpServer"
identifier "nextcloudServer"
; ";"
expression_statement
call_expression
field_expression
identifier "nextcloudServer"
. "."
field_identifier "route"
argument_list
( "("
string_literal
" "\""
string_content "/remote.php/dav/files/propagatortest/someFile"
" "\""
, ","
lambda_expression
lambda_capture_specifier
[ "["
] "]"
abstract_function_declarator
parameter_list
( "("
parameter_declaration
type_qualifier
const "const"
type_identifier "QHttpServerRequest"
reference_declarator
& "&"
identifier "request"
, ","
parameter_declaration
type_identifier "QHttpServerResponder"
reference_declarator
& "&"
identifier "responder"
) ")"
trailing_return_type
-> "->"
type_descriptor
primitive_type "void"
compound_statement
{ "{"
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
call_expression
field_expression
call_expression
field_expression
identifier "request"
. "."
field_identifier "headers"
argument_list
( "("
) ")"
. "."
field_identifier "contains"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "Authorization"
) ")"
) ")"
; ";"
declaration
type_identifier "QHttpHeaders"
identifier "headers"
; ";"
expression_statement
call_expression
field_expression
identifier "headers"
. "."
field_identifier "append"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "ContentType"
, ","
user_defined_literal
string_literal
" "\""
string_content "text/plain"
" "\""
literal_suffix "_ba"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "headers"
. "."
field_identifier "append"
argument_list
( "("
user_defined_literal
string_literal
" "\""
string_content "OC-ETag"
" "\""
literal_suffix "_ba"
, ","
user_defined_literal
string_literal
" "\""
string_content "0123456789abcdef"
" "\""
literal_suffix "_ba"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "headers"
. "."
field_identifier "append"
argument_list
( "("
user_defined_literal
string_literal
" "\""
string_content "ETag"
" "\""
literal_suffix "_ba"
, ","
user_defined_literal
string_literal
" "\""
string_content "0123456789abcdef"
" "\""
literal_suffix "_ba"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "responder"
. "."
field_identifier "write"
argument_list
( "("
user_defined_literal
string_literal
" "\""
string_content "OK someFile"
" "\""
literal_suffix "_ba"
, ","
identifier "headers"
) ")"
; ";"
} "}"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "nextcloudServer"
. "."
field_identifier "route"
argument_list
( "("
string_literal
" "\""
string_content "/remote.php/dav/files/propagatortest/redirectedFile"
" "\""
, ","
lambda_expression
lambda_capture_specifier
[ "["
& "&"
identifier "directDownloadBaseUrl"
] "]"
abstract_function_declarator
parameter_list
( "("
parameter_declaration
type_qualifier
const "const"
type_identifier "QHttpServerRequest"
reference_declarator
& "&"
identifier "request"
, ","
parameter_declaration
type_identifier "QHttpServerResponder"
reference_declarator
& "&"
identifier "responder"
) ")"
trailing_return_type
-> "->"
type_descriptor
primitive_type "void"
compound_statement
{ "{"
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
call_expression
field_expression
call_expression
field_expression
identifier "request"
. "."
field_identifier "headers"
argument_list
( "("
) ")"
. "."
field_identifier "contains"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "Authorization"
) ")"
) ")"
; ";"
declaration
type_identifier "QHttpHeaders"
identifier "headers"
; ";"
expression_statement
call_expression
field_expression
identifier "headers"
. "."
field_identifier "append"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "ContentType"
, ","
user_defined_literal
string_literal
" "\""
string_content "text/plain"
" "\""
literal_suffix "_ba"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "headers"
. "."
field_identifier "append"
argument_list
( "("
qualified_identifier
namespace_identifier "QHttpHeaders"
:: "::"
qualified_identifier
namespace_identifier "WellKnownHeader"
:: "::"
identifier "Location"
, ","
binary_expression
identifier "directDownloadBaseUrl"
+ "+"
user_defined_literal
string_literal
" "\""
string_content "/someOtherPath/redirectTarget"
" "\""
literal_suffix "_L1"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "responder"
. "."
field_identifier "write"
argument_list
( "("
user_defined_literal
string_literal
" "\""
" "\""
literal_suffix "_ba"
, ","
identifier "headers"
, ","
qualified_identifier
namespace_identifier "QHttpServerResponder"
:: "::"
qualified_identifier
namespace_identifier "StatusCode"
:: "::"
identifier "Found"
) ")"
; ";"
} "}"
) ")"
; ";"
declaration
type_identifier "QTcpServer"
identifier "nextcloudTcpServer"
; ";"
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
call_expression
field_expression
identifier "nextcloudTcpServer"
. "."
field_identifier "listen"
argument_list
( "("
qualified_identifier
namespace_identifier "QHostAddress"
:: "::"
identifier "LocalHost"
) ")"
) ")"
; ";"
expression_statement
call_expression
identifier "QVERIFY"
argument_list
( "("
call_expression
field_expression
identifier "nextcloudServer"
. "."
field_identifier "bind"
argument_list
( "("
pointer_expression
& "&"
identifier "nextcloudTcpServer"
) ")"
) ")"
; ";"
declaration
type_qualifier
const "const"
type_identifier "QString"
init_declarator
identifier "nextcloudBaseUrl"
= "="
call_expression
field_expression
user_defined_literal
string_literal
" "\""
string_content "http://%1:%2"
" "\""
literal_suffix "_L1"
. "."
field_identifier "arg"
argument_list
( "("
call_expression
field_expression
call_expression
field_expression
identifier "nextcloudTcpServer"
. "."
field_identifier "serverAddress"
argument_list
( "("
) ")"
. "."
field_identifier "toString"
argument_list
( "("
) ")"
, ","
call_expression
qualified_identifier
namespace_identifier "QString"
:: "::"
identifier "number"
argument_list
( "("
call_expression
field_expression
identifier "nextcloudTcpServer"
. "."
field_identifier "serverPort"
argument_list
( "("
) ")"
) ")"
) ")"
; ";"
expression_statement
binary_expression
binary_expression
call_expression
identifier "qInfo"
argument_list
( "("
) ")"
<< "<<"
string_literal
" "\""
string_content "Listening on"
" "\""
<< "<<"
identifier "nextcloudBaseUrl"
; ";"
declaration
placeholder_type_specifier
auto "auto"
init_declarator
identifier "account"
= "="
call_expression
qualified_identifier
namespace_identifier "OCC"
:: "::"
qualified_identifier
namespace_identifier "Account"
:: "::"
identifier "create"
argument_list
( "("
) ")"
; ";"
comment "// using WebFlowCredentials here to to make sure it works as"...
expression_statement
call_expression
field_expression
identifier "account"
-> "->"
field_identifier "setCredentials"
argument_list
( "("
new_expression
new "new"
type_identifier "WebFlowCredentials"
argument_list
( "("
user_defined_literal
string_literal
u" "u\""
string_content "propagatortest"
" "\""
literal_suffix "_s"
, ","
user_defined_literal
string_literal
u" "u\""
string_content "invalid"
" "\""
literal_suffix "_s"
) ")"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "account"
-> "->"
field_identifier "setDavUser"
argument_list
( "("
user_defined_literal
string_literal
u" "u\""
string_content "propagatortest"
" "\""
literal_suffix "_s"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "account"
-> "->"
field_identifier "setUrl"
argument_list
( "("
identifier "nextcloudBaseUrl"
) ")"
; ";"
compound_statement
{ "{"
expression_statement
binary_expression
call_expression
identifier "qInfo"
argument_list
( "("
) ")"
<< "<<"
string_literal
" "\""
string_content "Test: direct URL"
" "\""
; ";"
declaration
type_identifier "QBuffer"
identifier "receivedContent"
; ";"
expression_statement
call_expression
field_expression
identifier "receivedContent"
. "."
field_identifier "open"
argument_list
( "("
qualified_identifier
namespace_identifier "QIODevice"
:: "::"
identifier "ReadWrite"
) ")"
; ";"
declaration
placeholder_type_specifier
auto "auto"
init_declarator
identifier "job"
= "="
call_expression
identifier "GETFileJob"
argument_list
( "("
identifier "account"
, ","
compound_literal_expression
type_identifier "QUrl"
initializer_list
{ "{"
binary_expression
identifier "directDownloadBaseUrl"
+ "+"
user_defined_literal
string_literal
" "\""
string_content "/data/directData"
" "\""
literal_suffix "_L1"
} "}"
, ","
pointer_expression
& "&"
identifier "receivedContent"
, ","
initializer_list
{ "{"
} "}"
, ","
initializer_list
{ "{"
} "}"
, ","
number_literal "0"
) ")"
; ";"
declaration
type_identifier "QSignalSpy"
init_declarator
identifier "spy"
argument_list
( "("
pointer_expression
& "&"
identifier "job"
, ","
pointer_expression
& "&"
qualified_identifier
namespace_identifier "GETFileJob"
:: "::"
identifier "finishedSignal"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "job"
. "."
field_identifier "start"
argument_list
( "("
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "spy"
. "."
field_identifier "wait"
argument_list
( "("
number_literal "1000"
) ")"
; ";"
comment "// The temporary web servers verify the received headers"
expression_statement
call_expression
identifier "QCOMPARE"
argument_list
( "("
call_expression
field_expression
identifier "receivedContent"
. "."
field_identifier "data"
argument_list
( "("
) ")"
, ","
user_defined_literal
string_literal
" "\""
string_content "OK directData"
" "\""
literal_suffix "_ba"
) ")"
; ";"
} "}"
compound_statement
{ "{"
expression_statement
binary_expression
call_expression
identifier "qInfo"
argument_list
( "("
) ")"
<< "<<"
string_literal
" "\""
string_content "Test: direct URL with redirect"
" "\""
; ";"
declaration
type_identifier "QBuffer"
identifier "receivedContent"
; ";"
expression_statement
call_expression
field_expression
identifier "receivedContent"
. "."
field_identifier "open"
argument_list
( "("
qualified_identifier
namespace_identifier "QIODevice"
:: "::"
identifier "ReadWrite"
) ")"
; ";"
declaration
placeholder_type_specifier
auto "auto"
init_declarator
identifier "job"
= "="
call_expression
identifier "GETFileJob"
argument_list
( "("
identifier "account"
, ","
compound_literal_expression
type_identifier "QUrl"
initializer_list
{ "{"
binary_expression
identifier "directDownloadBaseUrl"
+ "+"
user_defined_literal
string_literal
" "\""
string_content "/data/redirectToOtherUrl"
" "\""
literal_suffix "_L1"
} "}"
, ","
pointer_expression
& "&"
identifier "receivedContent"
, ","
initializer_list
{ "{"
} "}"
, ","
initializer_list
{ "{"
} "}"
, ","
number_literal "0"
) ")"
; ";"
declaration
type_identifier "QSignalSpy"
init_declarator
identifier "spy"
argument_list
( "("
pointer_expression
& "&"
identifier "job"
, ","
pointer_expression
& "&"
qualified_identifier
namespace_identifier "GETFileJob"
:: "::"
identifier "finishedSignal"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "job"
. "."
field_identifier "start"
argument_list
( "("
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "spy"
. "."
field_identifier "wait"
argument_list
( "("
number_literal "1000"
) ")"
; ";"
comment "// The temporary web servers verify the received headers"
expression_statement
call_expression
identifier "QCOMPARE"
argument_list
( "("
call_expression
field_expression
identifier "receivedContent"
. "."
field_identifier "data"
argument_list
( "("
) ")"
, ","
user_defined_literal
string_literal
" "\""
string_content "OK redirectTarget"
" "\""
literal_suffix "_ba"
) ")"
; ";"
} "}"
compound_statement
{ "{"
expression_statement
binary_expression
call_expression
identifier "qInfo"
argument_list
( "("
) ")"
<< "<<"
string_literal
" "\""
string_content "Test: standard dav path"
" "\""
; ";"
declaration
type_identifier "QBuffer"
identifier "receivedContent"
; ";"
expression_statement
call_expression
field_expression
identifier "receivedContent"
. "."
field_identifier "open"
argument_list
( "("
qualified_identifier
namespace_identifier "QIODevice"
:: "::"
identifier "ReadWrite"
) ")"
; ";"
declaration
placeholder_type_specifier
auto "auto"
init_declarator
identifier "job"
= "="
call_expression
identifier "GETFileJob"
argument_list
( "("
identifier "account"
, ","
user_defined_literal
string_literal
" "\""
string_content "/someFile"
" "\""
literal_suffix "_L1"
, ","
pointer_expression
& "&"
identifier "receivedContent"
, ","
initializer_list
{ "{"
} "}"
, ","
initializer_list
{ "{"
} "}"
, ","
number_literal "0"
) ")"
; ";"
declaration
type_identifier "QSignalSpy"
init_declarator
identifier "spy"
argument_list
( "("
pointer_expression
& "&"
identifier "job"
, ","
pointer_expression
& "&"
qualified_identifier
namespace_identifier "GETFileJob"
:: "::"
identifier "finishedSignal"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "job"
. "."
field_identifier "start"
argument_list
( "("
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "spy"
. "."
field_identifier "wait"
argument_list
( "("
number_literal "1000"
) ")"
; ";"
comment "// The temporary web servers verify the received headers"
expression_statement
call_expression
identifier "QCOMPARE"
argument_list
( "("
call_expression
field_expression
identifier "receivedContent"
. "."
field_identifier "data"
argument_list
( "("
) ")"
, ","
user_defined_literal
string_literal
" "\""
string_content "OK someFile"
" "\""
literal_suffix "_ba"
) ")"
; ";"
} "}"
compound_statement
{ "{"
expression_statement
binary_expression
call_expression
identifier "qInfo"
argument_list
( "("
) ")"
<< "<<"
string_literal
" "\""
string_content "Test: standard dav path with a redirect to a different origi"...
" "\""
; ";"
declaration
type_identifier "QBuffer"
identifier "receivedContent"
; ";"
expression_statement
call_expression
field_expression
identifier "receivedContent"
. "."
field_identifier "open"
argument_list
( "("
qualified_identifier
namespace_identifier "QIODevice"
:: "::"
identifier "ReadWrite"
) ")"
; ";"
declaration
placeholder_type_specifier
auto "auto"
init_declarator
identifier "job"
= "="
call_expression
identifier "GETFileJob"
argument_list
( "("
identifier "account"
, ","
user_defined_literal
string_literal
" "\""
string_content "/redirectedFile"
" "\""
literal_suffix "_L1"
, ","
pointer_expression
& "&"
identifier "receivedContent"
, ","
initializer_list
{ "{"
} "}"
, ","
initializer_list
{ "{"
} "}"
, ","
number_literal "0"
) ")"
; ";"
declaration
type_identifier "QSignalSpy"
init_declarator
identifier "spy"
argument_list
( "("
pointer_expression
& "&"
identifier "job"
, ","
pointer_expression
& "&"
qualified_identifier
namespace_identifier "GETFileJob"
:: "::"
identifier "finishedSignal"
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "job"
. "."
field_identifier "start"
argument_list
( "("
) ")"
; ";"
expression_statement
call_expression
field_expression
identifier "spy"
. "."
field_identifier "wait"
argument_list
( "("
number_literal "1000"
) ")"
; ";"
comment "// The temporary web servers verify the received headers"
expression_statement
call_expression
identifier "QCOMPARE"
argument_list
( "("
call_expression
field_expression
identifier "receivedContent"
. "."
field_identifier "data"
argument_list
( "("
) ")"
, ","
user_defined_literal
string_literal
" "\""
string_content "OK redirectTarget"
" "\""
literal_suffix "_ba"
) ")"
; ";"
} "}"
} "}"
#endif "#endif"
} "}"
; ";"
expression_statement
call_expression
identifier "QTEST_GUILESS_MAIN"
argument_list
( "("
identifier "TestNextcloudPropagator"
) ")"
; ""
preproc_include
#include "#include"
string_literal
" "\""
string_content "testnextcloudpropagator.moc"
" "\""