Phalcon\Test\Unit\Acl\Adapter\MemoryTest::testAclSerialize PHP Method

testAclSerialize() public method

Tests serializing the ACL
Since: 2014-10-04
Author: Nikolaos Dimopoulos ([email protected])
public testAclSerialize ( )
    public function testAclSerialize()
    {
        $this->specify('Acl serialization/unserialization does not return a correct object back', function () {
            $filename = $this->tester->getNewFileName('acl', 'log');
            $acl = new Memory();
            $aclRole = new Role('Administrators', 'Super User access');
            $aclResource = new Resource('Customers', 'Customer management');
            $acl->addRole($aclRole);
            $acl->addResource($aclResource, ['search', 'destroy']);
            $acl->allow('Administrators', 'Customers', 'search');
            $acl->deny('Administrators', 'Customers', 'destroy');
            $contents = serialize($acl);
            file_put_contents(PATH_CACHE . $filename, $contents);
            $acl = null;
            $contents = file_get_contents(PATH_CACHE . $filename);
            $this->tester->cleanFile(PATH_CACHE, $filename);
            $acl = unserialize($contents);
            $actual = $acl instanceof Memory;
            expect($actual)->true();
            $actual = $acl->isRole('Administrators');
            expect($actual)->true();
            $actual = $acl->isResource('Customers');
            expect($actual)->true();
            $expected = Acl::ALLOW;
            $actual = $acl->isAllowed('Administrators', 'Customers', 'search');
            expect($actual)->equals($expected);
            $expected = Acl::DENY;
            $actual = $acl->isAllowed('Administrators', 'Customers', 'destroy');
            expect($actual)->equals($expected);
        });
    }