"description": "Adds the possibility to use S3 as a selectable storage backend",
"type": "friendica-addon",
"authors": [
- {
- "name": "Philipp Holzer",
- "email": "admin@philipp.info",
- "homepage": "https://blog.philipp.info",
- "role": "Developer"
- }
+ {
+ "name": "Philipp Holzer",
+ "email": "admin@philipp.info",
+ "homepage": "https://blog.philipp.info",
+ "role": "Developer"
+ }
],
"require": {
- "php": ">=7.0",
+ "php": ">=7.0",
"akeeba/s3": "^2.0"
},
"license": "3-clause BSD license",
"config": {
- "optimize-autoloader": true,
- "autoloader-suffix": "S3StorageAddon",
- "preferred-install": "dist"
+ "optimize-autoloader": true,
+ "autoloader-suffix": "S3StorageAddon",
+ "preferred-install": "dist"
}
}
+++ /dev/null
-<?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>"612cd60ec9fd5"</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>"4f7a144092532141d0e6b925e50a896e"</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());
- }
-}