Skip to content

Commit

Permalink
Create equivalent yast2_firewall test module based on libyui-rest-api
Browse files Browse the repository at this point in the history
  • Loading branch information
root authored and coolgw committed Nov 2, 2022
1 parent afa9422 commit 8463ac9
Show file tree
Hide file tree
Showing 19 changed files with 751 additions and 2 deletions.
5 changes: 5 additions & 0 deletions lib/Distribution/Opensuse/Tumbleweed.pm
Expand Up @@ -49,6 +49,7 @@ use YaST::Firstboot::NTPConfigurationController;
use YaST::Firstboot::WelcomeController;
use YaST::NetworkSettings::v4_3::NetworkSettingsController;
use YaST::SystemSettings::SystemSettingsController;
use YaST::Firewall::FirewallController;

sub get_language_keyboard {
return Installation::LanguageKeyboard::LanguageKeyboardController->new();
Expand Down Expand Up @@ -110,6 +111,10 @@ sub get_firstboot_welcome {
return YaST::Firstboot::WelcomeController->new();
}

sub get_firewall {
return YaST::Firewall::FirewallController->new();
}

sub get_navigation {
return Installation::Navigation::NavigationController->new();
}
Expand Down
38 changes: 38 additions & 0 deletions lib/YaST/Firewall/ChangeZonePage.pm
@@ -0,0 +1,38 @@
# SUSE's openQA tests
#
# Copyright 2022 SUSE LLC
# SPDX-License-Identifier: FSFAP

# Summary: Handles Change Zone Page.
# Maintainer: QE YaST <qa-sle-yast@suse.de>

package YaST::Firewall::ChangeZonePage;
use strict;
use warnings;

sub new {
my ($class, $args) = @_;
my $self = bless {
app => $args->{app}
}, $class;
return $self->init();
}

sub init {
my $self = shift;
$self->{cmb_zone_options} = $self->{app}->combobox({id => "\"Y2Firewall::Widgets::ZoneOptions\""});
$self->{btn_ok} = $self->{app}->button({id => "ok"});
return $self;
}

sub is_shown {
my ($self) = @_;
return $self->{cmb_zone_options}->exist();
}

sub set_interface_zone {
my ($self, $zone) = @_;
$self->{cmb_zone_options}->select($zone);
$self->{btn_ok}->click();
}
1;
156 changes: 156 additions & 0 deletions lib/YaST/Firewall/FirewallController.pm
@@ -0,0 +1,156 @@
# SUSE's openQA tests
#
# Copyright 2022 SUSE LLC
# SPDX-License-Identifier: FSFAP

# Summary: The class introduces actions Firewall Settings Page.
# Maintainer: QE YaST <qa-sle-yast@suse.de>

package YaST::Firewall::FirewallController;
use strict;
use warnings;
use testapi;
use YaST::Firewall::MainPage;
use YaST::Firewall::StartUpPage;
use YaST::Firewall::InterfacesPage;
use YaST::Firewall::ZonesPage;
use YaST::Firewall::ZonePage;
use YaST::Firewall::ServicesPage;
use YaST::Firewall::PortsPage;

use YuiRestClient;

sub new {
my ($class, $args) = @_;
my $self = bless {}, $class;
return $self->init($args);
}

sub init {
my ($self, $args) = @_;
$self->{MainPage} = YaST::Firewall::MainPage->new({app => YuiRestClient::get_app()});
$self->{StartUpPage} = YaST::Firewall::StartUpPage->new({app => YuiRestClient::get_app()});
$self->{InterfacesPage} = YaST::Firewall::InterfacesPage->new({app => YuiRestClient::get_app()});
$self->{ZonesPage} = YaST::Firewall::ZonesPage->new({app => YuiRestClient::get_app()});
$self->{ZonePage} = YaST::Firewall::ZonePage->new({app => YuiRestClient::get_app()});
$self->{ServicesPage} = YaST::Firewall::ServicesPage->new({app => YuiRestClient::get_app()});
$self->{PortsPage} = YaST::Firewall::PortsPage->new({app => YuiRestClient::get_app()});
return $self;
}

sub get_main_page {
my ($self) = @_;
die 'Main Firewall Page is not displayed' unless $self->{MainPage}->is_shown();
return $self->{MainPage};
}

sub get_start_up_page {
my ($self) = @_;
die 'StartUp Pane is not displayed' unless $self->{StartUpPage}->is_shown();
return $self->{StartUpPage};
}

sub get_interfaces_page {
my ($self) = @_;
die 'Interfaces Pane is not displayed' unless $self->{InterfacesPage}->is_shown();
return $self->{InterfacesPage};
}

sub get_zones_page {
my ($self) = @_;
die 'Zones Pane is not displayed' unless $self->{ZonesPage}->is_shown();
return $self->{ZonesPage};
}

sub get_zone_page {
my ($self) = @_;
die 'Zone Pane is not displayed' unless $self->{ZonePage}->is_shown();
return $self->{ZonePage};
}

sub get_services_page {
my ($self) = @_;
die 'Services Pane is not displayed' unless $self->{ServicesPage}->is_shown();
return $self->{ServicesPage};
}

sub get_ports_page {
my ($self) = @_;
die 'Ports Pane is not displayed' unless $self->{PortsPage}->is_shown();
return $self->{PortsPage};
}

sub select_start_up_page {
my ($self, $zone) = @_;
$self->get_main_page()->select_start_up_page();
}

sub select_interfaces_page {
my ($self, $zone) = @_;
$self->get_main_page()->select_interfaces_page();
}

sub select_zones_page {
my ($self, $zone) = @_;
$self->get_main_page()->select_zones_page();
}

sub select_zone_page {
my ($self, $zone) = @_;
$self->get_main_page()->select_zone_page($zone);
}

sub start_firewall {
my ($self) = @_;
$self->get_start_up_page()->start_firewall();
}

sub stop_firewall {
my ($self) = @_;
$self->get_start_up_page()->stop_firewall();
}

sub accept_change {
my ($self) = @_;
$self->get_main_page()->press_accept();
}

sub set_default_zone {
my ($self, $zone) = @_;
$self->get_zones_page()->select_zone($zone);
save_screenshot;
$self->get_zones_page()->set_default_zone();
}

sub set_interface_zone {
my ($self, $device, $zone) = @_;
$self->get_interfaces_page()->set_interface_zone($device, $zone);
}

sub switch_ports_tab {
my ($self) = @_;
$self->get_zone_page()->switch_ports_tab();
}

sub switch_services_tab {
my ($self) = @_;
$self->get_zone_page()->switch_services_tab();
}

sub add_service {
my ($self, $zone, $service) = @_;
$self->switch_services_tab();
save_screenshot;
$self->get_services_page()->select_service($zone, $service);
save_screenshot;
$self->get_services_page()->add_service();
}

sub add_tcp_port {
my ($self, $port) = @_;
$self->switch_ports_tab();
save_screenshot;
$self->get_ports_page()->set_tcp_port($port);
}

1;
49 changes: 49 additions & 0 deletions lib/YaST/Firewall/InterfacesPage.pm
@@ -0,0 +1,49 @@
# SUSE's openQA tests
#
# Copyright 2022 SUSE LLC
# SPDX-License-Identifier: FSFAP

# Summary: Handles Firewall Interfaces Page.
# Maintainer: QE YaST <qa-sle-yast@suse.de>

package YaST::Firewall::InterfacesPage;
use strict;
use warnings;
use YaST::Firewall::ChangeZonePage;

sub new {
my ($class, $args) = @_;
my $self = bless {
app => $args->{app}
}, $class;
return $self->init();
}

sub init {
my $self = shift;
$self->{tbl_interfaces} = $self->{app}->table({id => "\"interfaces_table\""});
$self->{btn_change_zone} = $self->{app}->button({id => "\"Y2Firewall::Widgets::ChangeZoneButton\""});
$self->{cmb_zone_options} = $self->{app}->combobox({id => "\"Y2Firewall::Widgets::ZoneOptions\""});
$self->{ChangeZonePage} = YaST::Firewall::ChangeZonePage->new({app => YuiRestClient::get_app()});
return $self;
}

sub is_shown {
my ($self) = @_;
return $self->{tbl_interfaces}->exist();
}

sub get_items {
my ($self) = @_;
return $self->{tbl_interfaces}->items();
}

sub set_interface_zone {
my ($self, $device, $zone) = @_;
$self->{tbl_interfaces}->select(value => $device);
$self->{btn_change_zone}->click();
$self->{ChangeZonePage}->is_shown();
$self->{ChangeZonePage}->set_interface_zone($zone);
}

1;
58 changes: 58 additions & 0 deletions lib/YaST/Firewall/MainPage.pm
@@ -0,0 +1,58 @@
# SUSE's openQA tests
#
# Copyright 2022 SUSE LLC
# SPDX-License-Identifier: FSFAP

# Summary: Handles Firewall Main Page(Include left view tree menu and bottom button).
# Maintainer: QE YaST <qa-sle-yast@suse.de>

package YaST::Firewall::MainPage;
use strict;
use warnings;

sub new {
my ($class, $args) = @_;
my $self = bless {
app => $args->{app}
}, $class;
return $self->init();
}

sub init {
my $self = shift;
$self->{tre_overview} = $self->{app}->tree({id => "\"Y2Firewall::Widgets::OverviewTree\""});
$self->{btn_accept} = $self->{app}->button({id => 'next'});
return $self;
}

sub is_shown {
my ($self) = @_;
return $self->{tre_overview}->exist();
}

sub select_start_up_page {
my ($self) = @_;
$self->{tre_overview}->select("Start-Up");
}

sub select_interfaces_page {
my ($self) = @_;
$self->{tre_overview}->select("Interfaces");
}

sub select_zones_page {
my ($self) = @_;
$self->{tre_overview}->select("Zones");
}

sub press_accept {
my ($self) = @_;
$self->{btn_accept}->click();
}

sub select_zone_page {
my ($self, $zone) = @_;
$self->{tre_overview}->select("Zones|$zone");
}

1;
37 changes: 37 additions & 0 deletions lib/YaST/Firewall/PortsPage.pm
@@ -0,0 +1,37 @@
# SUSE's openQA tests
#
# Copyright 2022 SUSE LLC
# SPDX-License-Identifier: FSFAP

# Summary: Handles Firewall Ports Page.
# Maintainer: QE YaST <qa-sle-yast@suse.de>

package YaST::Firewall::PortsPage;
use strict;
use warnings;

sub new {
my ($class, $args) = @_;
my $self = bless {
app => $args->{app}
}, $class;
return $self->init();
}

sub init {
my $self = shift;
$self->{txb_tcp} = $self->{app}->textbox({id => "tcp"});
return $self;
}

sub is_shown {
my ($self) = @_;
return $self->{txb_tcp}->exist();
}

sub set_tcp_port {
my ($self, $tcp_port) = @_;
$self->{txb_tcp}->set($tcp_port);
}

1;

0 comments on commit 8463ac9

Please sign in to comment.