diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2024-11-09 15:45:40 +0100 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2024-11-10 16:43:48 +0100 |
commit | 57e69372d35b060dc29be2ff5527fc0ef19430e0 (patch) | |
tree | d7085cbd29796ad2627fc8660db0cb8afed3fb3f /tests/unit | |
parent | 4e6696b049beec7ed4616b5a3f7e4a0b60d3be09 (diff) | |
download | volse-hubzilla-57e69372d35b060dc29be2ff5527fc0ef19430e0.tar.gz volse-hubzilla-57e69372d35b060dc29be2ff5527fc0ef19430e0.tar.bz2 volse-hubzilla-57e69372d35b060dc29be2ff5527fc0ef19430e0.zip |
Module\Item: Move processing of zot and as requests to functions.
These seem to be entirely independent, so moving the body of the if
statements to separate functions should be fine.
Diffstat (limited to 'tests/unit')
-rw-r--r-- | tests/unit/Module/ItemTest.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/unit/Module/ItemTest.php b/tests/unit/Module/ItemTest.php new file mode 100644 index 000000000..b461a3685 --- /dev/null +++ b/tests/unit/Module/ItemTest.php @@ -0,0 +1,56 @@ +<?php +/* + * SPDX-FileCopyrightText: 2024 Hubzilla Community + * SPDX-FileContributor: Harald Eilertsen + * + * SPDX-License-Identifier: MIT + */ + +namespace Zotlabs\Tests\Unit\Module; + +use PHPUnit\Framework\Attributes\TestWith; + +class ItemTest extends TestCase { + + #[TestWith(['application/x-zot+json'])] + #[TestWith(['application/x-zot-activity+json'])] + public function test_request_with_no_args_return_404(string $type): void { + $this->expect_status(404, 'Not found'); + + $_SERVER['HTTP_ACCEPT'] = $type; + $this->get('item'); + } + + #[TestWith(['application/x-zot+json'])] + #[TestWith(['application/x-zot-activity+json'])] + public function test_request_with_non_exiting_idem_id(string $type): void { + $this->expect_status(404, 'Not found'); + + $_SERVER['HTTP_ACCEPT'] = $type; + $this->get('item/non-existing-id'); + } + + /** + * Helper function to mock the `http_status_exit` function. + * + * The request will be terminated by throwing an exception, which + * will also terminate the test case. Iow. control will not return + * to the test case after the request has been made. + * + * @param int $status The expected HTTP status code. + * @param string $description The expected HTTP status description + */ + private function expect_status(int $status, string $description): void { + $this->getFunctionMock('Zotlabs\Module', 'http_status_exit') + ->expects($this->once()) + ->with($this->identicalTo($status), $this->identicalTo($description)) + ->willReturnCallback( + function () { + throw new KillmeException(); + } + ); + + $this->expectException(KillmeException::class); + + } +} |