mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2025-07-31 19:30:21 +02:00
[3.1.0] Continue building up validation functions
- Remove incorrect parsing of value aliases - Implement most allowed and value alias checks - Add assertIsBool, assertIsArray and assertIsLookup to ValidatorAtom - Publish string types in VarParser git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1647 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
ERROR: Value 3 in allowed in directive 'Ns.Dir' must be a string
|
||||
----
|
||||
Ns
|
||||
DESCRIPTION: Generic namespace.
|
||||
----
|
||||
ID: Ns.Dir
|
||||
TYPE: string
|
||||
DESCRIPTION: Description
|
||||
DEFAULT: 'asdf'
|
||||
ALLOWED: 'asdf', 3
|
@@ -0,0 +1,10 @@
|
||||
ERROR: Allowed in directive 'Ns.Dir' must not be empty
|
||||
----
|
||||
Ns
|
||||
DESCRIPTION: Generic namespace.
|
||||
----
|
||||
ID: Ns.Dir
|
||||
TYPE: string
|
||||
DESCRIPTION: Description
|
||||
DEFAULT: 'asdf'
|
||||
ALLOWED:
|
@@ -0,0 +1,10 @@
|
||||
ERROR: Type in directive 'Ns.Dir' must be a string type when used with allowed or value aliases
|
||||
----
|
||||
Ns
|
||||
DESCRIPTION: Namespace
|
||||
----
|
||||
Ns.Dir
|
||||
DESCRIPTION: Directive
|
||||
TYPE: int
|
||||
DEFAULT: 3
|
||||
ALLOWED: 1, 2, 3
|
@@ -0,0 +1,10 @@
|
||||
ERROR: Type in directive 'Ns.Dir' must be a string type when used with allowed or value aliases
|
||||
----
|
||||
Ns
|
||||
DESCRIPTION: Namespace
|
||||
----
|
||||
Ns.Dir
|
||||
DESCRIPTION: Directive
|
||||
TYPE: int
|
||||
DEFAULT: 3
|
||||
VALUE-ALIASES: 2 => 3
|
@@ -0,0 +1,10 @@
|
||||
ERROR: Alias 3 in valueAliases in directive 'Ns.Dir' must be a string
|
||||
----
|
||||
Ns
|
||||
DESCRIPTION: Namespace
|
||||
----
|
||||
Ns.Dir
|
||||
DESCRIPTION: Directive
|
||||
TYPE: string
|
||||
DEFAULT: 'a'
|
||||
VALUE-ALIASES: 3 => 'a'
|
@@ -0,0 +1,11 @@
|
||||
ERROR: Alias 'b' in valueAliases in directive 'Ns.Dir' must not be an allowed value
|
||||
----
|
||||
Ns
|
||||
DESCRIPTION: Namespace
|
||||
----
|
||||
Ns.Dir
|
||||
DESCRIPTION: Directive
|
||||
TYPE: string
|
||||
DEFAULT: 'a'
|
||||
ALLOWED: 'a', 'b', 'c'
|
||||
VALUE-ALIASES: 'b' => 'c'
|
@@ -0,0 +1,10 @@
|
||||
ERROR: Alias 'bar' in valueAliases in directive 'Ns.Dir' must not be an alias to itself
|
||||
----
|
||||
Ns
|
||||
DESCRIPTION: Namespace
|
||||
----
|
||||
Ns.Dir
|
||||
DESCRIPTION: Directive
|
||||
TYPE: string
|
||||
DEFAULT: 'foo'
|
||||
VALUE-ALIASES: 'bar' => 'bar'
|
@@ -0,0 +1,11 @@
|
||||
ERROR: Alias 'c' in valueAliases in directive 'Ns.Dir' must be an alias to an allowed value
|
||||
----
|
||||
Ns
|
||||
DESCRIPTION: Namespace
|
||||
----
|
||||
Ns.Dir
|
||||
DESCRIPTION: Directive
|
||||
TYPE: string
|
||||
DEFAULT: 'a'
|
||||
ALLOWED: 'a', 'b'
|
||||
VALUE-ALIASES: 'c' => 'd'
|
@@ -0,0 +1,10 @@
|
||||
ERROR: Alias target 3 from alias 'b' in valueAliases in directive 'Ns.Dir' must be a string
|
||||
----
|
||||
Ns
|
||||
DESCRIPTION: Namespace
|
||||
----
|
||||
Ns.Dir
|
||||
DESCRIPTION: Directive
|
||||
TYPE: string
|
||||
DEFAULT: 'a'
|
||||
VALUE-ALIASES: 'b' => 3
|
@@ -55,4 +55,36 @@ class HTMLPurifier_ConfigSchema_ValidatorAtomTest extends UnitTestCase
|
||||
$this->makeAtom('')->assertNotEmpty();
|
||||
}
|
||||
|
||||
public function testAssertIsBool() {
|
||||
$this->makeAtom(false)->assertIsBool();
|
||||
}
|
||||
|
||||
public function testAssertIsBoolFail() {
|
||||
$this->expectValidationException("Property in context must be a boolean");
|
||||
$this->makeAtom('0')->assertIsBool();
|
||||
}
|
||||
|
||||
public function testAssertIsArray() {
|
||||
$this->makeAtom(array())->assertIsArray();
|
||||
}
|
||||
|
||||
public function testAssertIsArrayFail() {
|
||||
$this->expectValidationException("Property in context must be an array");
|
||||
$this->makeAtom('asdf')->assertIsArray();
|
||||
}
|
||||
|
||||
|
||||
public function testAssertIsLookup() {
|
||||
$this->makeAtom(array('foo' => true))->assertIsLookup();
|
||||
}
|
||||
|
||||
public function testAssertIsLookupFail() {
|
||||
$this->expectValidationException("Property in context must be a lookup array");
|
||||
$this->makeAtom(array('foo' => 4))->assertIsLookup();
|
||||
}
|
||||
|
||||
public function testAssertIsLookupFailIsArray() {
|
||||
$this->expectValidationException("Property in context must be an array");
|
||||
$this->makeAtom('asdf')->assertIsLookup();
|
||||
}
|
||||
}
|
||||
|
@@ -72,6 +72,42 @@ class HTMLPurifier_ConfigSchema_ValidatorTest extends UnitTestCase
|
||||
$this->validator->validate($this->interchange);
|
||||
}
|
||||
|
||||
public function testDirectiveTypeAllowsNullIsBool() {
|
||||
$this->makeNamespace('Ns');
|
||||
$d = $this->makeDirective('Ns', 'Dir');
|
||||
$d->default = 0;
|
||||
$d->type = 'int';
|
||||
$d->description = 'Description';
|
||||
$d->typeAllowsNull = 'yes';
|
||||
|
||||
$this->expectValidationException("TypeAllowsNull in directive 'Ns.Dir' must be a boolean");
|
||||
$this->validator->validate($this->interchange);
|
||||
}
|
||||
|
||||
public function testDirectiveValueAliasesIsArray() {
|
||||
$this->makeNamespace('Ns');
|
||||
$d = $this->makeDirective('Ns', 'Dir');
|
||||
$d->default = 'a';
|
||||
$d->type = 'string';
|
||||
$d->description = 'Description';
|
||||
$d->valueAliases = 2;
|
||||
|
||||
$this->expectValidationException("ValueAliases in directive 'Ns.Dir' must be an array");
|
||||
$this->validator->validate($this->interchange);
|
||||
}
|
||||
|
||||
public function testDirectiveAllowedIsLookup() {
|
||||
$this->makeNamespace('Ns');
|
||||
$d = $this->makeDirective('Ns', 'Dir');
|
||||
$d->default = 'foo';
|
||||
$d->type = 'string';
|
||||
$d->description = 'Description';
|
||||
$d->allowed = array('foo' => 1);
|
||||
|
||||
$this->expectValidationException("Allowed in directive 'Ns.Dir' must be a lookup array");
|
||||
$this->validator->validate($this->interchange);
|
||||
}
|
||||
|
||||
// helper functions
|
||||
|
||||
protected function makeNamespace($n) {
|
||||
|
Reference in New Issue
Block a user