diff options
Diffstat (limited to 'ui/tests/api_json/testItemPrototype.php')
-rw-r--r-- | ui/tests/api_json/testItemPrototype.php | 115 |
1 files changed, 88 insertions, 27 deletions
diff --git a/ui/tests/api_json/testItemPrototype.php b/ui/tests/api_json/testItemPrototype.php index 1332ab75ed8..3315bf649ed 100644 --- a/ui/tests/api_json/testItemPrototype.php +++ b/ui/tests/api_json/testItemPrototype.php @@ -43,62 +43,93 @@ class testItemPrototype extends CAPITest { ITEM_TYPE_DEPENDENT => null, ITEM_TYPE_HTTPAGENT => '50022', ITEM_TYPE_SNMP => '50029', - ITEM_TYPE_SCRIPT => '50022' + ITEM_TYPE_SCRIPT => null ]; $item_type_tests = []; foreach ($valid_item_types as $type => $interfaceid) { switch ($type) { + case ITEM_TYPE_ZABBIX: + case ITEM_TYPE_SIMPLE: + case ITEM_TYPE_INTERNAL: + case ITEM_TYPE_ZABBIX_ACTIVE: + case ITEM_TYPE_EXTERNAL: + $params = [ + 'delay' => '30s' + ]; + break; + + case ITEM_TYPE_DB_MONITOR: + $params = [ + 'params' => 'SELECT * FROM table', + 'delay' => '30s' + ]; + break; + case ITEM_TYPE_IPMI: $params = [ - 'ipmi_sensor' => '1.2.3' + 'ipmi_sensor' => '1.2.3', + 'delay' => '30s' ]; break; - case ITEM_TYPE_TRAPPER: + case ITEM_TYPE_SSH: $params = [ - 'delay' => '0' + 'username' => 'username', + 'authtype' => ITEM_AUTHTYPE_PASSWORD, + 'params' => 'return true;', + 'delay' => '30s' ]; break; case ITEM_TYPE_TELNET: - case ITEM_TYPE_SSH: $params = [ 'username' => 'username', - 'authtype' => ITEM_AUTHTYPE_PASSWORD + 'params' => 'return true;', + 'delay' => '30s' ]; break; - case ITEM_TYPE_DEPENDENT: + case ITEM_TYPE_CALCULATED: $params = [ - 'master_itemid' => '150151', - 'delay' => '0' + 'params' => '1+1', + 'delay' => '30s' ]; break; case ITEM_TYPE_JMX: $params = [ 'username' => 'username', - 'password' => 'password' + 'password' => 'password', + 'delay' => '30s' + ]; + break; + + case ITEM_TYPE_DEPENDENT: + $params = [ + 'master_itemid' => '150151' ]; break; case ITEM_TYPE_HTTPAGENT: $params = [ - 'url' => 'http://0.0.0.0' + 'url' => 'http://0.0.0.0', + 'delay' => '30s' ]; break; case ITEM_TYPE_SNMP: $params = [ - 'snmp_oid' => '1.2.3' + 'snmp_oid' => '1.2.3', + 'delay' => '30s' ]; break; case ITEM_TYPE_SCRIPT: $params = [ 'params' => 'script', - 'timeout' => '30s' + 'timeout' => '30s', + 'delay' => '30s' ]; break; @@ -116,16 +147,45 @@ class testItemPrototype extends CAPITest { 'hostid' => '50009', 'ruleid' => '400660', 'name' => 'Test item prototype of type '.$type, - 'key_' => 'test_item_prototype_of_type_'.$type, + 'key_' => 'test_item_prototype_of_type_'.$type.'[{#LLD_MACRO}]', 'value_type' => ITEM_VALUE_TYPE_UINT64, - 'type' => (string) $type, - 'delay' => '30s' + 'type' => (string) $type ], 'expected_error' => null ]; } - return [ + $interfaces_tests = []; + $optional = [ITEM_TYPE_SIMPLE, ITEM_TYPE_EXTERNAL, ITEM_TYPE_SSH, ITEM_TYPE_TELNET, ITEM_TYPE_HTTPAGENT]; + $required = [ITEM_TYPE_SNMP, ITEM_TYPE_SNMPTRAP, ITEM_TYPE_IPMI, ITEM_TYPE_ZABBIX, ITEM_TYPE_JMX]; + + foreach ($item_type_tests as $item_type_test) { + if (in_array($item_type_test['request_data']['type'], $optional)) { + unset($item_type_test['request_data']['interfaceid']); + + $request_data = [ + 'name' => $item_type_test['request_data']['name'].' missing', + 'key_' => substr($item_type_test['request_data']['key_'], 0, -1).', missing]' + ] + $item_type_test['request_data']; + + $interfaces_tests[] = ['request_data' => $request_data] + $item_type_test; + + $request_data = [ + 'name' => $item_type_test['request_data']['name'].' zero', + 'key_' => substr($item_type_test['request_data']['key_'], 0, -1).', zero]', + 'interfaceid' => '0' + ] + $item_type_test['request_data']; + + $interfaces_tests[] = ['request_data' => $request_data] + $item_type_test; + } + else if (in_array($item_type_test['request_data']['type'], $required)) { + unset($item_type_test['request_data']['interfaceid']); + $item_type_test['expected_error'] = 'Invalid parameter "/1": the parameter "interfaceid" is missing.'; + $interfaces_tests[] = $item_type_test; + } + } + + return array_merge([ [ 'request_data' => [ 'hostid' => '50009', @@ -167,7 +227,7 @@ class testItemPrototype extends CAPITest { 'value_type' => ITEM_VALUE_TYPE_UINT64, 'type' => ITEM_TYPE_ZABBIX ], - 'expected_error' => 'Incorrect arguments passed to function.' + 'expected_error' => 'Invalid parameter "/1": the parameter "ruleid" is missing.' ], [ 'request_data' => [ @@ -180,7 +240,7 @@ class testItemPrototype extends CAPITest { 'type' => ITEM_TYPE_ZABBIX, 'delay' => '0' ], - 'expected_error' => 'Item will not be refreshed. Specified update interval requires having at least one either flexible or scheduling interval.' + 'expected_error' => 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.' ], // Test update interval for mqtt key of the Active agent type. [ @@ -189,7 +249,6 @@ class testItemPrototype extends CAPITest { 'ruleid' => '400660', 'name' => 'Test mqtt key for active agent', 'key_' => 'mqtt.get[{#3}]', - 'interfaceid' => '50022', 'value_type' => ITEM_VALUE_TYPE_UINT64, 'type' => ITEM_TYPE_ZABBIX_ACTIVE ], @@ -201,7 +260,6 @@ class testItemPrototype extends CAPITest { 'ruleid' => '400660', 'name' => 'Test mqtt key with 0 delay for active agent', 'key_' => 'mqtt.get[{#4}]', - 'interfaceid' => '50022', 'value_type' => ITEM_VALUE_TYPE_UINT64, 'type' => ITEM_TYPE_ZABBIX_ACTIVE, 'delay' => '0' @@ -214,14 +272,13 @@ class testItemPrototype extends CAPITest { 'ruleid' => '400660', 'name' => 'Test mqtt with wrong key and 0 delay', 'key_' => 'mqt.get[{#5}]', - 'interfaceid' => '50022', 'value_type' => ITEM_VALUE_TYPE_UINT64, 'type' => ITEM_TYPE_ZABBIX_ACTIVE, 'delay' => '0' ], - 'expected_error' => 'Item will not be refreshed. Specified update interval requires having at least one either flexible or scheduling interval.' + 'expected_error' => 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.' ] - ] + $item_type_tests; + ], $item_type_tests, $interfaces_tests); } /** @@ -231,9 +288,13 @@ class testItemPrototype extends CAPITest { $result = $this->call('itemprototype.create', $request_data, $expected_error); if ($expected_error === null) { - if ($request_data['type'] === ITEM_TYPE_ZABBIX_ACTIVE && substr($request_data['key_'], 0, 8) === 'mqtt.get') { - $request_data['delay'] = CTestArrayHelper::get($request_data, 'delay', '0'); - } + if ($request_data['type'] === ITEM_TYPE_ZABBIX_ACTIVE && substr($request_data['key_'], 0, 8) === 'mqtt.get') { + $request_data['delay'] = CTestArrayHelper::get($request_data, 'delay', '0'); + } + + if (!array_key_exists('delay', $request_data)) { + $request_data['delay'] = 0; + } foreach ($result['result']['itemids'] as $id) { $db_item = CDBHelper::getRow('SELECT hostid, name, key_, type, delay FROM items WHERE itemid='.zbx_dbstr($id)); |