1
0
mirror of https://github.com/fwbuilder/fwbuilder synced 2026-03-25 12:47:44 +01:00

Test for newClusterDialog

This commit is contained in:
Roman Bovsunivskiy 2010-02-05 17:38:41 +00:00
parent dae933cf51
commit 41307f6aa7
4 changed files with 239 additions and 77 deletions

View File

@ -9,6 +9,10 @@
#include "ObjectTreeView.h"
#include "ProjectPanel.h"
#include "ObjectTreeView.h"
#include "ObjectTreeViewItem.h"
#include "FWObjectClipboard.h"
using namespace libfwbuilder;
using namespace std;
@ -86,6 +90,7 @@ void newClusterDialogTest::test1()
dynamic_cast<InterfaceEditorWidget*>(dialog->getUi()->interfaceEditor->widget(i))->setProtocolIndex(2);
InterfaceEditorWidget* eth0 = qFindChild<InterfaceEditorWidget*>(dialog->getUi()->interfaceEditor, "eth0_widget");
eth0->setProtocolIndex(0);
eth0->addNewAddress("123.45.67.89", "24", true);
QList<EditedInterfaceData> addresses = dialog->getUi()->interfaceEditor->getNewData();
@ -93,6 +98,7 @@ void newClusterDialogTest::test1()
{
if (iface.name == "eth0")
{
qDebug() << iface.addresses.values().count();
QVERIFY(iface.addresses.values().count() == 1);
QVERIFY(iface.addresses.values().first().address == "123.45.67.89");
QVERIFY(iface.addresses.values().first().netmask == "24");
@ -143,6 +149,11 @@ void newClusterDialogTest::test1()
QVERIFY(newc != NULL);
QVERIFY(Cluster::isA(newc));
dialog->findChild<QPushButton*>("cancelButton")->click();
dialog->accept();
dialog->close();
dialog->deleteLater();
}
void newClusterDialogTest::test2()
@ -220,6 +231,150 @@ void newClusterDialogTest::test2()
QVERIFY(newc != NULL);
QVERIFY(Cluster::isA(newc));
qDebug() << mw->getCurrentLib()->findObjectByName(Firewall::TYPENAME, "linux-1-bak")->getName().c_str();
Firewall *bak = Firewall::cast(mw->getCurrentLib()->findObjectByName(Firewall::TYPENAME, "linux-1-bak"));
QVERIFY(bak != NULL);
QVERIFY(bak->getInactive() == true);
Firewall *linux1 = Firewall::cast(mw->getCurrentLib()->findObjectByName(Firewall::TYPENAME, "linux-1"));
QVERIFY(linux1 != NULL);
QVERIFY(linux1->getPolicy()->getChildrenCount() == 1); // there should be only RuleSetOptions object
dialog->findChild<QPushButton*>("cancelButton")->click();
dialog->accept();
dialog->close();
dialog->deleteLater();
}
QPoint findItemPos(ObjectTreeViewItem *item, ObjectTreeView *tree)
{
for (int h=10; h<tree->height(); h+=1)
{
for (int w=75; w<tree->width(); w+=1)
{
if((tree->itemAt(w,h)) == item)
return QPoint(w, h);
}
}
return QPoint(-1,-1);
}
void newClusterDialogTest::closeContextMenu()
{
foreach(QWidget *w, QApplication::allWidgets())
{
if (w->objectName() == "objectTreeContextMenu")
{
qDebug() << w;
w->hide();
}
}
}
void newClusterDialogTest::openContextMenu(ObjectManipulator *om, ObjectTreeViewItem *item, ObjectTreeView *tree, const QString &actionText)
{
QTimer::singleShot(1000, this, SLOT(closeContextMenu()));
om->contextMenuRequested(findItemPos(item, tree));
QMenu *menu;
foreach(QWidget *w, QApplication::allWidgets())
{
if (w->objectName() == "objectTreeContextMenu")
{
menu = dynamic_cast<QMenu*>(w);
break;
}
}
foreach (QObject *act, menu->children())
{
QAction *action = dynamic_cast<QAction*>(act);
if (action == NULL) continue;
if (action->text() == actionText)
{
QTimer::singleShot(100, this, SLOT(test3_part2()));
action->trigger();
break;
}
}
}
void newClusterDialogTest::test3()
{
new FWObjectClipboard();
mw->loadFile("test_data.fwb", false);
FWObjectDatabase *db = mw->db();
Library *lib = NULL;
foreach(FWObject *obj, db->getByTypeDeep(Library::TYPENAME))
{
qDebug() << obj->getName().c_str();
if (obj->getName() == "new_cluster_test") lib = Library::cast(obj);
}
QVERIFY(lib != NULL);
mw->show();
ObjectManipulator *om = mw->activeProject()->findChild<ObjectManipulator*>("om");
om->openLib(lib);
QVERIFY ( om->getCurrentLib() == lib);
ObjectTreeView *tree = mw->getCurrentObjectTree();
ObjectTreeViewItem *linux1 = dynamic_cast<ObjectTreeViewItem*>(tree->findItems("linux-1", Qt::MatchContains | Qt::MatchRecursive, 0).first());
ObjectTreeViewItem *linux2 = dynamic_cast<ObjectTreeViewItem*>(tree->findItems("linux-2", Qt::MatchContains | Qt::MatchRecursive, 0).first());
tree->selectionModel()->select(tree->indexAt(findItemPos(linux1, tree)), QItemSelectionModel::Clear | QItemSelectionModel::SelectCurrent);
tree->setCurrentItem(linux1);
tree->selectionModel()->select(tree->indexAt(findItemPos(linux2, tree)), QItemSelectionModel::Select);
openContextMenu(om, linux2, tree, "New cluster from selected firewalls");
}
void newClusterDialogTest::test3_part2()
{
QTest::qWait(100);
newClusterDialog *dialog = NULL;
foreach (QWidget *w, app->allWidgets())
if (dynamic_cast<newClusterDialog*>(w) != NULL)
dialog = dynamic_cast<newClusterDialog*>(w);
QVERIFY(dialog != NULL);
QPushButton *nextButton = dialog->findChild<QPushButton*>("nextButton");
QPushButton *finishButton = dialog->findChild<QPushButton*>("finishButton");
InterfacesTabWidget *interfaceEditor = dialog->findChild<InterfacesTabWidget*>("interfaceEditor");
QLineEdit *obj_name = dialog->findChild<QLineEdit*>("obj_name");
QVERIFY(nextButton != NULL);
QVERIFY(finishButton != NULL);
QVERIFY(interfaceEditor != NULL);
QVERIFY(obj_name != NULL);
QTest::keyClicks(obj_name, "New Cluster");
QVERIFY(nextButton->isEnabled());
nextButton->click();
QVERIFY(dialog->currentPage()==1);
QTest::qWait(1000);
nextButton->click();
QVERIFY(dialog->currentPage()==2);
dynamic_cast<InterfaceEditorWidget*>(interfaceEditor->widget(0))->setProtocolIndex(3);
dynamic_cast<InterfaceEditorWidget*>(interfaceEditor->widget(1))->setProtocolIndex(3);
dynamic_cast<InterfaceEditorWidget*>(interfaceEditor->widget(2))->setProtocolIndex(3);
dynamic_cast<InterfaceEditorWidget*>(interfaceEditor->widget(3))->setProtocolIndex(3);
nextButton->click();
QVERIFY(dialog->currentPage()==3);
nextButton->click();
QVERIFY(dialog->currentPage()==4);
QVERIFY(finishButton->isEnabled());
finishButton->click();
Cluster *newc = dialog->getNewCluster();
QVERIFY(newc != NULL);
QVERIFY(Cluster::isA(newc));
}

