mirror of
https://github.com/evilsocket/opensnitch.git
synced 2025-03-04 08:34:40 +01:00
142 lines
6 KiB
Python
142 lines
6 KiB
Python
#
|
|
# pytest -v tests/dialogs/test_ruleseditor.py
|
|
#
|
|
import os
|
|
import time
|
|
import json
|
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
|
|
|
from opensnitch.config import Config
|
|
from opensnitch.dialogs.preferences import PreferencesDialog
|
|
|
|
class TestPreferences():
|
|
|
|
@classmethod
|
|
def reset_settings(self):
|
|
try:
|
|
os.remove(os.environ['HOME'] + "/.config/opensnitch/settings.conf")
|
|
except Exception:
|
|
pass
|
|
|
|
@classmethod
|
|
def setup_method(self):
|
|
white_icon = QtGui.QIcon("../res/icon-white.svg")
|
|
self.reset_settings()
|
|
self.prefs = PreferencesDialog(appicon=white_icon)
|
|
self.prefs.show()
|
|
|
|
def run(self, qtbot):
|
|
def handle_dialog():
|
|
qtbot.mouseClick(self.prefs.applyButton, QtCore.Qt.LeftButton)
|
|
qtbot.mouseClick(self.prefs.acceptButton, QtCore.Qt.LeftButton)
|
|
|
|
QtCore.QTimer.singleShot(500, handle_dialog)
|
|
self.prefs.exec_()
|
|
|
|
def test_save_popups_settings(self, qtbot):
|
|
""" Test saving UI related settings.
|
|
"""
|
|
qtbot.addWidget(self.prefs)
|
|
|
|
self.prefs.comboUIAction.setCurrentIndex(Config.ACTION_ALLOW_IDX)
|
|
self.prefs.comboUITarget.setCurrentIndex(2)
|
|
self.prefs.comboUIDuration.setCurrentIndex(4)
|
|
self.prefs.comboUIDialogPos.setCurrentIndex(2)
|
|
self.prefs.spinUITimeout.setValue(30)
|
|
self.prefs.showAdvancedCheck.setChecked(True)
|
|
self.prefs.uidCheck.setChecked(True)
|
|
|
|
self.run(qtbot)
|
|
|
|
assert self.prefs._cfg.getInt(self.prefs._cfg.DEFAULT_ACTION_KEY) == Config.ACTION_ALLOW_IDX and self.prefs.comboUIAction.currentText() == Config.ACTION_ALLOW
|
|
assert self.prefs._cfg.getInt(self.prefs._cfg.DEFAULT_TARGET_KEY) == 2
|
|
assert self.prefs._cfg.getInt(self.prefs._cfg.DEFAULT_DURATION_KEY) == 4
|
|
assert self.prefs._cfg.getInt(self.prefs._cfg.DEFAULT_TIMEOUT_KEY) == 30
|
|
assert self.prefs._cfg.getInt(self.prefs._cfg.DEFAULT_POPUP_POSITION) == 2
|
|
assert self.prefs._cfg.getBool(self.prefs._cfg.DEFAULT_POPUP_ADVANCED) == True
|
|
assert self.prefs._cfg.getBool(self.prefs._cfg.DEFAULT_POPUP_ADVANCED_UID) == True
|
|
|
|
def test_save_ui_settings(self, qtbot):
|
|
self.prefs.checkUIRules.setChecked(True)
|
|
self.prefs.comboUIRules.setCurrentIndex(1)
|
|
self.prefs.checkHideNode.setChecked(False)
|
|
self.prefs.checkHideProto.setChecked(False)
|
|
|
|
self.run(qtbot)
|
|
|
|
assert self.prefs._cfg.getBool(self.prefs._cfg.DEFAULT_IGNORE_RULES) == True and self.prefs._cfg.getInt(self.prefs._cfg.DEFAULT_IGNORE_TEMPORARY_RULES) == 1
|
|
cols = self.prefs._cfg.getSettings(Config.STATS_SHOW_COLUMNS)
|
|
assert cols == ['0','2','3','5','6']
|
|
|
|
def test_save_node_settings(self, qtbot, capsys):
|
|
self.prefs.comboNodeAction.setCurrentIndex(Config.ACTION_ALLOW_IDX)
|
|
self.prefs.comboNodeMonitorMethod.setCurrentIndex(2)
|
|
self.prefs.comboNodeLogLevel.setCurrentIndex(5)
|
|
self.prefs.checkInterceptUnknown.setChecked(True)
|
|
self.prefs.tabWidget.setCurrentIndex(self.prefs.TAB_NODES)
|
|
self.prefs._node_needs_update = True
|
|
|
|
self.run(qtbot)
|
|
|
|
assert len(self.prefs._notifications_sent) == 1
|
|
for n in self.prefs._notifications_sent:
|
|
conf = json.loads(self.prefs._notifications_sent[n].data)
|
|
assert conf['InterceptUnknown'] == True
|
|
assert conf['ProcMonitorMethod'] == "audit"
|
|
assert conf['LogLevel'] == 5
|
|
assert conf['DefaultAction'] == "allow"
|
|
|
|
# TODO: click on the QMessageDialog
|
|
#
|
|
# def test_save_db_settings(self, qtbot, monkeypatch, capsys):
|
|
# self.prefs.comboDBType.setCurrentIndex(1)
|
|
# self.prefs.dbLabel.setText('/tmp/test.db')
|
|
#
|
|
# def handle_dialog():
|
|
# qtbot.mouseClick(self.prefs.applyButton, QtCore.Qt.LeftButton)
|
|
# # after saving the settings, a warning dialog must appear, informing
|
|
# # the user to restart the GUI
|
|
# time.sleep(.5)
|
|
# msgbox = QtWidgets.QApplication.activeModalWidget()
|
|
# try:
|
|
# assert msgbox != None
|
|
# okBtn = msgbox.button(QtWidgets.QMessageBox.Ok)
|
|
# qtbot.mouseClick(okBtn, QtCore.Qt.LeftButton)
|
|
# except Exception as e:
|
|
# print("test_save_db_Settings() exception:", e)
|
|
# qtbot.mouseClick(self.prefs.acceptButton, QtCore.Qt.LeftButton)
|
|
#
|
|
# QtCore.QTimer.singleShot(500, handle_dialog)
|
|
# self.prefs.exec_()
|
|
|
|
# assert self.prefs._cfg.getInt(Config.DEFAULT_DB_TYPE_KEY) == 1
|
|
# assert self.prefs._cfg.getSettings(Config.DEFAULT_DB_FILE_KEY) == '/tmp/test.db'
|
|
|
|
def test_load_ui_settings(self, qtbot, capsys):
|
|
""" reTest saved settings (load_settings()).
|
|
On dialog show up the widgets must be configured properly, with the settings
|
|
configured in previous tests.
|
|
"""
|
|
self.prefs.checkUIRules.setChecked(False)
|
|
self.prefs.comboUIRules.setCurrentIndex(0)
|
|
self.prefs.comboUITarget.setCurrentIndex(0)
|
|
self.prefs.comboUIDuration.setCurrentIndex(0)
|
|
self.prefs.checkHideNode.setChecked(True)
|
|
self.prefs.checkHideProto.setChecked(True)
|
|
|
|
def handle_dialog():
|
|
qtbot.mouseClick(self.prefs.cancelButton, QtCore.Qt.LeftButton)
|
|
QtCore.QTimer.singleShot(500, handle_dialog)
|
|
|
|
self.prefs.exec_()
|
|
self.prefs.show()
|
|
|
|
print(self.prefs._cfg.getBool(self.prefs._cfg.DEFAULT_IGNORE_RULES))
|
|
|
|
assert self.prefs.comboUIAction.currentIndex() == Config.ACTION_ALLOW_IDX and self.prefs.comboUIAction.currentText() == Config.ACTION_ALLOW
|
|
assert self.prefs.checkUIRules.isChecked() == True
|
|
assert self.prefs.comboUIRules.currentIndex() == 1
|
|
assert self.prefs.comboUITarget.currentIndex() == 2
|
|
assert self.prefs.comboUIDuration.currentIndex() == 4 and self.prefs.comboUIDuration.currentText() == Config.DURATION_30m
|
|
assert self.prefs.comboUIDialogPos.currentIndex() == 2
|
|
assert self.prefs.spinUITimeout.value() == 30
|