mirror of
https://github.com/valitydev/osquery-1.git
synced 2024-11-07 18:08:53 +00:00
6c8cc20117
Signed-off-by: Teddy Reed Merge-conflicts-by: Teddy Reed Closes: #1586
78 lines
3.2 KiB
Python
Executable File
78 lines
3.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# Copyright (c) 2014, Facebook, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the BSD-style license found in the
|
|
# LICENSE file in the root directory of this source tree. An additional grant
|
|
# of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
# pyexpect.replwrap will not work with unicode_literals
|
|
# from __future__ import unicode_literals
|
|
|
|
import os
|
|
import sys
|
|
import unittest
|
|
|
|
# osquery-specific testing utils
|
|
import test_base
|
|
import utils
|
|
|
|
|
|
class ModuleTests(test_base.ProcessGenerator, unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.binary = os.path.join(test_base.ARGS.build, "osquery", "osqueryi")
|
|
ext = "dylib" if sys.platform == "darwin" else "so"
|
|
self.modules_loader = test_base.Autoloader(
|
|
[test_base.ARGS.build + "/osquery/libmodexample.%s" % ext])
|
|
self.osqueryi = test_base.OsqueryWrapper(self.binary,
|
|
{"modules_autoload": self.modules_loader.path})
|
|
|
|
def test_1_shell_with_module(self):
|
|
'''Test the shell loads the compiled shared library.'''
|
|
self.osqueryi.run_command(' ')
|
|
result = self.osqueryi.run_query('SELECT * from example;')
|
|
self.assertEqual(len(result), 1)
|
|
|
|
def test_2_shell_list_modules(self):
|
|
'''Test the modules/extensions table.'''
|
|
self.osqueryi.run_command(' ')
|
|
result = self.osqueryi.run_query(
|
|
'SELECT * from osquery_extensions '
|
|
'where type = "module" and name = "example";')
|
|
self.assertEqual(len(result), 1)
|
|
|
|
def test_3_module_prevent_create(self):
|
|
'''Test a failed module create (we interrupt the static construction).
|
|
This test uses a special environment variable checked in the example
|
|
module built as part of the default SDK build.
|
|
'''
|
|
self.osqueryi = test_base.OsqueryWrapper(self.binary,
|
|
{"modules_autoload": self.modules_loader.path}, {"TESTFAIL1": "1"})
|
|
result = self.osqueryi.run_query(
|
|
'SELECT * from time;')
|
|
# Make sure the environment variable did not introduce any unexpected
|
|
# crashes with the unit or integration tests.
|
|
self.assertEqual(len(result), 1)
|
|
# The environment variable should have prevented the module load.
|
|
self.assertRaises(test_base.OsqueryException,
|
|
self.osqueryi.run_query, 'SELECT * from example;')
|
|
|
|
def test_4_module_prevent_initialize(self):
|
|
'''Test a failed module initialize (we interrupt the registry call).
|
|
'''
|
|
self.osqueryi = test_base.OsqueryWrapper(self.binary,
|
|
{"modules_autoload": self.modules_loader.path}, {"TESTFAIL2": "1"})
|
|
# The environment variable should have prevented the module load.
|
|
self.assertRaises(test_base.OsqueryException,
|
|
self.osqueryi.run_query, 'SELECT * from example;')
|
|
|
|
|
|
if __name__ == "__main__":
|
|
test_base.assertPermissions()
|
|
module = test_base.Tester().run()
|