Skip to content

Commit 1af5c0b

Browse files
authored
Merge pull request #1823 from gam6itko/web-dav-create-folder-fix
[WebDAV] createDirectory - not throw if got 405
2 parents edc1bb7 + 1eb13cb commit 1af5c0b

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

src/WebDAV/WebDAVAdapter.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,10 @@ public function createDirectory(string $path, Config $config): void
233233
throw UnableToCreateDirectory::dueToFailure($path, $exception);
234234
}
235235

236+
if ($response['statusCode'] === 405) {
237+
continue;
238+
}
239+
236240
if ($response['statusCode'] !== 201) {
237241
throw UnableToCreateDirectory::atLocation($path, 'Failed to create directory at: ' . $location);
238242
}

src/WebDAV/WebDAVAdapterTestCase.php

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use League\Flysystem\UnableToMoveFile;
1010
use League\Flysystem\UnableToSetVisibility;
1111
use League\Flysystem\Visibility;
12+
use Sabre\DAV\Client;
1213

1314
abstract class WebDAVAdapterTestCase extends FilesystemAdapterTestCase
1415
{
@@ -48,7 +49,7 @@ public function creating_a_directory_with_leading_and_trailing_slashes(): void
4849
{
4950
$this->runScenario(function () {
5051
$adapter = $this->adapter();
51-
$adapter->createDirectory('/some/directory/', new Config);
52+
$adapter->createDirectory('/some/directory/', new Config());
5253

5354
self::assertTrue($adapter->directoryExists('/some/directory/'));
5455
});
@@ -132,4 +133,28 @@ public function moving_a_file_that_does_not_exist(): void
132133
$this->adapter()->move('source.txt', 'destination.txt', new Config());
133134
});
134135
}
136+
137+
/**
138+
* @test
139+
*/
140+
public function part_of_prefix_already_exists(): void
141+
{
142+
$this->runScenario(function () {
143+
$config = new Config();
144+
145+
$adapter1 = new WebDAVAdapter(
146+
new Client(['baseUri' => 'http://localhost:4040/']),
147+
'directory1/prefix1',
148+
);
149+
$adapter1->createDirectory('folder1', $config);
150+
self::assertTrue($adapter1->directoryExists('/folder1'));
151+
152+
$adapter2 = new WebDAVAdapter(
153+
new Client(['baseUri' => 'http://localhost:4040/']),
154+
'directory1/prefix2',
155+
);
156+
$adapter2->createDirectory('folder2', $config);
157+
self::assertTrue($adapter2->directoryExists('/folder2'));
158+
});
159+
}
135160
}

0 commit comments

Comments
 (0)