Вход Регистрация
Файл: htmlpurifier-4.3.0/tests/HTMLPurifier/HTMLModuleManagerTest.php
Строк: 167
<?php

class HTMLPurifier_HTMLModuleManagerTest extends HTMLPurifier_Harness
{

    protected function 
createManager() {
        
$manager = new HTMLPurifier_HTMLModuleManager();

        
$this->config->set('HTML.CustomDoctype''Blank');
        
$manager->doctypes->register('Blank');

        
$attrdef_nmtokens = new HTMLPurifier_AttrDef_HTML_Nmtokens();

        
generate_mock_once('HTMLPurifier_AttrDef');
        
$attrdef = new HTMLPurifier_AttrDefMock();
        
$attrdef->setReturnValue('make'$attrdef_nmtokens);
        
$manager->attrTypes->set('NMTOKENS'$attrdef);
        return 
$manager;
    }

    function 
test_addModule() {

        
$manager $this->createManager();

        
// ...but we add user modules

        
$common_module = new HTMLPurifier_HTMLModule();
        
$common_module->name 'Common';
        
$common_module->attr_collections['Common'] = array('class' => 'NMTOKENS');
        
$common_module->content_sets['Flow'] = 'Block | Inline';
        
$manager->addModule($common_module);

        
$structural_module = new HTMLPurifier_HTMLModule();
        
$structural_module->name 'Structural';
        
$structural_module->addElement('p''Block''Inline''Common');
        
$manager->addModule($structural_module);

        
$formatting_module = new HTMLPurifier_HTMLModule();
        
$formatting_module->name 'Formatting';
        
$formatting_module->addElement('em''Inline''Inline''Common');
        
$manager->addModule($formatting_module);

        
$unsafe_module = new HTMLPurifier_HTMLModule();
        
$unsafe_module->name 'Unsafe';
        
$unsafe_module->safe false;
        
$unsafe_module->addElement('div''Block''Flow');
        
$manager->addModule($unsafe_module);

        
$config HTMLPurifier_Config::createDefault();
        
$config->set('HTML.Trusted'false);
        
$config->set('HTML.CustomDoctype''Blank');

        
$manager->setup($config);

        
$attrdef_nmtokens = new HTMLPurifier_AttrDef_HTML_Nmtokens();

        
$p = new HTMLPurifier_ElementDef();
        
$p->attr['class'] = $attrdef_nmtokens;
        
$p->child = new HTMLPurifier_ChildDef_Optional(array('em''#PCDATA'));
        
$p->content_model 'em | #PCDATA';
        
$p->content_model_type 'optional';
        
$p->descendants_are_inline true;

        
$em = new HTMLPurifier_ElementDef();
        
$em->attr['class'] = $attrdef_nmtokens;
        
$em->child = new HTMLPurifier_ChildDef_Optional(array('em''#PCDATA'));
        
$em->content_model 'em | #PCDATA';
        
$em->content_model_type 'optional';
        
$em->descendants_are_inline true;

        
$this->assertEqual(
            array(
'p' => $p'em' => $em),
            
$manager->getElements()
        );

        
// test trusted parameter override

        
$div = new HTMLPurifier_ElementDef();
        
$div->child = new HTMLPurifier_ChildDef_Optional(array('p''div''em''#PCDATA'));
        
$div->content_model 'p | div | em | #PCDATA';
        
$div->content_model_type 'optional';
        
$div->descendants_are_inline false;

        
$this->assertEqual($div$manager->getElement('div'true));

    }

    function 
testAllowedModules() {

        
$manager = new HTMLPurifier_HTMLModuleManager();
        
$manager->doctypes->register(
            
'Fantasy Inventory 1.0'true,
            array(
'Weapons''Magic')
        );

        
// register these modules so it doesn't blow up
        
$weapons_module = new HTMLPurifier_HTMLModule();
        
$weapons_module->name 'Weapons';
        
$manager->registerModule($weapons_module);

        
$magic_module = new HTMLPurifier_HTMLModule();
        
$magic_module->name 'Magic';
        
$manager->registerModule($magic_module);

        
$config HTMLPurifier_Config::create(array(
            
'HTML.CustomDoctype' => 'Fantasy Inventory 1.0',
            
'HTML.AllowedModules' => 'Weapons'
        
));
        
$manager->setup($config);

        
$this->assertTrue( isset($manager->modules['Weapons']));
        
$this->assertFalse(isset($manager->modules['Magic']));

    }



}

// vim: et sw=4 sts=4
Онлайн: 1
Реклама