Merge branch 'master' into feature/service-actions-9284

This commit is contained in:
Marius Hein 2015-05-18 14:07:41 +02:00
commit f4d25a71c8
4 changed files with 51 additions and 22 deletions

View File

@ -12,7 +12,6 @@ class FilterExpression extends Filter
public function __construct($column, $sign, $expression)
{
$column = trim($column);
$expression = is_array($expression) ? array_map('trim', $expression) : trim($expression);
$this->column = $column;
$this->sign = $sign;
$this->expression = $expression;

View File

@ -231,10 +231,11 @@ class FilterEditor extends AbstractWidget
if ($searchCol === null) {
throw new Exception('Cannot search here');
}
$search = ltrim($search);
$filter = $this->mergeRootExpression($filter, $searchCol, '=', "*$search*");
} else {
list($k, $v) = preg_split('/=/', $search);
$filter = $this->mergeRootExpression($filter, $k, '=', $v);
$filter = $this->mergeRootExpression($filter, trim($k), '=', ltrim($v));
}
} else {
if (false === $this->resetSearchColumns($filter)) {
@ -242,6 +243,7 @@ class FilterEditor extends AbstractWidget
}
$filters = array();
$search = ltrim($search);
foreach ($this->searchColumns as $searchColumn) {
$filters[] = Filter::expression($searchColumn, '=', "*$search*");
}

View File

@ -68,17 +68,8 @@ if ($object->getType() === $object::TYPE_HOST) {
<?php if ($object->check_execution_time): ?>
<tr>
<th><?= $this->translate('Check execution time') ?></th>
<td><?php
$matches = array();
if (preg_match(
'/(?<!.)([0-9]+\.[0-9]{4,})(?!.)/ms',
$object->check_execution_time,
$matches
)) {
printf('%.3f', (float) $matches[1]);
} else {
echo $object->check_execution_time;
}
<td><?= $object->check_execution_time === null
? '-' : round((float) $object->check_execution_time, 3)
?>s</td>
</tr>
<?php endif ?>

View File

@ -198,16 +198,53 @@ class FilterTest extends BaseTestCase
$this->assertNotEquals((string) $c, (string) $d);
}
public function testLeadingAndTrailingWhitespacesSanitizing()
public function testLeadingAndTrailingWhitespaces()
{
$columnHasWhitespaces = Filter::where(' host ', 'localhost');
$expressionHasWhitespaces = Filter::where('host', ' localhost ');
$bothHaveWhitespaces = Filter::fromQueryString(' host = localhost ');
$withArray = Filter::where(' host ', array(' no match ', ' localhost '));
$this->assertTrue($columnHasWhitespaces->matches($this->sampleData[0]));
$this->assertTrue($expressionHasWhitespaces->matches($this->sampleData[0]));
$this->assertTrue($bothHaveWhitespaces->matches($this->sampleData[0]));
$this->assertTrue($withArray->matches($this->sampleData[0]));
$columnWithWhitespaces = Filter::where(' host ', 'localhost');
$this->assertTrue($columnWithWhitespaces->matches((object) array(
'host' => 'localhost'
)),
'Filter doesn\'t remove leading and trailing whitespaces from columns'
);
$expressionWithLeadingWhitespaces = Filter::where('host', ' localhost');
$this->assertTrue($expressionWithLeadingWhitespaces->matches((object) array(
'host' => ' localhost'
)),
'Filter doesn\'t take leading whitespaces of expressions into account'
);
$this->assertFalse($expressionWithLeadingWhitespaces->matches((object) array(
'host' => ' localhost '
)),
'Filter doesn\'t take trailing whitespaces of expressions into account'
);
$expressionWithTrailingWhitespaces = Filter::where('host', 'localhost ');
$this->assertTrue($expressionWithTrailingWhitespaces->matches((object) array(
'host' => 'localhost '
)),
'Filter doesn\'t take trailing whitespaces of expressions into account'
);
$this->assertFalse($expressionWithTrailingWhitespaces->matches((object) array(
'host' => ' localhost '
)),
'Filter doesn\'t take leading whitespaces of expressions into account'
);
$expressionWithLeadingAndTrailingWhitespaces = Filter::where('host', ' localhost ');
$this->assertTrue($expressionWithLeadingAndTrailingWhitespaces->matches((object) array(
'host' => ' localhost '
)),
'Filter doesn\'t take leading and trailing whitespaces of expressions into account'
);
$this->assertFalse($expressionWithLeadingAndTrailingWhitespaces->matches((object) array(
'host' => ' localhost '
)),
'Filter doesn\'t take leading and trailing whitespaces of expressions into account'
);
$queryStringWithWhitespaces = Filter::fromQueryString(' host = localhost ');
$this->assertTrue($queryStringWithWhitespaces->matches((object) array(
'host' => ' localhost '
)),
'Filter doesn\'t take leading and trailing whitespaces of expressions in query strings into account'
);
}
private function row($idx)