View File

@ -6,14 +6,20 @@
#include "upgradePredicate.h"
#include "FWBTree.h"
#include "fwbuilder/Library.h"
#include "ObjectManipulator.h"
class newClusterDialogTest : public QObject
{
Q_OBJECT
void openContextMenu(ObjectManipulator *om, ObjectTreeViewItem *item, ObjectTreeView *tree, const QString &actionText);
private slots:
void test1();
void test2();
void test3();
public slots:
void closeContextMenu();
void test3_part2();
};
#endif // NEWCLUSTERDIALOGTEST_H

View File

@ -346,7 +346,7 @@ HEADERS += newClusterDialogTest.h \
CONFIG -= release
CONFIG += debug
OBJECTS_DIR = .
QMAKE_CXXFLAGS += -g -fprofile-arcs -ftest-coverage -O0 $$CPPUNIT_CFLAGS
QMAKE_CXXFLAGS += -g -O0 $$CPPUNIT_CFLAGS
QMAKE_CLEAN = *.gc??
LIBS += $$LIBS_FWCOMPILER $$LIBS_FWBUILDER $$CPPUNIT_LIBS
LIBS += -lgcov
@ -372,8 +372,8 @@ win32:PRE_TARGETDEPS = ../../../common/release/common.lib
run.commands = echo "Running tests..." \
&& ./${TARGET} && echo "Running gcov..." && \
gcov ${SOURCES} >/dev/null 2>/dev/null && \
rm *.gc??;\
./${TARGET} && \
echo "OK" || echo "FAILED"
run.depends = all
QMAKE_EXTRA_TARGETS += run

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE FWObjectDatabase SYSTEM "fwbuilder.dtd">
<FWObjectDatabase xmlns="http://www.fwbuilder.org/1.0/" version="16" lastModified="1261881957" id="root">
<Library id="sysid99" name="Deleted Objects" comment="" ro="False"/>
<Library id="id6821X7237" color="#FFFFFF" name="new_cluster_test" comment="" ro="False">
<ObjectGroup id="id6822X7237" name="Objects" comment="" ro="False">
<ObjectGroup id="id6823X7237" name="Addresses" comment="" ro="False"/>
@ -59,15 +60,15 @@
<Option name="hashlimit_mode_dstport">False</Option>
<Option name="hashlimit_mode_srcip">False</Option>
<Option name="hashlimit_mode_srcport">False</Option>
<Option name="hashlimit_name"/>
<Option name="hashlimit_name"></Option>
<Option name="hashlimit_size">0</Option>
<Option name="hashlimit_suffix">/second</Option>
<Option name="hashlimit_value">10</Option>
<Option name="limit_burst">0</Option>
<Option name="limit_suffix"/>
<Option name="limit_suffix"></Option>
<Option name="limit_value">0</Option>
<Option name="log_level"/>
<Option name="log_prefix"/>
<Option name="log_level"></Option>
<Option name="log_prefix"></Option>
<Option name="stateless">True</Option>
<Option name="ulog_nlgroup">1</Option>
</PolicyRuleOptions>
@ -102,17 +103,17 @@
<FirewallOptions>
<Option name="accept_established">True</Option>
<Option name="accept_new_tcp_with_no_syn">True</Option>
<Option name="action_on_reject"/>
<Option name="activationCmd"/>
<Option name="action_on_reject"></Option>
<Option name="activationCmd"></Option>
<Option name="add_rules_for_ipv6_neighbor_discovery">False</Option>
<Option name="admUser"/>
<Option name="altAddress"/>
<Option name="admUser"></Option>
<Option name="altAddress"></Option>
<Option name="bridging_fw">False</Option>
<Option name="check_shading">False</Option>
<Option name="clamp_mss_to_mtu">False</Option>
<Option name="classify_mark_terminating">False</Option>
<Option name="cmdline"/>
<Option name="compiler"/>
<Option name="cmdline"></Option>
<Option name="compiler"></Option>
<Option name="configure_bonding_interfaces">False</Option>
<Option name="configure_bridge_interfaces">False</Option>
<Option name="configure_interfaces">True</Option>
@ -120,47 +121,47 @@
<Option name="debug">False</Option>
<Option name="drop_invalid">False</Option>
<Option name="eliminate_duplicates">true</Option>
<Option name="epilog_script"/>
<Option name="epilog_script"></Option>
<Option name="firewall_dir">/etc/rc.d/</Option>
<Option name="firewall_is_part_of_any_and_networks">True</Option>
<Option name="flush_and_set_default_policy">True</Option>
<Option name="freebsd_ip_forward">1</Option>
<Option name="ignore_empty_groups">False</Option>
<Option name="ipt_mangle_only_rulesets"/>
<Option name="ipt_mangle_only_rulesets"></Option>
<Option name="ipv4_6_order">ipv4_first</Option>
<Option name="limit_suffix"/>
<Option name="limit_suffix"></Option>
<Option name="limit_value">0</Option>
<Option name="linux24_accept_redirects"/>
<Option name="linux24_accept_source_route"/>
<Option name="linux24_accept_redirects"></Option>
<Option name="linux24_accept_source_route"></Option>
<Option name="linux24_conntrack_hashsize">1000</Option>
<Option name="linux24_conntrack_max">1000</Option>
<Option name="linux24_conntrack_tcp_be_liberal">1</Option>
<Option name="linux24_icmp_echo_ignore_all"/>
<Option name="linux24_icmp_echo_ignore_broadcasts"/>
<Option name="linux24_icmp_ignore_bogus_error_responses"/>
<Option name="linux24_ip_dynaddr"/>
<Option name="linux24_icmp_echo_ignore_all"></Option>
<Option name="linux24_icmp_echo_ignore_broadcasts"></Option>
<Option name="linux24_icmp_ignore_bogus_error_responses"></Option>
<Option name="linux24_ip_dynaddr"></Option>
<Option name="linux24_ip_forward">1</Option>
<Option name="linux24_ipv6_forward"/>
<Option name="linux24_log_martians"/>
<Option name="linux24_path_brctl"/>
<Option name="linux24_path_ifenslave"/>
<Option name="linux24_path_ip"/>
<Option name="linux24_path_ip6tables"/>
<Option name="linux24_path_ip6tables_restore"/>
<Option name="linux24_path_iptables"/>
<Option name="linux24_path_iptables_restore"/>
<Option name="linux24_path_logger"/>
<Option name="linux24_path_lsmod"/>
<Option name="linux24_path_modprobe"/>
<Option name="linux24_path_vconfig"/>
<Option name="linux24_rp_filter"/>
<Option name="linux24_tcp_ecn"/>
<Option name="linux24_tcp_fack"/>
<Option name="linux24_ipv6_forward"></Option>
<Option name="linux24_log_martians"></Option>
<Option name="linux24_path_brctl"></Option>
<Option name="linux24_path_ifenslave"></Option>
<Option name="linux24_path_ip"></Option>
<Option name="linux24_path_ip6tables"></Option>
<Option name="linux24_path_ip6tables_restore"></Option>
<Option name="linux24_path_iptables"></Option>
<Option name="linux24_path_iptables_restore"></Option>
<Option name="linux24_path_logger"></Option>
<Option name="linux24_path_lsmod"></Option>
<Option name="linux24_path_modprobe"></Option>
<Option name="linux24_path_vconfig"></Option>
<Option name="linux24_rp_filter"></Option>
<Option name="linux24_tcp_ecn"></Option>
<Option name="linux24_tcp_fack"></Option>
<Option name="linux24_tcp_fin_timeout">0</Option>
<Option name="linux24_tcp_keepalive_interval">0</Option>
<Option name="linux24_tcp_sack"/>
<Option name="linux24_tcp_syncookies"/>
<Option name="linux24_tcp_timestamps"/>
<Option name="linux24_tcp_sack"></Option>
<Option name="linux24_tcp_syncookies"></Option>
<Option name="linux24_tcp_timestamps"></Option>
<Option name="linux24_tcp_window_scaling">1</Option>
<Option name="load_modules">True</Option>
<Option name="local_nat">False</Option>
@ -174,11 +175,11 @@
<Option name="loopback_interface">lo</Option>
<Option name="macosx_ip_forward">1</Option>
<Option name="manage_virtual_addr">True</Option>
<Option name="mgmt_addr"/>
<Option name="mgmt_addr"></Option>
<Option name="mgmt_ssh">False</Option>
<Option name="modules_dir">/lib/modules/`uname -r`/kernel/net/</Option>
<Option name="openbsd_ip_forward">1</Option>
<Option name="output_file"/>
<Option name="output_file"></Option>
<Option name="pf_limit_frags">5000</Option>
<Option name="pf_limit_states">10000</Option>
<Option name="pf_timeout_frag">30</Option>
@ -196,11 +197,11 @@
<Option name="pix_syslog_device_id_supported">false</Option>
<Option name="pix_use_acl_remarks">true</Option>
<Option name="prolog_place">top</Option>
<Option name="prolog_script"/>
<Option name="scpArgs"/>
<Option name="prolog_script"></Option>
<Option name="scpArgs"></Option>
<Option name="script_name_on_firewall">rc.firewall.local</Option>
<Option name="solaris_ip_forward">1</Option>
<Option name="sshArgs"/>
<Option name="sshArgs"></Option>
<Option name="ulog_cprange">0</Option>
<Option name="ulog_nlgroup">1</Option>
<Option name="ulog_qthreshold">1</Option>
@ -363,29 +364,29 @@
<IntervalRef ref="sysid2"/>
</When>
<PolicyRuleOptions>
<Option name="action_on_reject"/>
<Option name="action_on_reject"></Option>
<Option name="branch_id">id7050X7237</Option>
<Option name="classify_str"/>
<Option name="custom_str"/>
<Option name="ipf_route_opt_addr"/>
<Option name="ipf_route_opt_if"/>
<Option name="classify_str"></Option>
<Option name="custom_str"></Option>
<Option name="ipf_route_opt_addr"></Option>
<Option name="ipf_route_opt_if"></Option>
<Option name="ipf_route_option">route_through</Option>
<Option name="ipfw_classify_method">2</Option>
<Option name="ipfw_pipe_port_num">0</Option>
<Option name="ipfw_pipe_queue_num">0</Option>
<Option name="ipt_branch_in_mangle">False</Option>
<Option name="ipt_continue">False</Option>
<Option name="ipt_gw"/>
<Option name="ipt_iif"/>
<Option name="ipt_gw"></Option>
<Option name="ipt_iif"></Option>
<Option name="ipt_mark_connections">False</Option>
<Option name="ipt_oif"/>
<Option name="ipt_oif"></Option>
<Option name="ipt_tee">False</Option>
<Option name="pf_fastroute">False</Option>
<Option name="pf_route_load_option">none</Option>
<Option name="pf_route_opt_addr"/>
<Option name="pf_route_opt_if"/>
<Option name="pf_route_opt_addr"></Option>
<Option name="pf_route_opt_if"></Option>
<Option name="pf_route_option">none</Option>
<Option name="rule_name_accounting"/>
<Option name="rule_name_accounting"></Option>
<Option name="stateless">True</Option>
</PolicyRuleOptions>
</PolicyRule>
@ -441,15 +442,15 @@
<Option name="hashlimit_mode_dstport">False</Option>
<Option name="hashlimit_mode_srcip">False</Option>
<Option name="hashlimit_mode_srcport">False</Option>
<Option name="hashlimit_name"/>
<Option name="hashlimit_name"></Option>
<Option name="hashlimit_size">0</Option>
<Option name="hashlimit_suffix">/second</Option>
<Option name="hashlimit_value">20</Option>
<Option name="limit_burst">0</Option>
<Option name="limit_suffix"/>
<Option name="limit_suffix"></Option>
<Option name="limit_value">0</Option>
<Option name="log_level"/>
<Option name="log_prefix"/>
<Option name="log_level"></Option>
<Option name="log_prefix"></Option>
<Option name="stateless">True</Option>
<Option name="ulog_nlgroup">1</Option>
</PolicyRuleOptions>
@ -484,16 +485,16 @@
<FirewallOptions>
<Option name="accept_established">True</Option>
<Option name="accept_new_tcp_with_no_syn">True</Option>
<Option name="action_on_reject"/>
<Option name="activationCmd"/>
<Option name="admUser"/>
<Option name="altAddress"/>
<Option name="action_on_reject"></Option>
<Option name="activationCmd"></Option>
<Option name="admUser"></Option>
<Option name="altAddress"></Option>
<Option name="bridging_fw">False</Option>
<Option name="check_shading">False</Option>
<Option name="clamp_mss_to_mtu">False</Option>
<Option name="classify_mark_terminating">False</Option>
<Option name="cmdline"/>
<Option name="compiler"/>
<Option name="cmdline"></Option>
<Option name="compiler"></Option>
<Option name="configure_bonding_interfaces">False</Option>
<Option name="configure_bridge_interfaces">False</Option>
<Option name="configure_interfaces">True</Option>
@ -501,15 +502,15 @@
<Option name="debug">False</Option>
<Option name="drop_invalid">False</Option>
<Option name="eliminate_duplicates">true</Option>
<Option name="epilog_script"/>
<Option name="epilog_script"></Option>
<Option name="firewall_dir">/etc/rc.d</Option>
<Option name="firewall_is_part_of_any_and_networks">True</Option>
<Option name="flush_and_set_default_policy">True</Option>
<Option name="freebsd_ip_forward">1</Option>
<Option name="ignore_empty_groups">False</Option>
<Option name="ipt_mangle_only_rulesets"/>
<Option name="ipt_mangle_only_rulesets"></Option>
<Option name="ipv4_6_order">ipv4_first</Option>
<Option name="limit_suffix"/>
<Option name="limit_suffix"></Option>
<Option name="limit_value">0</Option>
<Option name="linux24_ip_forward">1</Option>
<Option name="load_modules">True</Option>
@ -524,11 +525,11 @@
<Option name="loopback_interface">lo</Option>
<Option name="macosx_ip_forward">1</Option>
<Option name="manage_virtual_addr">True</Option>
<Option name="mgmt_addr"/>
<Option name="mgmt_addr"></Option>
<Option name="mgmt_ssh">False</Option>
<Option name="modules_dir">/lib/modules/`uname -r`/kernel/net/</Option>
<Option name="openbsd_ip_forward">1</Option>
<Option name="output_file"/>
<Option name="output_file"></Option>
<Option name="pf_limit_frags">5000</Option>
<Option name="pf_limit_states">10000</Option>
<Option name="pf_timeout_frag">30</Option>
@ -546,11 +547,11 @@
<Option name="pix_syslog_device_id_supported">false</Option>
<Option name="pix_use_acl_remarks">true</Option>
<Option name="prolog_place">top</Option>
<Option name="prolog_script"/>
<Option name="scpArgs"/>
<Option name="prolog_script"></Option>
<Option name="scpArgs"></Option>
<Option name="script_name_on_firewall">rc.firewall.local</Option>
<Option name="solaris_ip_forward">1</Option>
<Option name="sshArgs"/>
<Option name="sshArgs"></Option>
<Option name="ulog_cprange">0</Option>
<Option name="ulog_nlgroup">1</Option>
<Option name="ulog_qthreshold">1</Option>