Skip to content

Commit 92c61ff

Browse files
Added delete endpoints
1 parent 88b2d79 commit 92c61ff

File tree

3 files changed

+89
-0
lines changed

3 files changed

+89
-0
lines changed

src/RestClient.php

+11
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ public function getDataset(string $volume, string $datasetId): Dataset
6565
return Dataset::fromArray($this->client->get("pool/dataset/id/{$path}")->json());
6666
}
6767

68+
public function deleteDataset(string $volume, string $datasetId): void
69+
{
70+
$path = urlencode("{$volume}/{$datasetId}");
71+
$this->client->delete("pool/dataset/id/{$path}");
72+
}
73+
6874
public function createUser(
6975
int $uid,
7076
string $name,
@@ -126,4 +132,9 @@ public function createSnapshotTask(string $volume, string $datasetId, Schedule $
126132

127133
return Task::fromArray($response->json());
128134
}
135+
136+
public function deleteSnapshotTask(int $taskId): void
137+
{
138+
$this->client->delete("pool/snapshottask/id/{$taskId}");
139+
}
129140
}

tests/Endpoints/DeleteDatasetTest.php

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace PCextreme\FreeNAS\Tests\Endpoints;
4+
5+
use PCextreme\FreeNAS\Exceptions\FreeNasClientException;
6+
use PCextreme\FreeNAS\Tests\Helpers\MockClientTrait;
7+
use PHPUnit\Framework\TestCase;
8+
use Psr\Http\Message\RequestInterface;
9+
10+
/** @covers \PCextreme\FreeNAS\RestClient::deleteDataset */
11+
class DeleteDatasetTest extends TestCase
12+
{
13+
use MockClientTrait;
14+
15+
public function test_user_endpoint(): void
16+
{
17+
$client = $this->getMockedClientWithResponse(200, '', function (RequestInterface $request) {
18+
$this->assertSame('DELETE', strtoupper($request->getMethod()));
19+
$this->assertSame('pool/dataset/id/staging-vol01%2Ftkyp9wdqip27', $request->getUri()->getPath());
20+
$this->assertSame('', $request->getUri()->getQuery());
21+
$this->assertNotEmpty($request->getHeader('Authorization'));
22+
});
23+
24+
$client->deleteDataset('staging-vol01', 'tkyp9wdqip27');
25+
}
26+
27+
public function test_user_endpoint_500(): void
28+
{
29+
$client = $this->getMockedClientWithResponse(500, '', function (RequestInterface $request) {
30+
$this->assertSame('DELETE', strtoupper($request->getMethod()));
31+
$this->assertSame('pool/dataset/id/staging-vol01%2Ftkyp9wdqip27', $request->getUri()->getPath());
32+
$this->assertSame('', $request->getUri()->getQuery());
33+
$this->assertNotEmpty($request->getHeader('Authorization'));
34+
});
35+
36+
$this->expectException(FreeNasClientException::class);
37+
$client->deleteDataset('staging-vol01', 'tkyp9wdqip27');
38+
}
39+
}

tests/Endpoints/DeleteTaskTest.php

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace PCextreme\FreeNAS\Tests\Endpoints;
4+
5+
use PCextreme\FreeNAS\Exceptions\FreeNasClientException;
6+
use PCextreme\FreeNAS\Tests\Helpers\MockClientTrait;
7+
use PHPUnit\Framework\TestCase;
8+
use Psr\Http\Message\RequestInterface;
9+
10+
/** @covers \PCextreme\FreeNAS\RestClient::deleteSnapshotTask */
11+
class DeleteTaskTest extends TestCase
12+
{
13+
use MockClientTrait;
14+
15+
public function test_user_endpoint(): void
16+
{
17+
$client = $this->getMockedClientWithResponse(200, '', function (RequestInterface $request) {
18+
$this->assertSame('DELETE', strtoupper($request->getMethod()));
19+
$this->assertSame('pool/snapshottask/id/8', $request->getUri()->getPath());
20+
$this->assertSame('', $request->getUri()->getQuery());
21+
$this->assertNotEmpty($request->getHeader('Authorization'));
22+
});
23+
24+
$client->deleteSnapshotTask(8);
25+
}
26+
27+
public function test_user_endpoint_500(): void
28+
{
29+
$client = $this->getMockedClientWithResponse(500, '', function (RequestInterface $request) {
30+
$this->assertSame('DELETE', strtoupper($request->getMethod()));
31+
$this->assertSame('pool/snapshottask/id/8', $request->getUri()->getPath());
32+
$this->assertSame('', $request->getUri()->getQuery());
33+
$this->assertNotEmpty($request->getHeader('Authorization'));
34+
});
35+
36+
$this->expectException(FreeNasClientException::class);
37+
$client->deleteSnapshotTask(8);
38+
}
39+
}

0 commit comments

Comments
 (0)