Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run some tests against a real dav server #56

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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;