123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- # coding: utf-8
- # Python libs
- from __future__ import absolute_import
- import logging
- # Salt libs
- import salt.beacons.log_beacon as log_beacon
- from tests.support.mixins import LoaderModuleMockMixin
- from tests.support.mock import mock_open, patch
- # Salt testing libs
- from tests.support.unit import TestCase
- log = logging.getLogger(__name__)
- _STUB_LOG_ENTRY = (
- "Jun 29 12:58:51 hostname sshd[6536]: "
- "pam_unix(sshd:session): session opened "
- "for user username by (uid=0)\n"
- )
- class LogBeaconTestCase(TestCase, LoaderModuleMockMixin):
- """
- Test case for salt.beacons.log
- """
- def setup_loader_modules(self):
- return {log_beacon: {"__context__": {"log.loc": 2}, "__salt__": {}}}
- def test_non_list_config(self):
- config = {}
- ret = log_beacon.validate(config)
- self.assertEqual(ret, (False, "Configuration for log beacon must be a list."))
- def test_empty_config(self):
- config = [{}]
- ret = log_beacon.validate(config)
- self.assertEqual(
- ret, (False, "Configuration for log beacon must contain file option.")
- )
- def test_log_match(self):
- with patch("salt.utils.files.fopen", mock_open(read_data=_STUB_LOG_ENTRY)):
- config = [
- {"file": "/var/log/auth.log", "tags": {"sshd": {"regex": ".*sshd.*"}}}
- ]
- ret = log_beacon.validate(config)
- self.assertEqual(ret, (True, "Valid beacon configuration"))
- _expected_return = [
- {
- "error": "",
- "match": "yes",
- "raw": _STUB_LOG_ENTRY.rstrip("\n"),
- "tag": "sshd",
- }
- ]
- ret = log_beacon.beacon(config)
- self.assertEqual(ret, _expected_return)
|