diff options
Diffstat (limited to 'tests/unit/Access')
-rw-r--r-- | tests/unit/Access/AccessListTest.php | 191 | ||||
-rw-r--r-- | tests/unit/Access/PermissionLimitsTest.php | 78 | ||||
-rw-r--r-- | tests/unit/Access/PermissionRolesTest.php | 101 | ||||
-rw-r--r-- | tests/unit/Access/PermissionsTest.php | 322 |
4 files changed, 0 insertions, 692 deletions
diff --git a/tests/unit/Access/AccessListTest.php b/tests/unit/Access/AccessListTest.php deleted file mode 100644 index dbc19fabb..000000000 --- a/tests/unit/Access/AccessListTest.php +++ /dev/null @@ -1,191 +0,0 @@ -<?php -/* - * Copyright (c) 2017 Hubzilla - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -namespace Zotlabs\Tests\Unit\Access; - -use Zotlabs\Tests\Unit\UnitTestCase; -use Zotlabs\Access\AccessList; - -/** - * @brief Unit Test case for AccessList class. - * - * @covers Zotlabs\Access\AccessList - */ -class AccessListTest extends UnitTestCase { - - /** - * @brief Expected result for most tests. - * @var array - */ - protected $expectedResult = [ - 'allow_cid' => '<acid><acid2>', - 'allow_gid' => '<agid>', - 'deny_cid' => '', - 'deny_gid' => '<dgid><dgid2>' - ]; - - - - public function testConstructor() { - $channel = [ - 'channel_allow_cid' => '<acid><acid2>', - 'channel_allow_gid' => '<agid>', - 'channel_deny_cid' => '', - 'channel_deny_gid' => '<dgid><dgid2>' - ]; - - $accessList = new AccessList($channel); - - $this->assertEquals($this->expectedResult, $accessList->get()); - $this->assertFalse($accessList->get_explicit()); - } - - /** - * @expectedException PHPUnit\Framework\Error\Error - */ - public function testPHPErrorOnInvalidConstructor() { - $accessList = new AccessList('invalid'); - // Causes: "Illegal string offset 'channel_allow_cid'" - } - - public function testDefaultGetExplicit() { - $accessList = new AccessList([]); - - $this->assertFalse($accessList->get_explicit()); - } - - public function testDefaultGet() { - $arr = [ - 'allow_cid' => '', - 'allow_gid' => '', - 'deny_cid' => '', - 'deny_gid' => '' - ]; - - $accessList = new AccessList([]); - - $this->assertEquals($arr, $accessList->get()); - } - - public function testSet() { - $arr = [ - 'allow_cid' => '<acid><acid2>', - 'allow_gid' => '<agid>', - 'deny_cid' => '', - 'deny_gid' => '<dgid><dgid2>' - ]; - $accessList = new AccessList([]); - - // default explicit true - $accessList->set($arr); - - $this->assertEquals($this->expectedResult, $accessList->get()); - $this->assertTrue($accessList->get_explicit()); - - // set explicit false - $accessList->set($arr, false); - - $this->assertEquals($this->expectedResult, $accessList->get()); - $this->assertFalse($accessList->get_explicit()); - } - - /** - * @expectedException PHPUnit\Framework\Error\Error - */ - public function testPHPErrorOnInvalidSet() { - $accessList = new AccessList([]); - - $accessList->set('invalid'); - // Causes: "Illegal string offset 'allow_cid'" - } - - /** - * set_from_array() calls some other functions, too which are not yet unit tested. - * @uses ::perms2str - * @uses ::sanitise_acl - * @uses ::notags - */ - public function testSetFromArray() { - // array - $arraySetFromArray = [ - 'contact_allow' => ['acid', 'acid2'], - 'group_allow' => ['agid'], - 'contact_deny' => [], - 'group_deny' => ['dgid', 'dgid2'] - ]; - $accessList = new AccessList([]); - $accessList->set_from_array($arraySetFromArray); - - $this->assertEquals($this->expectedResult, $accessList->get()); - $this->assertTrue($accessList->get_explicit()); - - - // string - $stringSetFromArray = [ - 'contact_allow' => 'acid,acid2', - 'group_allow' => 'agid', - 'contact_deny' => '', - 'group_deny' => 'dgid, dgid2' - ]; - $accessList2 = new AccessList([]); - $accessList2->set_from_array($stringSetFromArray, false); - - $this->assertEquals($this->expectedResult, $accessList2->get()); - $this->assertFalse($accessList2->get_explicit()); - } - - /** - * @dataProvider isprivateProvider - */ - public function testIsPrivate($channel) { - $accessListPublic = new AccessList([]); - $this->assertFalse($accessListPublic->is_private()); - - $accessListPrivate = new AccessList($channel); - $this->assertTrue($accessListPrivate->is_private()); - } - - public function isprivateProvider() { - return [ - 'all set' => [[ - 'channel_allow_cid' => '<acid>', - 'channel_allow_gid' => '<agid>', - 'channel_deny_cid' => '<dcid>', - 'channel_deny_gid' => '<dgid>' - ]], - 'only one set' => [[ - 'channel_allow_cid' => '<acid>', - 'channel_allow_gid' => '', - 'channel_deny_cid' => '', - 'channel_deny_gid' => '' - ]], - 'acid+null' => [[ - 'channel_allow_cid' => '<acid>', - 'channel_allow_gid' => null, - 'channel_deny_cid' => '', - 'channel_deny_gid' => '' - ]] - ]; - } - -}
\ No newline at end of file diff --git a/tests/unit/Access/PermissionLimitsTest.php b/tests/unit/Access/PermissionLimitsTest.php deleted file mode 100644 index 57ad42a19..000000000 --- a/tests/unit/Access/PermissionLimitsTest.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php -/* - * Copyright (c) 2017 Hubzilla - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -namespace Zotlabs\Tests\Unit\Access; - -use phpmock\phpunit\PHPMock; -use Zotlabs\Tests\Unit\UnitTestCase; -use Zotlabs\Access\PermissionLimits; - -/** - * @brief Unit Test case for PermissionLimits class. - * - * @covers Zotlabs\Access\PermissionLimits - */ -class PermissionLimitsTest extends UnitTestCase { - - use PHPMock; - - /** - * @todo If we could replace static call to Permissions::Perms() in - * Std_Limits() we could better unit test this method, now we test the - * result of Permissions::Perms() mostly. - * - * @uses Zotlabs\Access\Permissions::Perms - * @uses ::call_hooks - */ - public function testStd_Limits() { - // There are 18 default perms - $permsCount = 18; - - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->exactly($permsCount)); - - $stdlimits = PermissionLimits::Std_Limits(); - $this->assertCount($permsCount, $stdlimits, "There should be $permsCount permissions."); - - $this->assertEquals(PERMS_PUBLIC, $stdlimits['view_stream']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['send_stream']); - $this->assertEquals(PERMS_PUBLIC, $stdlimits['view_profile']); - $this->assertEquals(PERMS_PUBLIC, $stdlimits['view_contacts']); - $this->assertEquals(PERMS_PUBLIC, $stdlimits['view_storage']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['write_storage']); - $this->assertEquals(PERMS_PUBLIC, $stdlimits['view_pages']); - $this->assertEquals(PERMS_PUBLIC, $stdlimits['view_wiki']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['write_pages']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['write_wiki']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['post_wall']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['post_comments']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['post_mail']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['post_like']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['tag_deliver']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['chat']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['republish']); - $this->assertEquals(PERMS_SPECIFIC, $stdlimits['delegate']); - } - -}
\ No newline at end of file diff --git a/tests/unit/Access/PermissionRolesTest.php b/tests/unit/Access/PermissionRolesTest.php deleted file mode 100644 index 58fd88bb1..000000000 --- a/tests/unit/Access/PermissionRolesTest.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php -/* - * Copyright (c) 2017 Hubzilla - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -namespace Zotlabs\Tests\Unit\Access; - -use Zotlabs\Tests\Unit\UnitTestCase; -use Zotlabs\Access\PermissionRoles; -use phpmock\phpunit\PHPMock; - -/** - * @brief Unit Test case for PermissionRoles class. - * - * @TODO Work around dependencies to static PermissionLimits methods. - * - * @covers Zotlabs\Access\PermissionRoles - */ -class PermissionRolesTest extends UnitTestCase { - - use PHPMock; - - public function testVersion() { - $expectedVersion = 2; - - $this->assertEquals($expectedVersion, PermissionRoles::version()); - - $pr = new PermissionRoles(); - $this->assertEquals($expectedVersion, $pr->version()); - } - - - public function testRoles() { - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->atLeastOnce())->willReturnCallback( - function ($string) { - return $string; - } - ); - - $roles = PermissionRoles::roles(); - $r = new PermissionRoles(); - $this->assertEquals($roles, $r->roles()); - - $socialNetworking = [ - 'social_federation' => 'Social - Federation', - 'social' => 'Social - Mostly Public', - 'social_restricted' => 'Social - Restricted', - 'social_private' => 'Social - Private' - ]; - - $this->assertArraySubset(['Social Networking' => $socialNetworking], $roles); - $this->assertEquals($socialNetworking, $roles['Social Networking']); - - $this->assertCount(5, $roles, 'There should be 5 permission groups.'); - - $this->assertCount(1, $roles['Other'], "In the 'Other' group should be just one permission role"); - } - - - /** - * @uses ::call_hooks - * @uses Zotlabs\Access\PermissionLimits::Std_Limits - * @uses Zotlabs\Access\Permissions::Perms - */ - public function testRole_perms() { - // Create a stub for global function t() - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t = $this->getFunctionMock('Zotlabs\Access', 'get_config'); - - $rp_social = PermissionRoles::role_perms('social'); - $this->assertEquals('social', $rp_social['role']); - - - $rp_custom = PermissionRoles::role_perms('custom'); - $this->assertEquals(['role' => 'custom'], $rp_custom); - - $rp_nonexistent = PermissionRoles::role_perms('nonexistent'); - $this->assertEquals(['role' => 'nonexistent'], $rp_nonexistent); - } - -} diff --git a/tests/unit/Access/PermissionsTest.php b/tests/unit/Access/PermissionsTest.php deleted file mode 100644 index 40724fff8..000000000 --- a/tests/unit/Access/PermissionsTest.php +++ /dev/null @@ -1,322 +0,0 @@ -<?php -/* - * Copyright (c) 2017 Hubzilla - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -namespace Zotlabs\Tests\Unit\Access; - -use phpmock\phpunit\PHPMock; -use Zotlabs\Tests\Unit\UnitTestCase; -use Zotlabs\Access\Permissions; - -/** - * @brief Unit Test case for Permissions class. - * - * @covers Zotlabs\Access\Permissions - */ -class PermissionsTest extends UnitTestCase { - - use PHPMock; - - public function testVersion() { - $expectedVersion = 2; - - // static call - $this->assertEquals($expectedVersion, Permissions::version()); - - // instance call - $p = new Permissions(); - $this->assertEquals($expectedVersion, $p->version()); - } - - /** - * @coversNothing - */ - public function testVersionEqualsPermissionRoles() { - $p = new Permissions(); - $pr = new \Zotlabs\Access\PermissionRoles(); - $this->assertEquals($p->version(), $pr->version()); - } - - /** - * @uses ::call_hooks - */ - public function testPerms() { - // There are 18 default perms - $permsCount = 18; - - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->exactly(2*$permsCount))->willReturnCallback( - function ($string) { - return $string; - } - ); - - // static method Perms() - $perms = Permissions::Perms(); - - $p = new Permissions(); - $this->assertEquals($perms, $p->Perms()); - - $this->assertEquals($permsCount, count($perms), "There should be $permsCount permissions."); - - $this->assertEquals('Can view my channel stream and posts', $perms['view_stream']); - - // non existent perm should not be set - $this->assertFalse(isset($perms['invalid_perm'])); - } - - /** - * filter parmeter is only used in hook \b permissions_list. So the result - * in this test should be the same as if there was no filter parameter. - * - * @todo Stub call_hooks() function and also test filter - * - * @uses ::call_hooks - */ - public function testPermsFilter() { - // There are 18 default perms - $permsCount = 18; - - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->exactly(2*$permsCount))->willReturnCallback( - function ($string) { - return $string; - } - ); - - $perms = Permissions::Perms('view_'); - $this->assertEquals($permsCount, count($perms)); - - $this->assertEquals('Can view my channel stream and posts', $perms['view_stream']); - - $perms = Permissions::Perms('invalid_perm'); - $this->assertEquals($permsCount, count($perms)); - } - - /** - * Better should mock Permissions::Perms, but not possible with static methods. - * - * @uses ::call_hooks - * - * @dataProvider FilledPermsProvider - * - * @param array $permarr An indexed permissions array to pass - * @param array $expected The expected result perms array - */ - public function testFilledPerms($permarr, $expected) { - // Create a stub for global function t() - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - - $this->assertEquals($expected, Permissions::FilledPerms($permarr)); - } - /** - * @return array An associative array with test values for FilledPerms() - * * \e array Indexed array which is passed as parameter to FilledPerms() - * * \e array Expected associative result array with filled perms - */ - public function FilledPermsProvider() { - return [ - 'Empty param array' => [ - [], - [ - 'view_stream' => 0, - 'send_stream' => 0, - 'view_profile' => 0, - 'view_contacts' => 0, - 'view_storage' => 0, - 'write_storage' => 0, - 'view_pages' => 0, - 'view_wiki' => 0, - 'write_pages' => 0, - 'write_wiki' => 0, - 'post_wall' => 0, - 'post_comments' => 0, - 'post_mail' => 0, - 'post_like' => 0, - 'tag_deliver' => 0, - 'chat' => 0, - 'republish' => 0, - 'delegate' => 0 - ] - ], - 'provide view_stream and view_pages as param' => [ - ['view_stream', 'view_pages'], - [ - 'view_stream' => 1, - 'send_stream' => 0, - 'view_profile' => 0, - 'view_contacts' => 0, - 'view_storage' => 0, - 'write_storage' => 0, - 'view_pages' => 1, - 'view_wiki' => 0, - 'write_pages' => 0, - 'write_wiki' => 0, - 'post_wall' => 0, - 'post_comments' => 0, - 'post_mail' => 0, - 'post_like' => 0, - 'tag_deliver' => 0, - 'chat' => 0, - 'republish' => 0, - 'delegate' => 0 - ] - ], - 'provide an unknown param' => [ - ['view_stream', 'unknown_perm'], - [ - 'view_stream' => 1, - 'send_stream' => 0, - 'view_profile' => 0, - 'view_contacts' => 0, - 'view_storage' => 0, - 'write_storage' => 0, - 'view_pages' => 0, - 'view_wiki' => 0, - 'write_pages' => 0, - 'write_wiki' => 0, - 'post_wall' => 0, - 'post_comments' => 0, - 'post_mail' => 0, - 'post_like' => 0, - 'tag_deliver' => 0, - 'chat' => 0, - 'republish' => 0, - 'delegate' => 0 - ] - ] - ]; - } - /** - * @uses ::call_hooks - */ - public function testFilledPermsNull() { - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->atLeastOnce()); - // Create a stub for global function bt() with expectations - $bt = $this->getFunctionMock('Zotlabs\Access', 'btlogger'); - $bt->expects($this->once())->with($this->equalTo('FilledPerms: null')); - - $result = [ - 'view_stream' => 0, - 'send_stream' => 0, - 'view_profile' => 0, - 'view_contacts' => 0, - 'view_storage' => 0, - 'write_storage' => 0, - 'view_pages' => 0, - 'view_wiki' => 0, - 'write_pages' => 0, - 'write_wiki' => 0, - 'post_wall' => 0, - 'post_comments' => 0, - 'post_mail' => 0, - 'post_like' => 0, - 'tag_deliver' => 0, - 'chat' => 0, - 'republish' => 0, - 'delegate' => 0 - ]; - - $this->assertEquals($result, Permissions::FilledPerms(null)); - } - - /** - * @dataProvider OPermsProvider - * - * @param array $permarr The params to pass to the OPerms method - * @param array $expected The expected result - */ - public function testOPerms($permarr, $expected) { - $this->assertEquals($expected, Permissions::OPerms($permarr)); - } - /** - * @return array An associative array with test values for OPerms() - * * \e array Array with perms to test - * * \e array Expected result array - */ - public function OPermsProvider() { - return [ - 'empty' => [ - [], - [] - ], - 'valid' => [ - ['perm1' => 1, 'perm2' => 0], - [['name' => 'perm1', 'value' => 1], ['name' => 'perm2', 'value' => 0]] - ], - 'null array' => [ - null, - [] - ] - ]; - } - - /** - * @dataProvider permsCompareProvider - * - * @param array $p1 The first permission - * @param array $p2 The second permission - * @param boolean $expectedresult The expected result of the tested method - */ - public function testPermsCompare($p1, $p2, $expectedresult) { - $this->assertEquals($expectedresult, Permissions::PermsCompare($p1, $p2)); - } - /** - * @return array An associative array with test values for PermsCompare() - * * \e array 1st array with perms - * * \e array 2nd array with perms - * * \e boolean expected result for the perms comparison - */ - public function permsCompareProvider() { - return [ - 'equal' => [ - ['perm1' => 1, 'perm2' => 0], - ['perm1' => 1, 'perm2' => 0], - true - ], - 'different values' => [ - ['perm1' => 1, 'perm2' => 0], - ['perm1' => 0, 'perm2' => 1], - false - ], - 'different order' => [ - ['perm1' => 1, 'perm2' => 0], - ['perm2' => 0, 'perm1' => 1], - true - ], - 'partial first in second' => [ - ['perm1' => 1], - ['perm1' => 1, 'perm2' => 0], - true - ], - 'partial second in first' => [ - ['perm1' => 1, 'perm2' => 0], - ['perm1' => 1], - false - ] - ]; - } -} |