Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ui/tests/api_json/testItemPrototype.php')
-rw-r--r--ui/tests/api_json/testItemPrototype.php115
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));