true, 'Enable internal housekeeping' => true, 'Data storage period' => '365d' ]; public $custom_values = [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '400d' ]; /** * Attach MessageBehavior to the test. * * @return array */ public function getBehaviors() { return ['class' => CMessageBehavior::class]; } /** * The function's main purpose is to check if the layout of the page is not broken and fields are in their place, * Additional checkups are made and committed within the function. */ public function testFormAdministrationGeneralAuditLog_CheckLayout() { $this->page->login()->open('zabbix.php?action=audit.settings.edit')->waitUntilReady(); $form = $this->query('id:audit-settings')->waitUntilPresent()->asForm()->one(); $form->checkValue($this->default_values); // Check if field "Data storage period" is disabled when options are in all possible ways. $checkboxes = [ ['audit' => true, 'housekeeping' => false], ['audit' => false, 'housekeeping' => true], ['audit' => false, 'housekeeping' => false], ['audit' => true, 'housekeeping' => true] ]; foreach ($checkboxes as $case) { $form->fill(['Enable audit logging' => $case['audit'], 'Enable internal housekeeping' => $case['housekeeping']]); $this->assertTrue($form->getField('Data storage period')->isEnabled($case['housekeeping'])); }; // Check fields "Data storage period" maxlength. $this->assertEquals(32, $form->getField('Data storage period')->getAttribute('maxlength')); // Check if buttons in view are clickable. $this->assertTrue($form->query('button', ['Update', 'Reset defaults'])->one()->isClickable()); // Check if Header and Title are as expected. $this->page->assertHeader('Audit log'); $this->page->assertTitle('Configuration of audit log'); } /** * Test for checking 'Reset defaults' button. */ public function totestFormAdministrationGeneralAuditLog_ResetButton() { $this->executeResetButtonTest(); } /** * Test for checking form update without changing any data. */ public function testFormAdministrationGeneralAuditLog_SimpleUpdate() { $this->executeSimpleUpdate(); } public static function getUpdateValueData() { return [ [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => false ], 'db_check' => [ 'auditlog_enabled' => '1', 'hk_audit_mode' => '0', 'hk_audit' => '365d' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => false ], 'db_check' => [ 'auditlog_enabled' => '0', 'hk_audit_mode' => '0', 'hk_audit' => '365d' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '365d' ], 'db_check' => [ 'auditlog_enabled' => '1', 'hk_audit_mode' => '1', 'hk_audit' => '365d' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '365d' ], 'db_check' => [ 'auditlog_enabled' => '0', 'hk_audit_mode' => '1', 'hk_audit' => '365d' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '1440m' ], 'db_check' => [ 'auditlog_enabled' => '1', 'hk_audit_mode' => '1', 'hk_audit' => '1440m' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '13140000m' ], 'db_check' => [ 'auditlog_enabled' => '0', 'hk_audit_mode' => '1', 'hk_audit' => '13140000m' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '13139999m' ], 'db_check' => [ 'auditlog_enabled' => '1', 'hk_audit_mode' => '1', 'hk_audit' => '13139999m' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '24h' ], 'db_check' => [ 'auditlog_enabled' => '0', 'hk_audit_mode' => '1', 'hk_audit' => '24h' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '219000h' ], 'db_check' => [ 'auditlog_enabled' => '1', 'hk_audit_mode' => '1', 'hk_audit' => '219000h' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '218999h' ], 'db_check' => [ 'auditlog_enabled' => '0', 'hk_audit_mode' => '1', 'hk_audit' => '218999h' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '1d' ], 'db_check' => [ 'auditlog_enabled' => '1', 'hk_audit_mode' => '1', 'hk_audit' => '1d' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '1w' ], 'db_check' => [ 'auditlog_enabled' => '0', 'hk_audit_mode' => '1', 'hk_audit' => '1w' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '86400s' ], 'db_check' => [ 'auditlog_enabled' => '1', 'hk_audit_mode' => '1', 'hk_audit' => '86400s' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '788400000s' ], 'db_check' => [ 'auditlog_enabled' => '1', 'hk_audit_mode' => '1', 'hk_audit' => '788400000s' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '788400000s' ], 'db_check' => [ 'auditlog_enabled' => '0', 'hk_audit_mode' => '1', 'hk_audit' => '788400000s' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '788399999s' ], 'db_check' => [ 'auditlog_enabled' => '0', 'hk_audit_mode' => '1', 'hk_audit' => '788399999s' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '9125d' ], 'db_check' => [ 'auditlog_enabled' => '0', 'hk_audit_mode' => '1', 'hk_audit' => '9125d' ] ] ], [ [ 'expected' => TEST_GOOD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '1303w' ], 'db_check' => [ 'auditlog_enabled' => '1', 'hk_audit_mode' => '1', 'hk_audit' => '1303w' ] ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '`!@#$%^&*()_+|' ], 'details' => 'Incorrect value for field "hk_audit": a time unit is expected.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => 'test' ], 'details' => 'Incorrect value for field "hk_audit": a time unit is expected.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => ' ' ], 'details' => 'Incorrect value for field "hk_audit": a time unit is expected.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '¯\_(ツ)_/¯' ], 'details' => 'Incorrect value for field "hk_audit": a time unit is expected.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '0s' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '1s' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '1m' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '1439m' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '13140001m' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '1h' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '219001h' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '86399s' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '788400001s' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '9126d' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '1304w' ], 'details' => 'Incorrect value for field "hk_audit": value must be one of 86400-788400000.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '-1s' ], 'details' => 'Incorrect value for field "hk_audit": a time unit is expected.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => '-1d' ], 'details' => 'Incorrect value for field "hk_audit": a time unit is expected.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '-1w' ], 'details' => 'Incorrect value for field "hk_audit": a time unit is expected.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => false, 'Enable internal housekeeping' => true, 'Data storage period' => 'null' ], 'details' => 'Incorrect value for field "hk_audit": a time unit is expected.' ] ], [ [ 'expected' => TEST_BAD, 'fields' => [ 'Enable audit logging' => true, 'Enable internal housekeeping' => true, 'Data storage period' => '' ], 'details' => 'Incorrect value for field "hk_audit": a time unit is expected.' ] ] ]; } /** * Function tests all possible variants for the "Data storage period" field, checking boundary values, * and using all possible time units (s/h/d/w/M/y) by submitting different values. * After each data set values are reset, for which a private function is used. * * @dataProvider getUpdateValueData */ public function testFormAdministrationGeneralAuditLog_UpdateParameters($data) { if ($data['expected'] === TEST_BAD) { $old_hash = CDBHelper::getHash('SELECT * FROM config'); } $this->page->login()->open('zabbix.php?action=audit.settings.edit')->waitUntilReady(); $form = $this->query('id:audit-settings')->waitUntilPresent()->asForm()->one(); $form->fill($data['fields']); $form->submit()->waitUntilReloaded(); if ($data['expected'] === TEST_GOOD) { $this->assertMessage(TEST_GOOD, 'Configuration updated'); $form->checkValue($data['fields']); // Check DB configuration. $this->assertEquals($data['db_check'], CDBHelper::getRow('SELECT auditlog_enabled, hk_audit_mode, hk_audit FROM config')); // Reset back to default values. $form->query('id:resetDefaults')->one()->click(); COverlayDialogElement::find()->waitUntilVisible()->one()->query('button:Reset defaults')->one()->click(); $form->submit()->waitUntilReloaded(); } else { $this->assertMessage(TEST_BAD, 'Cannot update configuration', $data['details']); $this->assertEquals($old_hash, CDBHelper::getHash('SELECT * FROM config')); } } }