Add feedback

pull/1236/head
Philipp 2022-02-25 08:48:13 +01:00
parent 993685f2a5
commit 3425cd3d47
No known key found for this signature in database
GPG Key ID: 24A7501396EB5432
2 changed files with 10 additions and 131 deletions

View File

@ -3,21 +3,21 @@
"description": "Adds the possibility to use S3 as a selectable storage backend", "description": "Adds the possibility to use S3 as a selectable storage backend",
"type": "friendica-addon", "type": "friendica-addon",
"authors": [ "authors": [
{ {
"name": "Philipp Holzer", "name": "Philipp Holzer",
"email": "admin@philipp.info", "email": "admin@philipp.info",
"homepage": "https://blog.philipp.info", "homepage": "https://blog.philipp.info",
"role": "Developer" "role": "Developer"
} }
], ],
"require": { "require": {
"php": ">=7.0", "php": ">=7.0",
"akeeba/s3": "^2.0" "akeeba/s3": "^2.0"
}, },
"license": "3-clause BSD license", "license": "3-clause BSD license",
"config": { "config": {
"optimize-autoloader": true, "optimize-autoloader": true,
"autoloader-suffix": "S3StorageAddon", "autoloader-suffix": "S3StorageAddon",
"preferred-install": "dist" "preferred-install": "dist"
} }
} }

View File

@ -1,121 +0,0 @@
<?php
namespace Friendica\Addon\webdav_storage\tests;
use Friendica\Addon\webdav_storage\src\WebDav;
use Friendica\DI;
use Friendica\Network\HTTPClient\Factory\HTTPClientFactory;
use Friendica\Test\src\Core\Storage\StorageTest;
use Friendica\Core\Logger\Type\VoidLogger;
/// @todo remove when constant is moved to a class constant
/// Necessary for DB_UPDATE_VERSION constant in case of direct calls, where dbstructure isn't included during the calling process
require_once __DIR__ . '/../../../static/dbstructure.config.php';
class WebDavTest extends StorageTest
{
public function dataMultiStatus()
{
return [
'nextcloud' => [
'xml' => <<<EOF
<?xml version="1.0"?>
<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns"
xmlns:nc="http://nextcloud.org/ns">
<d:response>
<d:href>/remote.php/dav/files/admin/Friendica_test/97/18/</d:href>
<d:propstat>
<d:prop>
<d:getlastmodified>Mon, 30 Aug 2021 12:58:54 GMT</d:getlastmodified>
<d:resourcetype>
<d:collection/>
</d:resourcetype>
<d:quota-used-bytes>45017</d:quota-used-bytes>
<d:quota-available-bytes>59180834349</d:quota-available-bytes>
<d:getetag>&quot;612cd60ec9fd5&quot;</d:getetag>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>
/remote.php/dav/files/admin/Friendica_test/97/18/4d9d36f614dc005756bdfb9abbf1d8d24aa9ae842e5d6b5e7eb1dafbe767
</d:href>
<d:propstat>
<d:prop>
<d:getlastmodified>Mon, 30 Aug 2021 12:58:54 GMT</d:getlastmodified>
<d:getcontentlength>45017</d:getcontentlength>
<d:resourcetype/>
<d:getetag>&quot;4f7a144092532141d0e6b925e50a896e&quot;</d:getetag>
<d:getcontenttype>application/octet-stream
</d:getcontenttype>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
<d:propstat>
<d:prop>
<d:quota-used-bytes/>
<d:quota-available-bytes/>
</d:prop>
<d:status>HTTP/1.1 404 Not Found
</d:status>
</d:propstat>
</d:response>
</d:multistatus>
EOF,
'assertionCount' => 2,
],
'onlyDir' => [
'xml' => <<<EOF
<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">
<d:response>
<d:href>/remote.php/dav/files/admin/Friendica_test/34/cf/</d:href>
<d:propstat>
<d:prop>
<d:getlastmodified>Sun, 05 Sep 2021 17:56:05 GMT</d:getlastmodified>
<d:resourcetype>
<d:collection/>
</d:resourcetype>
<d:quota-used-bytes>0</d:quota-used-bytes>
<d:quota-available-bytes>59182800697</d:quota-available-bytes>
<d:getetag>"613504b55db4f"</d:getetag>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
EOF,
'assertionCount' => 1,
],
];
}
/**
* @dataProvider dataMultiStatus
*/
public function testMultistatus(string $xml, int $assertionCount)
{
$responseDoc = new \DOMDocument();
$responseDoc->loadXML($xml);
$xpath = new \DOMXPath($responseDoc);
$xpath->registerNamespace('d', 'DAV');
self::assertCount($assertionCount, $xpath->query('//d:multistatus/d:response'));
}
/**
* @inheritDoc
*/
protected function getInstance()
{
/** @var HTTPClientFactory $factory */
$factory = DI::getDice()->create(HTTPClientFactory::class);
return new WebDav(getenv('WEBDAV_URL'), [
getenv('WEBDAV_USERNAME'),
getenv('WEBDAV_PASSWORD'),
'basic',
], $factory->createClient(), new VoidLogger());
}
}