mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-07-30 09:14:09 +02:00
parent
bff76dad8e
commit
a48e0c6dda
@ -60,14 +60,7 @@ class AssignRenderer
|
||||
|
||||
protected function renderEquals($column, $expression)
|
||||
{
|
||||
if ($column[0] === '"') {
|
||||
// "me"=vars.users -> "me" in vars.users
|
||||
return sprintf(
|
||||
'%s in %s',
|
||||
$column,
|
||||
$expression
|
||||
);
|
||||
} elseif (substr($column, -7) === '.groups') {
|
||||
if (substr($column, -7) === '.groups') {
|
||||
return sprintf(
|
||||
'%s in %s',
|
||||
$expression,
|
||||
@ -82,8 +75,21 @@ class AssignRenderer
|
||||
}
|
||||
}
|
||||
|
||||
protected function renderContains(FilterExpression $filter)
|
||||
{
|
||||
return sprintf(
|
||||
'%s in %s',
|
||||
$this->renderExpressionValue(json_decode($filter->getColumn())),
|
||||
$filter->getExpression()
|
||||
);
|
||||
}
|
||||
|
||||
protected function renderFilterExpression(FilterExpression $filter)
|
||||
{
|
||||
if ($this->columnIsJson($filter)) {
|
||||
return $this->renderContains($filter);
|
||||
}
|
||||
|
||||
$column = $filter->getColumn();
|
||||
$expression = $this->renderExpressionValue(json_decode($filter->getExpression()));
|
||||
|
||||
@ -160,6 +166,12 @@ class AssignRenderer
|
||||
return IcingaConfigHelper::renderPhpValue($value);
|
||||
}
|
||||
|
||||
protected function columnIsJson(FilterExpression $filter)
|
||||
{
|
||||
$col = $filter->getColumn();
|
||||
return strlen($col) && $col[0] === '"';
|
||||
}
|
||||
|
||||
protected function renderFilterChain(FilterChain $filter)
|
||||
{
|
||||
// TODO: brackets if deeper level?
|
||||
|
@ -54,6 +54,27 @@ class AssignRendererTest extends BaseTestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function testWhetherFakeContainsOperatorRendersCorrectly()
|
||||
{
|
||||
$string = json_encode('member') . '=host.groups';
|
||||
|
||||
$expected = 'assign where "member" in host.groups';
|
||||
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$this->renderer($string)->renderAssign()
|
||||
);
|
||||
|
||||
$string = json_encode('member') . '=host.vars.some_array';
|
||||
|
||||
$expected = 'assign where "member" in host.vars.some_array';
|
||||
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$this->renderer($string)->renderAssign()
|
||||
);
|
||||
}
|
||||
|
||||
protected function renderer($string)
|
||||
{
|
||||
return AssignRenderer::forFilter(Filter::fromQueryString($string));
|
||||
|
Loading…
x
Reference in New Issue
Block a user