Skip to content

Commit

Permalink
Run some tests against a real dav server
Browse files Browse the repository at this point in the history
  • Loading branch information
kesselb committed Dec 15, 2019
1 parent b5c3c75 commit b52a44c
Show file tree
Hide file tree
Showing 3 changed files with 118 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,9 @@ php:
install:
- travis_retry composer install --no-interaction --prefer-source

before_script:
- docker run -d --name webdav_server -p 80:80 -e USERNAME=alice -e PASSWORD=secret1234 bytemark/webdav
- php wait_for_webdav_service.php

script:
- bin/phpunit --coverage-text --coverage-clover coverage.xml
94 changes: 94 additions & 0 deletions tests/WebDAVIntegrationTests.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?php

use League\Flysystem\Filesystem;
use League\Flysystem\Plugin\ListPaths;
use League\Flysystem\WebDAV\WebDAVAdapter;
use PHPUnit\Framework\TestCase;

class WebDAVIntegrationTests extends TestCase
{
use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;

/** @var Filesystem */
protected $filesystem;

protected function setUp()
{
$client = new Sabre\DAV\Client([
'baseUri' => 'http://localhost',
'userName' => 'alice',
'password' => 'secret1234',
]);

$this->filesystem = new Filesystem(new WebDAVAdapter($client));
$this->filesystem->addPlugin(new ListPaths());

foreach ($this->filesystem->listContents('', true) as $item) {
if ($item['path'] === '') {
continue;
}

if ($item['type'] === 'dir') {
$this->filesystem->deleteDir($item['path']);
} else {
$this->filesystem->delete($item['path']);
}
}
}

/**
* @test
*/
public function writing_reading_deleting()
{
$filesystem = $this->filesystem;
$this->assertTrue($filesystem->put('path.txt', 'file contents'));
$this->assertEquals('file contents', $filesystem->read('path.txt'));
$this->assertTrue($filesystem->delete('path.txt'));
}


/**
* @test
*/
public function creating_a_directory()
{
$this->filesystem->createDir('dirname/directory');
$metadata = $this->filesystem->getMetadata('dirname/directory');
self::assertEquals('dir', $metadata['type']);
$this->filesystem->deleteDir('dirname');
}

/**
* @test
*/
public function writing_in_a_directory_and_deleting_the_directory()
{
$filesystem = $this->filesystem;
$this->assertTrue($filesystem->write('deeply/nested/path.txt', 'contents'));
$this->assertTrue($filesystem->has('deeply/nested'));
$this->assertTrue($filesystem->has('deeply'));
$this->assertTrue($filesystem->has('deeply/nested/path.txt'));
$this->assertTrue($filesystem->deleteDir('deeply/nested'));
$this->assertFalse($filesystem->has('deeply/nested'));
$this->assertFalse($filesystem->has('deeply/nested/path.txt'));
$this->assertTrue($filesystem->has('deeply'));
$this->assertTrue($filesystem->deleteDir('deeply'));
$this->assertFalse($filesystem->has('deeply'));
}

/**
* @test
*/
public function listing_files_of_a_directory()
{
$filesystem = $this->filesystem;
$filesystem->write('dirname/a.txt', 'contents');
$filesystem->write('dirname/b/b.txt', 'contents');
$filesystem->write('dirname/c.txt', 'contents');
$files = $filesystem->listPaths('', true);
$expected = ['dirname', 'dirname/a.txt', 'dirname/b', 'dirname/b/b.txt', 'dirname/c.txt'];
$filesystem->deleteDir('dirname');
$this->assertEquals($expected, $files);
}
}
20 changes: 20 additions & 0 deletions wait_for_webdav_service.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

$tries = 0;
start:
$tries++;
$success = @fsockopen('localhost', 80);

if ($success) {
fwrite(STDOUT, "Connected successfully.\n");
exit(0);
}

if ($tries > 10) {
fwrite(STDOUT, "Failed to connect.\n");
exit(1);
}

sleep(1);
fwrite(STDOUT, "Waiting for a connection...\n");
goto start;

0 comments on commit b52a44c

Please sign in to comment.