Change-Id: I5c2133598196a620d4e8a6376beb800cdde81f3cchanges/52/2552/7
							parent
							
								
									bd9a184c56
								
							
						
					
					
						commit
						5879cfe0e1
					
				| @ -0,0 +1,46 @@ | ||||
| package Selenium::Remote::Driver::Extensions; | ||||
| use warnings; | ||||
| use strict; | ||||
| use Moo; | ||||
| use MooseX::Method::Signatures; | ||||
| extends 'Selenium::Remote::Driver'; | ||||
| 
 | ||||
| method select_if_unselected(Str $query, Str $scheme = "xpath") { | ||||
|     my $elem = $self->find_element($query, $scheme); | ||||
|     return 0 unless $elem; | ||||
|     return 0 unless $elem->is_displayed; | ||||
|     if (! $elem->is_selected() ) { | ||||
|         $elem->click; | ||||
|     } | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| method find_text(Str $text, Str $scheme = "xpath") { | ||||
|     return $self->find_element("//*[contains(text(),\"$text\")]", $scheme); | ||||
| } | ||||
| 
 | ||||
| method save_screenshot() { | ||||
|     use MIME::Base64; | ||||
|     open(my $FH,'>','screenshot.png'); | ||||
|     binmode $FH; | ||||
|     my $png_base64 = $self->screenshot(); | ||||
|     print $FH decode_base64($png_base64); | ||||
|     close $FH; | ||||
| } | ||||
| 
 | ||||
| method fill_element(Str $query, Str $scheme, Str $filltext) { | ||||
|     my $elem = $self->find_element($query, $scheme); | ||||
|     return 0 unless $elem; | ||||
|     return 0 unless $elem->is_displayed; | ||||
|     $elem->clear(); | ||||
|     $elem->send_keys($filltext); | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| sub browser_name_in { | ||||
|     my ($self, @names) = @_; | ||||
|     my $browser_name = $self->get_capabilities->{browserName}; | ||||
|     return scalar grep {/^$browser_name$/} @names; | ||||
| } | ||||
| 
 | ||||
| 1; | ||||
| @ -1,59 +0,0 @@ | ||||
| package Test::WebDriver::Sipwise; | ||||
| use warnings; | ||||
| use strict; | ||||
| use Moo; | ||||
| use MooseX::Method::Signatures; | ||||
| extends 'Test::WebDriver'; | ||||
| 
 | ||||
| method find(Str $scheme, Str $query) { | ||||
|     $self->find_element($query, $scheme); | ||||
| } | ||||
| 
 | ||||
| method findclick(Str $scheme, Str $query) { | ||||
|     my $elem = $self->find($scheme, $query); | ||||
|     return 0 unless $elem; | ||||
|     return 0 unless $elem->is_displayed; | ||||
|     $elem->click; | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| method select_if_unselected(Str $scheme, Str $query) { | ||||
|     my $elem = $self->find($scheme, $query); | ||||
|     return 0 unless $elem; | ||||
|     return 0 unless $elem->is_displayed; | ||||
|     if (! $elem->is_selected() ) { | ||||
|         $elem->click; | ||||
|     } | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| method findtext(Str $text, Any $ignore) { | ||||
|     return $self->find(xpath => "//*[contains(text(),\"$text\")]"); | ||||
| } | ||||
| 
 | ||||
| method save_screenshot() { | ||||
|     use MIME::Base64; | ||||
|     open(my $FH,'>','screenshot.png'); | ||||
|     binmode $FH; | ||||
|     my $png_base64 = $self->screenshot(); | ||||
|     print $FH decode_base64($png_base64); | ||||
|     close $FH; | ||||
| } | ||||
| 
 | ||||
| method fill_element(ArrayRef $options, Any $ignore) { | ||||
|     my ($scheme, $query, $filltext) = @$options; | ||||
|     my $elem = $self->find($scheme => $query); | ||||
|     return 0 unless $elem; | ||||
|     return 0 unless $elem->is_displayed; | ||||
|     $elem->clear; | ||||
|     $elem->send_keys($filltext); | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| sub browser_name_in { | ||||
|     my ($self, @names) = @_; | ||||
|     my $browser_name = $self->get_capabilities->{browserName}; | ||||
|     return scalar grep {/^$browser_name$/} @names; | ||||
| } | ||||
| 
 | ||||
| 1; | ||||
| @ -1,22 +1,31 @@ | ||||
| use Sipwise::Base; | ||||
| use lib 't/lib'; | ||||
| use Test::More import => [qw(done_testing is diag)]; | ||||
| use Test::WebDriver::Sipwise qw(); | ||||
| use Selenium::Remote::Driver::Extensions qw(); | ||||
| 
 | ||||
| my $browsername = $ENV{BROWSER_NAME} || ""; #possible values: htmlunit, chrome | ||||
| my $d = Test::WebDriver::Sipwise->new (browser_name => $browsername, | ||||
|     'proxy' => {'proxyType' => 'system'}); | ||||
| diag("Init"); | ||||
| my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; | ||||
| $d->get_ok("$uri/logout"); #make sure we are logged out | ||||
| $d->get_ok("$uri/login"); | ||||
| my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome | ||||
| my $d = Selenium::Remote::Driver::Extensions->new ( | ||||
|     'browser_name' => $browsername, | ||||
|     'proxy' => {'proxyType' => 'system'} ); | ||||
| 
 | ||||
| diag("Loading login page (logout first)"); | ||||
| $d->set_window_size(1024,1280) if ($browsername ne "htmlunit"); | ||||
| $d->get("$uri/logout"); # make sure we are logged out | ||||
| $d->get("$uri/login"); | ||||
| $d->set_implicit_wait_timeout(10000); | ||||
| $d->default_finder('xpath'); | ||||
| 
 | ||||
| diag("Do Admin Login"); | ||||
| $d->findtext_ok('Admin Sign In'); | ||||
| $d->find(name => 'username')->send_keys('administrator'); | ||||
| $d->find(name => 'password')->send_keys('administrator'); | ||||
| $d->findclick_ok(name => 'submit'); | ||||
| $d->find_text("Admin Sign In"); | ||||
| is($d->get_title, ''); | ||||
| $d->find_element('username', name)->send_keys('administrator'); | ||||
| $d->find_element('password', name)->send_keys('administrator'); | ||||
| $d->find_element('submit', name)->click(); | ||||
| 
 | ||||
| $d->title_is('Dashboard'); | ||||
| diag("Checking Admin interface"); | ||||
| is($d->get_title, 'Dashboard'); | ||||
| is($d->find_element('//*[@id="masthead"]//h2','xpath')->get_text(), "Dashboard"); | ||||
| 
 | ||||
| diag("Done: admin-login.t"); | ||||
| done_testing; | ||||
|  | ||||
| @ -1,169 +1,176 @@ | ||||
| use Sipwise::Base; | ||||
| use lib 't/lib'; | ||||
| use Test::More import => [qw(done_testing is ok diag todo_skip)]; | ||||
| use Test::WebDriver::Sipwise qw(); | ||||
| use Selenium::Remote::Driver::Extensions qw(); | ||||
| 
 | ||||
| my $browsername = $ENV{BROWSER_NAME} || ""; #possible values: htmlunit, chrome | ||||
| my $d = Test::WebDriver::Sipwise->new (browser_name => $browsername, | ||||
|     'proxy' => {'proxyType' => 'system'}); | ||||
| $d->set_window_size(1024,1280) if ($browsername ne "htmlunit"); | ||||
| diag("Init"); | ||||
| my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; | ||||
| $d->get_ok("$uri/logout"); #make sure we are logged out | ||||
| $d->get_ok("$uri/login"); | ||||
| my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome | ||||
| my $d = Selenium::Remote::Driver::Extensions->new ( | ||||
|     'browser_name' => $browsername, | ||||
|     'proxy' => {'proxyType' => 'system'} ); | ||||
| 
 | ||||
| diag("Loading login page (logout first)"); | ||||
| $d->set_window_size(1024,1280) if ($browsername ne "htmlunit"); | ||||
| $d->get("$uri/logout"); # make sure we are logged out | ||||
| $d->get("$uri/login"); | ||||
| $d->set_implicit_wait_timeout(10000); | ||||
| $d->default_finder('xpath'); | ||||
| 
 | ||||
| diag("Do Admin Login"); | ||||
| $d->findtext_ok('Admin Sign In'); | ||||
| $d->find(name => 'username')->send_keys('administrator'); | ||||
| $d->find(name => 'password')->send_keys('administrator'); | ||||
| $d->findclick_ok(name => 'submit'); | ||||
| 
 | ||||
| $d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Dashboard")]'); | ||||
| $d->find_text("Admin Sign In"); | ||||
| is($d->get_title, ''); | ||||
| $d->find_element('username', name)->send_keys('administrator'); | ||||
| $d->find_element('password', name)->send_keys('administrator'); | ||||
| $d->find_element('submit', name)->click(); | ||||
| is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Dashboard"); | ||||
| 
 | ||||
| diag("Go to Billing page"); | ||||
| $d->findclick_ok(xpath => '//*[@id="main-nav"]//*[contains(text(),"Settings")]'); | ||||
| $d->find_ok(xpath => '//a[contains(@href,"/domain")]'); | ||||
| $d->findclick_ok(link_text => "Billing"); | ||||
| $d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click(); | ||||
| $d->find_element('//a[contains(@href,"/domain")]'); | ||||
| $d->find_element("Billing", link_text)->click(); | ||||
| 
 | ||||
| diag("Create a billing profile"); | ||||
| $d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Billing Profiles")]'); | ||||
| $d->findclick_ok(link_text => 'Create Billing Profile'); | ||||
| $d->find(id => 'name')->send_keys('mytestprofile'); | ||||
| $d->fill_element_ok(['name', 'handle', 'mytestprofile']); | ||||
| $d->find_ok(id => 'fraud_interval_lock'); | ||||
| $d->findclick_ok(xpath => '//select[@id="fraud_interval_lock"]/option[contains(text(),"foreign calls")]'); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,modal-body)]//table[@id="reselleridtable"]/tbody/tr[1]/td//input[@type="checkbox"]'); | ||||
| 
 | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"modal")]//input[@type="submit"]'); | ||||
| $d->find_element('//*[@id="masthead"]//h2[contains(text(),"Billing Profiles")]')->click(); | ||||
| $d->find_element('Create Billing Profile', link_text)->click(); | ||||
| $d->find_element('name', id)->send_keys('mytestprofile'); | ||||
| $d->fill_element('handle', name, 'mytestprofile'); | ||||
| $d->find_element('fraud_interval_lock', id); | ||||
| $d->find_element('//select[@id="fraud_interval_lock"]/option[contains(text(),"foreign calls")]')->click(); | ||||
| $d->find_element('//div[contains(@class,modal-body)]//table[@id="reselleridtable"]/tbody/tr[1]/td//input[@type="checkbox"]')->click(); | ||||
| $d->find_element('//div[contains(@class,"modal")]//input[@type="submit"]')->click(); | ||||
| 
 | ||||
| diag("Search nonexisting billing profile"); | ||||
| my $searchfield = $d->find(css => '#billing_profile_table_filter label input'); | ||||
| my $searchfield = $d->find_element('#billing_profile_table_filter label input', css); | ||||
| ok($searchfield); | ||||
| $searchfield->send_keys('donotfindme'); | ||||
| 
 | ||||
| diag("Verify that nothing is shown"); | ||||
| my $elem = $d->find(css => '#billing_profile_table td.dataTables_empty'); | ||||
| my $elem = $d->find_element('#billing_profile_table td.dataTables_empty', css); | ||||
| ok($elem); | ||||
| is($elem->get_text,'No matching records found'); | ||||
| is($elem->get_text, 'No matching records found'); | ||||
| 
 | ||||
| diag('Search for "mytestprofile" in billing profile'); | ||||
| $searchfield->clear(); | ||||
| $searchfield->send_keys('mytestprofile'); | ||||
| $d->find_ok(css => '#billing_profile_table tr.sw_action_row'); | ||||
| is($d->find(xpath => '//table[@id="billing_profile_table"]//tr[1]/td[2]')->get_text,'mytestprofile'); | ||||
| #sleep 1; | ||||
| #$d->find_element('#billing_profile_table tr.sw_action_row', css); | ||||
| ok($d->find_element('//table[@id="billing_profile_table"]//tr[1]/td[2][contains(text(),"mytestprofile")]')); | ||||
| 
 | ||||
| diag("Open edit dialog for mytestprofile"); | ||||
| my $row = $d->find(xpath => '//table/tbody/tr/td[contains(text(), "mytestprofile")]/..'); | ||||
| my $row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestprofile")]/..'); | ||||
| ok($row); | ||||
| my $edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Edit")]'); | ||||
| ok($edit_link); | ||||
| $d->move_to(element => $row); | ||||
| $edit_link->click; | ||||
| $edit_link->click(); | ||||
| 
 | ||||
| diag("Edit mytestprofile"); | ||||
| $elem = $d->find(id => 'name'); | ||||
| $elem = $d->find_element('name', id); | ||||
| ok($elem); | ||||
| is($elem->get_value, "mytestprofile"); | ||||
| $d->fill_element_ok(['id', 'interval_charge', '3.2']); | ||||
| $d->findclick_ok(id => 'save'); | ||||
| $d->fill_element('interval_charge', id, '3.2'); | ||||
| $d->find_element('save', id)->click(); | ||||
| 
 | ||||
| diag('Open "Fees" for mytestprofile'); | ||||
| $row = $d->find(xpath => '//table/tbody/tr/td[contains(text(), "mytestprofile")]/..'); | ||||
| $row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestprofile")]/..'); | ||||
| ok($row); | ||||
| $edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Fees")]'); | ||||
| ok($edit_link); | ||||
| $d->move_to(element => $row); | ||||
| $edit_link->click; | ||||
| $d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Billing Fees")]'); | ||||
| $edit_link->click(); | ||||
| $d->find_element('//*[@id="masthead"]//h2[contains(text(),"Billing Fees")]'); | ||||
| 
 | ||||
| diag("Create a billing fee"); | ||||
| $d->findclick_ok(link_text => 'Create Fee Entry'); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"modal")]//input[@value="Create Zone"]'); | ||||
| $d->find_element('Create Fee Entry', link_text)->click(); | ||||
| $d->find_element('//div[contains(@class,"modal")]//input[@value="Create Zone"]')->click(); | ||||
| diag("Create a billing zone (redirect from previous form)"); | ||||
| $d->fill_element_ok([name => 'zone', 'testingzone']); | ||||
| $d->fill_element_ok([name => 'detail', 'testingdetail']); | ||||
| $d->findclick_ok(name => 'save'); | ||||
| $d->fill_element('zone', name, 'testingzone'); | ||||
| $d->fill_element('detail', name, 'testingdetail'); | ||||
| $d->find_element('save', name)->click(); | ||||
| diag("Back to orignial form (create billing fees)"); | ||||
| #sleep 2; # give ajax time to load | ||||
| $d->select_if_unselected_ok(xpath => '//div[contains(@class,"modal")]//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..//input[@type="checkbox"]'); | ||||
| $d->fill_element_ok([id => 'source', '.*']); | ||||
| $d->fill_element_ok([name => 'destination', '.+']); | ||||
| $d->findclick_ok(id => 'save'); | ||||
| $d->select_if_unselected('//div[contains(@class,"modal")]//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..//input[@type="checkbox"]'); | ||||
| $d->fill_element('source', id, '.*'); | ||||
| $d->fill_element('destination', name, '.+'); | ||||
| $d->find_element('save', id)->click(); | ||||
| 
 | ||||
| diag("Delete billing fee"); | ||||
| $d->find_ok(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..//a[contains(@class,"btn-primary") and contains(text(),"Edit")]'); | ||||
| $row = $d->find(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..'); | ||||
| $d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..//a[contains(@class,"btn-primary") and contains(text(),"Edit")]'); | ||||
| $row = $d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..'); | ||||
| ok($row); | ||||
| ok(true, "test1"); | ||||
| $d->move_to(element => $row); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..//a[contains(@class,"btn-secondary") and contains(text(),"Delete")]'); | ||||
| $d->findtext_ok("Are you sure?"); | ||||
| $d->findclick_ok(id => 'dataConfirmOK'); | ||||
| ok(true, "test2"); | ||||
| $d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..//a[contains(@class,"btn-secondary") and contains(text(),"Delete")]')->click(); | ||||
| ok(true, "test3"); | ||||
| $d->find_text("Are you sure?"); | ||||
| $d->find_element('dataConfirmOK', id)->click(); | ||||
| diag('skip was here'); | ||||
| $d->findtext_ok("successfully deleted"); | ||||
| $d->find_text("successfully deleted"); | ||||
| 
 | ||||
| diag("Click Edit Zones"); | ||||
| $d->findclick_ok(link_text => "Edit Zones"); | ||||
| $d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Billing Zones")]'); | ||||
| $d->find_element("Edit Zones", link_text)->click(); | ||||
| ok($d->find_element('//*[@id="masthead"]//h2[contains(text(),"Billing Zones")]')); | ||||
| 
 | ||||
| diag("Delete testingzone"); | ||||
| $d->fill_element_ok([xpath => '//div[contains(@class, "dataTables_filter")]//input', 'thisshouldnotexist']); | ||||
| $d->find_ok(css => '#billing_zone_table tr > td.dataTables_empty'); | ||||
| $d->fill_element_ok([xpath => '//div[contains(@class, "dataTables_filter")]//input', 'testingdetail']); | ||||
| $row = $d->find(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..'); | ||||
| $d->fill_element('//div[contains(@class, "dataTables_filter")]//input', xpath, 'thisshouldnotexist'); | ||||
| $d->find_element('#billing_zone_table tr > td.dataTables_empty', css); | ||||
| $d->fill_element('//div[contains(@class, "dataTables_filter")]//input', xpath, 'testingdetail'); | ||||
| $row = $d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..'); | ||||
| ok($row); | ||||
| $d->move_to(element => $row); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..//a[contains(text(),"Delete")]'); | ||||
| $d->findtext_ok("Are you sure?"); | ||||
| $d->findclick_ok(id => 'dataConfirmOK'); | ||||
| $d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..//a[contains(text(),"Delete")]')->click(); | ||||
| $d->find_text("Are you sure?"); | ||||
| $d->find_element('dataConfirmOK', id)->click(); | ||||
| 
 | ||||
| diag("Go to Billing page (again)"); | ||||
| $d->findclick_ok(xpath => '//*[@id="main-nav"]//*[contains(text(),"Settings")]'); | ||||
| $d->find_ok(xpath => '//a[contains(@href,"/domain")]'); | ||||
| $d->findclick_ok(link_text => "Billing"); | ||||
| $d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click(); | ||||
| ok($d->find_element('//a[contains(@href,"/domain")]')); | ||||
| $d->find_element("Billing", link_text)->click(); | ||||
| 
 | ||||
| diag('Open "Edit Peak Times" for mytestprofile'); | ||||
| $row = $d->find(xpath => '//table/tbody/tr/td[contains(text(), "mytestprofile")]/..'); | ||||
| $row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestprofile")]/..'); | ||||
| ok($row); | ||||
| $edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Peaktimes")]'); | ||||
| ok($edit_link); | ||||
| $d->move_to(element => $row); | ||||
| $edit_link->click; | ||||
| $d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"times for mytestprofile")]'); | ||||
| $edit_link->click(); | ||||
| ok($d->find_element('//*[@id="masthead"]//h2[contains(text(),"times for mytestprofile")]')); | ||||
| 
 | ||||
| diag("Edit Wednesday"); | ||||
| $row = $d->find(xpath => '//table//td[contains(text(),"Wednesday")]'); | ||||
| $row = $d->find_element('//table//td[contains(text(),"Wednesday")]'); | ||||
| ok($row); | ||||
| $d->move_to(element => ($d->find(xpath => '//h3[contains(text(),"Weekdays")]'))); | ||||
| $d->move_to(element => ($d->find_element('//h3[contains(text(),"Weekdays")]'))); | ||||
| sleep 2 if ($d->browser_name_in("firefox", "htmlunit")); | ||||
| $d->move_to(element => $row); | ||||
| $d->findclick_ok(xpath => '//table//td[contains(text(),"Wednesday")]/..//a[text()[contains(.,"Edit")]]'); | ||||
| $d->findtext_ok("Edit Wednesday"); | ||||
| $d->find_element('//table//td[contains(text(),"Wednesday")]/..//a[text()[contains(.,"Edit")]]')->click(); | ||||
| $d->find_text("Edit Wednesday"); | ||||
| 
 | ||||
| diag("add/delete a time def to Wednesday"); | ||||
| $d->fill_element_ok([name => 'start', "03:14:15"]); | ||||
| $d->fill_element_ok([name => 'end', "13:37:00"]); | ||||
| $d->findclick_ok(name => 'add'); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"modal")]//i[@class="icon-trash"]/..'); | ||||
| $d->fill_element('start', name, "03:14:15"); | ||||
| $d->fill_element('end', name, "13:37:00"); | ||||
| $d->find_element('add', name)->click(); | ||||
| $d->find_element('//div[contains(@class,"modal")]//i[@class="icon-trash"]/..')->click(); | ||||
| 
 | ||||
| diag('skip was here'); | ||||
| $d->findclick_ok(id => 'mod_close'); | ||||
| $d->find_element('mod_close', id)->click(); | ||||
| 
 | ||||
| diag("Create a Date Definition"); | ||||
| $d->findclick_ok(link_text => 'Create Special Off-Peak Date'); | ||||
| $d->fill_element_ok([name => 'start', "2008-02-28 03:14:15"]); | ||||
| $d->fill_element_ok([name => 'end', "2008-02-28 13:37:00"]); | ||||
| $d->findclick_ok(name => 'save'); | ||||
| $d->find_element('Create Special Off-Peak Date', link_text)->click(); | ||||
| $d->fill_element('start', name, "2008-02-28 03:14:15"); | ||||
| $d->fill_element('end', name, "2008-02-28 13:37:00"); | ||||
| $d->find_element('save', name)->click(); | ||||
| 
 | ||||
| diag("Find/delete my created date definition"); | ||||
| $row = $d->find(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"2008-02-28")]/..'); | ||||
| $row = $d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"2008-02-28")]/..'); | ||||
| ok($row); | ||||
| $d->move_to(element => $row); | ||||
| $edit_link = $d->find_child_element($row, './/a[contains(@class,"btn-secondary")]'); | ||||
| ok($edit_link); | ||||
| sleep 2 if ($browsername eq "htmlunit"); | ||||
| $edit_link->click; | ||||
| $d->findtext_ok("Are you sure?"); | ||||
| $d->findclick_ok(id => 'dataConfirmOK'); | ||||
| $edit_link->click(); | ||||
| $d->find_text("Are you sure?"); | ||||
| $d->find_element('dataConfirmOK', id)->click(); | ||||
| 
 | ||||
| done_testing; | ||||
| # vim: filetype=perl | ||||
|  | ||||
| @ -1,109 +1,113 @@ | ||||
| use Sipwise::Base; | ||||
| use lib 't/lib'; | ||||
| use Test::More import => [qw(done_testing is ok diag todo_skip)]; | ||||
| use Test::WebDriver::Sipwise qw(); | ||||
| use Selenium::Remote::Driver::Extensions qw(); | ||||
| 
 | ||||
| my $browsername = $ENV{BROWSER_NAME} || ""; #possible values: htmlunit, chrome | ||||
| my $d = Test::WebDriver::Sipwise->new (browser_name => $browsername, | ||||
|     'proxy' => {'proxyType' => 'system'}); | ||||
| $d->set_window_size(1024,1280) if ($browsername ne "htmlunit"); | ||||
| diag("Init"); | ||||
| my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; | ||||
| $d->get_ok("$uri/logout"); #make sure we are logged out | ||||
| $d->get_ok("$uri/login"); | ||||
| my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome | ||||
| my $d = Selenium::Remote::Driver::Extensions->new ( | ||||
|     'browser_name' => $browsername, | ||||
|     'proxy' => {'proxyType' => 'system'} ); | ||||
| 
 | ||||
| diag("Loading login page (logout first)"); | ||||
| $d->set_window_size(1024,1280) if ($browsername ne "htmlunit"); | ||||
| $d->get("$uri/logout"); # make sure we are logged out | ||||
| $d->get("$uri/login"); | ||||
| $d->set_implicit_wait_timeout(10000); | ||||
| $d->default_finder('xpath'); | ||||
| 
 | ||||
| diag("Do Admin Login"); | ||||
| $d->findtext_ok('Admin Sign In'); | ||||
| $d->find(name => 'username')->send_keys('administrator'); | ||||
| $d->find(name => 'password')->send_keys('administrator'); | ||||
| $d->findclick_ok(name => 'submit'); | ||||
| $d->find_text("Admin Sign In"); | ||||
| is($d->get_title, ''); | ||||
| $d->find_element('username', name)->send_keys('administrator'); | ||||
| $d->find_element('password', name)->send_keys('administrator'); | ||||
| $d->find_element('submit', name)->click(); | ||||
| is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Dashboard"); | ||||
| 
 | ||||
| my @chars = ("A".."Z", "a".."z"); | ||||
| my $rnd_id; | ||||
| $rnd_id .= $chars[rand @chars] for 1..8; | ||||
| 
 | ||||
| $d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Dashboard")]'); | ||||
| 
 | ||||
| diag("Go to Customers page"); | ||||
| $d->findclick_ok(xpath => '//*[@id="main-nav"]//*[contains(text(),"Settings")]'); | ||||
| $d->findclick_ok(link_text => "Customers"); | ||||
| $d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click(); | ||||
| $d->find_element("Customers", link_text)->click(); | ||||
| 
 | ||||
| diag("Create a Customer"); | ||||
| $d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Customers")]'); | ||||
| $d->findclick_ok(link_text => 'Create Customer'); | ||||
| $d->fill_element_ok([css => '#contactidtable_filter input', 'thisshouldnotexist']); | ||||
| $d->find_ok(css => '#contactidtable tr > td.dataTables_empty'); | ||||
| $d->fill_element_ok([css => '#contactidtable_filter input', 'default-customer']); | ||||
| $d->select_if_unselected_ok(xpath => '//table[@id="contactidtable"]/tbody/tr[1]/td[contains(text(),"default-customer")]/..//input[@type="checkbox"]'); | ||||
| $d->fill_element_ok([css => '#billing_profileidtable_filter input', 'thisshouldnotexist']); | ||||
| $d->find_ok(css => '#billing_profileidtable tr > td.dataTables_empty'); | ||||
| $d->fill_element_ok([css => '#billing_profileidtable_filter input', 'Default Billing Profile']); | ||||
| $d->select_if_unselected_ok(xpath => '//table[@id="billing_profileidtable"]/tbody/tr[1]/td[contains(text(),"Default Billing Profile")]/..//input[@type="checkbox"]'); | ||||
| $d->find_element('//*[@id="masthead"]//h2[contains(text(),"Customers")]'); | ||||
| $d->find_element('Create Customer', link_text)->click(); | ||||
| $d->fill_element('#contactidtable_filter input', css, 'thisshouldnotexist'); | ||||
| $d->find_element('#contactidtable tr > td.dataTables_empty', css); | ||||
| $d->fill_element('#contactidtable_filter input', css, 'default-customer'); | ||||
| $d->select_if_unselected('//table[@id="contactidtable"]/tbody/tr[1]/td[contains(text(),"default-customer")]/..//input[@type="checkbox"]'); | ||||
| $d->fill_element('#billing_profileidtable_filter input', css, 'thisshouldnotexist'); | ||||
| $d->find_element('#billing_profileidtable tr > td.dataTables_empty', css); | ||||
| $d->fill_element('#billing_profileidtable_filter input', css, 'Default Billing Profile'); | ||||
| $d->select_if_unselected('//table[@id="billing_profileidtable"]/tbody/tr[1]/td[contains(text(),"Default Billing Profile")]/..//input[@type="checkbox"]'); | ||||
| eval { #lets only try this | ||||
|     $d->select_if_unselected(xpath => '//table[@id="productidtable"]/tbody/tr[1]/td[contains(text(),"Basic SIP Account")]/..//input[@type="checkbox"]'); | ||||
|     $d->select_if_unselected('//table[@id="productidtable"]/tbody/tr[1]/td[contains(text(),"Basic SIP Account")]/..//input[@type="checkbox"]'); | ||||
| }; | ||||
| $d->fill_element_ok([id => 'external_id', $rnd_id]); | ||||
| $d->findclick_ok(id => 'save'); | ||||
| $d->fill_element('external_id', id, $rnd_id); | ||||
| $d->find_element('save', id)->click(); | ||||
| 
 | ||||
| diag("Open Details for our just created Customer"); | ||||
| sleep 2; #Else we might search on the previous page | ||||
| $d->fill_element_ok([css => '#Customer_table_filter input', 'thisshouldnotexist']); | ||||
| $d->find_ok(css => '#Customer_table tr > td.dataTables_empty'); | ||||
| $d->fill_element_ok([css => '#Customer_table_filter input', $rnd_id]); | ||||
| my $row = $d->find(xpath => '(//table/tbody/tr/td[contains(text(), "'.$rnd_id.'")]/..)[1]'); | ||||
| $d->fill_element('#Customer_table_filter input', css, 'thisshouldnotexist'); | ||||
| $d->find_element('#Customer_table tr > td.dataTables_empty', css); | ||||
| $d->fill_element('#Customer_table_filter input', css, $rnd_id); | ||||
| my $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "'.$rnd_id.'")]/..)[1]'); | ||||
| ok($row); | ||||
| my $edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Details")]'); | ||||
| ok($edit_link); | ||||
| $d->move_to(element => $row); | ||||
| $edit_link->click; | ||||
| $edit_link->click(); | ||||
| 
 | ||||
| diag("Edit our contact"); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"accordion-heading")]//a[contains(text(),"Contact Details")]'); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"accordion-body")]//*[contains(@class,"btn-primary") and contains(text(),"Edit Contact")]'); | ||||
| $d->fill_element_ok([css => 'div.modal #firstname', "Alice"]); | ||||
| $d->fill_element_ok([id => 'company', 'Sipwise']); | ||||
| $d->find_element('//div[contains(@class,"accordion-heading")]//a[contains(text(),"Contact Details")]')->click(); | ||||
| $d->find_element('//div[contains(@class,"accordion-body")]//*[contains(@class,"btn-primary") and contains(text(),"Edit Contact")]')->click(); | ||||
| $d->fill_element('div.modal #firstname', css, "Alice"); | ||||
| $d->fill_element('company', id, 'Sipwise'); | ||||
| # Choosing Country: | ||||
| $d->fill_element_ok([css => '#countryidtable_filter input', 'thisshouldnotexist']); | ||||
| $d->find_ok(css => '#countryidtable tr > td.dataTables_empty'); | ||||
| $d->fill_element_ok([css => '#countryidtable_filter input', 'Ukraine']); | ||||
| $d->select_if_unselected_ok(xpath => '//table[@id="countryidtable"]/tbody/tr[1]/td[contains(text(),"Ukraine")]/..//input[@type="checkbox"]'); | ||||
| $d->fill_element('#countryidtable_filter input', css, 'thisshouldnotexist'); | ||||
| $d->find_element('#countryidtable tr > td.dataTables_empty', css); | ||||
| $d->fill_element('#countryidtable_filter input', css, 'Ukraine'); | ||||
| $d->select_if_unselected('//table[@id="countryidtable"]/tbody/tr[1]/td[contains(text(),"Ukraine")]/..//input[@type="checkbox"]'); | ||||
| # Save | ||||
| $d->findclick_ok(id => 'save'); | ||||
| $d->find_element('save', id)->click(); | ||||
| 
 | ||||
| diag("Check if successful"); | ||||
| $d->find_ok(xpath => '//div[contains(@class,"accordion-body")]//table//td[contains(text(),"Sipwise")]'); | ||||
| $d->find_element('//div[contains(@class,"accordion-body")]//table//td[contains(text(),"Sipwise")]'); | ||||
| 
 | ||||
| diag("Edit Fraud Limits"); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"accordion-heading")]//a[contains(text(),"Fraud Limits")]'); | ||||
| $d->find_element('//div[contains(@class,"accordion-heading")]//a[contains(text(),"Fraud Limits")]')->click(); | ||||
| sleep 2 if ($d->browser_name_in("phantomjs", "chrome", "firefox")); # time to move | ||||
| $row = $d->find(xpath => '//div[contains(@class,"accordion-body")]//table//tr/td[contains(text(),"Monthly Settings")]'); | ||||
| $row = $d->find_element('//div[contains(@class,"accordion-body")]//table//tr/td[contains(text(),"Monthly Settings")]'); | ||||
| ok($row); | ||||
| $edit_link = $d->find_child_element($row, './../td//a[text()[contains(.,"Edit")]]'); | ||||
| ok($edit_link); | ||||
| $d->move_to(element => $row); | ||||
| $edit_link->click; | ||||
| $edit_link->click(); | ||||
| 
 | ||||
| diag("Do Edit Fraud Limits"); | ||||
| $d->fill_element_ok([id => 'fraud_interval_limit', "100"]); | ||||
| $d->fill_element_ok([id => 'fraud_interval_notify', 'mymail@example.org']); | ||||
| $d->findclick_ok(id => 'save'); | ||||
| $d->find_ok(xpath => '//div[contains(@class,"accordion-body")]//table//td[contains(text(),"mymail@example.org")]'); | ||||
| $d->fill_element('fraud_interval_limit', id, "100"); | ||||
| $d->fill_element('fraud_interval_notify', id, 'mymail@example.org'); | ||||
| $d->find_element('save', id)->click(); | ||||
| $d->find_element('//div[contains(@class,"accordion-body")]//table//td[contains(text(),"mymail@example.org")]'); | ||||
| 
 | ||||
| diag("Terminate our customer"); | ||||
| $d->findclick_ok(xpath => '//a[contains(@class,"btn-primary") and text()[contains(.,"Back")]]'); | ||||
| $d->fill_element_ok([css => '#Customer_table_filter input', 'thisshouldnotexist']); | ||||
| $d->find_ok(css => '#Customer_table tr > td.dataTables_empty'); | ||||
| $d->fill_element_ok([css => '#Customer_table_filter input', $rnd_id]); | ||||
| $row = $d->find(xpath => '(//table/tbody/tr/td[contains(text(), "'.$rnd_id.'")]/..)[1]'); | ||||
| $d->find_element('//a[contains(@class,"btn-primary") and text()[contains(.,"Back")]]')->click(); | ||||
| $d->fill_element('#Customer_table_filter input', css, 'thisshouldnotexist'); | ||||
| $d->find_element('#Customer_table tr > td.dataTables_empty', css); | ||||
| $d->fill_element('#Customer_table_filter input', css, $rnd_id); | ||||
| $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "'.$rnd_id.'")]/..)[1]'); | ||||
| ok($row); | ||||
| $edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Terminate")]'); | ||||
| ok($edit_link); | ||||
| $d->move_to(element => $row); | ||||
| $edit_link->click; | ||||
| $edit_link->click(); | ||||
| #sleep 2; | ||||
| $d->findtext_ok("Are you sure?"); | ||||
| $d->findclick_ok(id => 'dataConfirmOK'); | ||||
| $d->findtext_ok("Customer successfully terminated"); | ||||
| $d->find_text("Are you sure?"); | ||||
| $d->find_element('dataConfirmOK', id)->click(); | ||||
| $d->find_text("Customer successfully terminated"); | ||||
| 
 | ||||
| done_testing; | ||||
| # vim: filetype=perl | ||||
|  | ||||
| @ -1,150 +1,154 @@ | ||||
| use Sipwise::Base; | ||||
| use lib 't/lib'; | ||||
| use Test::More import => [qw(done_testing is ok diag todo_skip)]; | ||||
| use Test::WebDriver::Sipwise qw(); | ||||
| use Selenium::Remote::Driver::Extensions qw(); | ||||
| 
 | ||||
| my $browsername = $ENV{BROWSER_NAME} || ""; #possible values: htmlunit, chrome | ||||
| my $d = Test::WebDriver::Sipwise->new (browser_name => $browsername, | ||||
|     'proxy' => {'proxyType' => 'system'}); | ||||
| $d->set_window_size(1024,1280) if ($browsername ne "htmlunit"); | ||||
| diag("Init"); | ||||
| my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; | ||||
| $d->get_ok("$uri/logout"); #make sure we are logged out | ||||
| $d->get_ok("$uri/login"); | ||||
| my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome | ||||
| my $d = Selenium::Remote::Driver::Extensions->new ( | ||||
|     'browser_name' => $browsername, | ||||
|     'proxy' => {'proxyType' => 'system'} ); | ||||
| 
 | ||||
| diag("Loading login page (logout first)"); | ||||
| $d->set_window_size(1024,1280) if ($browsername ne "htmlunit"); | ||||
| $d->get("$uri/logout"); # make sure we are logged out | ||||
| $d->get("$uri/login"); | ||||
| $d->set_implicit_wait_timeout(10000); | ||||
| $d->default_finder('xpath'); | ||||
| 
 | ||||
| diag("Do Admin Login"); | ||||
| $d->findtext_ok('Admin Sign In'); | ||||
| $d->find(name => 'username')->send_keys('administrator'); | ||||
| $d->find(name => 'password')->send_keys('administrator'); | ||||
| $d->findclick_ok(name => 'submit'); | ||||
| 
 | ||||
| $d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Dashboard")]'); | ||||
| $d->find_text("Admin Sign In"); | ||||
| is($d->get_title, ''); | ||||
| $d->find_element('username', name)->send_keys('administrator'); | ||||
| $d->find_element('password', name)->send_keys('administrator'); | ||||
| $d->find_element('submit', name)->click(); | ||||
| is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Dashboard"); | ||||
| 
 | ||||
| diag("Go to Peerings page"); | ||||
| $d->findclick_ok(xpath => '//*[@id="main-nav"]//*[contains(text(),"Settings")]'); | ||||
| $d->findclick_ok(link_text => "Peerings"); | ||||
| $d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click(); | ||||
| $d->find_element("Peerings", link_text)->click(); | ||||
| 
 | ||||
| diag("Create a Peering Group"); | ||||
| $d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"SIP Peering Groups")]'); | ||||
| my $peerings_uri = $d->get_location; | ||||
| $d->findclick_ok(link_text => 'Create Peering Group'); | ||||
| $d->find_element('//*[@id="masthead"]//h2[contains(text(),"SIP Peering Groups")]'); | ||||
| my $peerings_uri = $d->get_current_url(); | ||||
| $d->find_element('Create Peering Group', link_text)->click(); | ||||
| 
 | ||||
| diag("Create a Peering Contract"); | ||||
| $d->findclick_ok(xpath => '//input[@type="button" and @value="Create Contract"]'); | ||||
| $d->select_if_unselected_ok(xpath => '//table[@id="contactidtable"]/tbody/tr[1]//input[@type="checkbox"]'); | ||||
| $d->select_if_unselected_ok(xpath => '//table[@id="billing_profileidtable"]/tbody/tr[1]//input[@type="checkbox"]'); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"modal-body")]//div//select[@id="status"]/option[@value="active"]'); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"modal")]//input[@type="submit"]'); | ||||
| $d->findtext_ok('Create Peering Group'); #Should go back to prev form | ||||
| 
 | ||||
| $d->fill_element_ok([id => 'name', 'testinggroup']); | ||||
| $d->fill_element_ok([id => 'description', 'A group created for testing purposes']); | ||||
| $d->select_if_unselected(xpath => '//table[@id="contractidtable"]/tbody/tr[1]//input[@type="checkbox"]'); | ||||
| $d->findclick_ok(id => 'save'); | ||||
| $d->find_element('//input[@type="button" and @value="Create Contract"]')->click(); | ||||
| $d->select_if_unselected('//table[@id="contactidtable"]/tbody/tr[1]//input[@type="checkbox"]'); | ||||
| $d->select_if_unselected('//table[@id="billing_profileidtable"]/tbody/tr[1]//input[@type="checkbox"]'); | ||||
| $d->find_element('//div[contains(@class,"modal-body")]//div//select[@id="status"]/option[@value="active"]')->click(); | ||||
| $d->find_element('//div[contains(@class,"modal")]//input[@type="submit"]')->click(); | ||||
| $d->find_text('Create Peering Group'); # Should go back to prev form | ||||
| 
 | ||||
| $d->fill_element('name', id, 'testinggroup'); | ||||
| $d->fill_element('description', id, 'A group created for testing purposes'); | ||||
| $d->select_if_unselected('//table[@id="contractidtable"]/tbody/tr[1]//input[@type="checkbox"]'); | ||||
| $d->find_element('save', id)->click(); | ||||
| 
 | ||||
| diag("Edit Servers/Rules of testinggroup"); | ||||
| my $row = $d->find(xpath => '(//table/tbody/tr/td[contains(text(), "testinggroup")]/..)[1]'); | ||||
| my $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "testinggroup")]/..)[1]'); | ||||
| ok($row); | ||||
| my $edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Details")]'); | ||||
| ok($edit_link); | ||||
| $d->move_to(element => $row); | ||||
| $edit_link->click; | ||||
| $edit_link->click(); | ||||
| 
 | ||||
| diag("Create a Peering Rule"); | ||||
| $d->findclick_ok(xpath => '//a[contains(text(),"Create Peering Rule")]'); | ||||
| $d->fill_element_ok(['id', 'callee_prefix', '43']); | ||||
| $d->fill_element_ok(['id', 'callee_pattern', '^sip']); | ||||
| $d->fill_element_ok(['id', 'caller_pattern', '999']); | ||||
| $d->fill_element_ok(['id', 'description', 'for testing purposes']); | ||||
| $d->findclick_ok(id => 'save'); | ||||
| $d->find_element('//a[contains(text(),"Create Peering Rule")]')->click(); | ||||
| $d->fill_element('callee_prefix', id, '43'); | ||||
| $d->fill_element('callee_pattern', id, '^sip'); | ||||
| $d->fill_element('caller_pattern', id, '999'); | ||||
| $d->fill_element('description', id, 'for testing purposes'); | ||||
| $d->find_element('save', id)->click(); | ||||
| 
 | ||||
| diag("Create a Peering Server"); | ||||
| $d->findclick_ok(xpath => '//a[contains(text(),"Create Peering Server")]'); | ||||
| $d->fill_element_ok(['id', 'name', 'mytestserver']); | ||||
| $d->fill_element_ok(['id', 'ip', '10.0.0.100']); | ||||
| $d->fill_element_ok(['id', 'host', 'sipwise.com']); | ||||
| $d->findclick_ok(id => 'save'); | ||||
| $d->findtext_ok('Peering server successfully created'); | ||||
| $d->find_element('//a[contains(text(),"Create Peering Server")]')->click(); | ||||
| $d->fill_element('name', id, 'mytestserver'); | ||||
| $d->fill_element('ip', id, '10.0.0.100'); | ||||
| $d->fill_element('host', id, 'sipwise.com'); | ||||
| $d->find_element('save', id)->click(); | ||||
| $d->find_text('Peering server successfully created'); | ||||
| 
 | ||||
| my $server_rules_uri = $d->get_location; | ||||
| my $server_rules_uri = $d->get_current_url(); | ||||
| 
 | ||||
| diag('Edit Preferences for "mytestserver".'); | ||||
| sleep 1; #make sure, we are on the right page | ||||
| $d->fill_element_ok([css => '#peering_servers_table_filter input', 'thisshouldnotexist']); | ||||
| $d->find_ok(css => '#peering_servers_table tr > td.dataTables_empty'); | ||||
| $d->fill_element_ok([css => '#peering_servers_table_filter input', 'mytestserver']); | ||||
| $edit_link = $d->find(xpath => '//table/tbody/tr/td[contains(text(), "mytestserver")]/../td//a[contains(text(),"Preferences")]'); | ||||
| $row = $d->find(xpath => '//table/tbody/tr/td[contains(text(), "mytestserver")]/..'); | ||||
| $d->fill_element('#peering_servers_table_filter input', css, 'thisshouldnotexist'); | ||||
| $d->find_element('#peering_servers_table tr > td.dataTables_empty', css); | ||||
| $d->fill_element('#peering_servers_table_filter input', css, 'mytestserver'); | ||||
| $edit_link = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestserver")]/../td//a[contains(text(),"Preferences")]'); | ||||
| $row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestserver")]/..'); | ||||
| ok($row); | ||||
| ok($edit_link); | ||||
| $d->move_to(element => $row); | ||||
| $edit_link->click; | ||||
| $edit_link->click(); | ||||
| 
 | ||||
| diag('Open the tab "Number Manipulations"'); | ||||
| $d->findclick_ok(link_text => "Number Manipulations"); | ||||
| $d->find_element("Number Manipulations", link_text)->click(); | ||||
| 
 | ||||
| diag("Click edit for the preference inbound_upn"); | ||||
| $row = $d->find(xpath => '//table/tbody/tr/td[normalize-space(text()) = "inbound_upn"]'); | ||||
| $row = $d->find_element('//table/tbody/tr/td[normalize-space(text()) = "inbound_upn"]'); | ||||
| ok($row); | ||||
| $edit_link = $d->find_child_element($row, '(./../td//a)[2]'); | ||||
| ok($edit_link); | ||||
| $d->move_to(element => $row); | ||||
| $edit_link->click; | ||||
| $edit_link->click(); | ||||
| 
 | ||||
| diag('Change to "P-Asserted-Identity'); | ||||
| $d->findclick_ok(xpath => '//div[contains(@class,"modal-body")]//select[@id="inbound_upn"]/option[@value="pai_user"]'); | ||||
| $d->findclick_ok(id => 'save'); | ||||
| $d->findtext_ok('Preference inbound_upn successfully updated'); | ||||
| $d->find_element('//div[contains(@class,"modal-body")]//select[@id="inbound_upn"]/option[@value="pai_user"]')->click(); | ||||
| $d->find_element('save', id)->click(); | ||||
| $d->find_text('Preference inbound_upn successfully updated'); | ||||
| 
 | ||||
| diag("Go back to Servers/Rules"); | ||||
| $d->navigate_ok($server_rules_uri); | ||||
| $d->get($server_rules_uri); | ||||
| 
 | ||||
| my $delete_link; | ||||
| diag('skip was here'); | ||||
| diag("Delete mytestserver"); | ||||
| sleep 1; #make sure, we are on the right page | ||||
| $d->fill_element_ok([css => '#peering_servers_table_filter input', 'thisshouldnotexist']); | ||||
| $d->find_ok(css => '#peering_servers_table tr > td.dataTables_empty'); | ||||
| $d->fill_element_ok([css => '#peering_servers_table_filter input', 'mytestserver']); | ||||
| $row = $d->find(xpath => '(//table/tbody/tr/td[contains(text(), "mytestserver")]/..)[1]'); | ||||
| $d->fill_element('#peering_servers_table_filter input', css, 'thisshouldnotexist'); | ||||
| $d->find_element('#peering_servers_table tr > td.dataTables_empty', css); | ||||
| $d->fill_element('#peering_servers_table_filter input', css, 'mytestserver'); | ||||
| $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "mytestserver")]/..)[1]'); | ||||
| ok($row); | ||||
| $delete_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Delete")]'); | ||||
| ok($delete_link); | ||||
| $d->move_to(element => $row); | ||||
| $delete_link->click; | ||||
| $d->findtext_ok("Are you sure?"); | ||||
| $d->findclick_ok(id => 'dataConfirmOK'); | ||||
| $d->findtext_ok("successfully deleted"); # delete does not work | ||||
| $delete_link->click(); | ||||
| $d->find_text("Are you sure?"); | ||||
| $d->find_element('dataConfirmOK', id)->click(); | ||||
| $d->find_text("successfully deleted"); # delete does not work | ||||
| 
 | ||||
| diag("Delete the previously created Peering Rule"); | ||||
| sleep 1; | ||||
| $row = $d->find(xpath => '//table[@id="PeeringRules_table"]/tbody/tr[1]'); | ||||
| $row = $d->find_element('//table[@id="PeeringRules_table"]/tbody/tr[1]'); | ||||
| ok($row); | ||||
| $delete_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Delete")]'); | ||||
| ok($delete_link); | ||||
| $d->move_to(element => $row); | ||||
| $delete_link->click; | ||||
| $d->findtext_ok("Are you sure?"); | ||||
| $d->findclick_ok(id => 'dataConfirmOK'); | ||||
| $delete_link->click(); | ||||
| $d->find_text("Are you sure?"); | ||||
| $d->find_element('dataConfirmOK', id)->click(); | ||||
| 
 | ||||
| diag('skip was here'); | ||||
| $d->findtext_ok("successfully deleted"); | ||||
| $d->find_text("successfully deleted"); | ||||
| 
 | ||||
| diag('Go back to "SIP Peering Groups".'); | ||||
| $d->navigate_ok($peerings_uri); | ||||
| $d->get($peerings_uri); | ||||
| 
 | ||||
| diag('Delete "testinggroup"'); | ||||
| $row = $d->find(xpath => '(//table/tbody/tr/td[contains(text(), "testinggroup")]/..)[1]'); | ||||
| $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "testinggroup")]/..)[1]'); | ||||
| ok($row); | ||||
| $delete_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Delete")]'); | ||||
| ok($delete_link); | ||||
| $d->move_to(element => $row); | ||||
| $delete_link->click; | ||||
| $d->findtext_ok("Are you sure?"); | ||||
| $d->findclick_ok(id => 'dataConfirmOK'); | ||||
| $delete_link->click(); | ||||
| $d->find_text("Are you sure?"); | ||||
| $d->find_element('dataConfirmOK', id)->click(); | ||||
| 
 | ||||
| diag('skip was here'); | ||||
| $d->findtext_ok("successfully deleted"); | ||||
| $d->find_text("successfully deleted"); | ||||
| 
 | ||||
| done_testing; | ||||
| # vim: filetype=perl | ||||
|  | ||||
| @ -1,72 +1,76 @@ | ||||
| use Sipwise::Base; | ||||
| use lib 't/lib'; | ||||
| use Test::More import => [qw(done_testing is ok diag)]; | ||||
| use Test::WebDriver::Sipwise qw(); | ||||
| use Selenium::Remote::Driver::Extensions qw(); | ||||
| 
 | ||||
| my $browsername = $ENV{BROWSER_NAME} || ""; | ||||
| #possible values: htmlunit, chrome, firefox (default) | ||||
| my $d = Test::WebDriver::Sipwise->new (browser_name => $browsername, | ||||
|     'proxy' => {'proxyType' => 'system'}); | ||||
| $d->set_window_size(1024,1280) if ($browsername ne "htmlunit"); | ||||
| diag("Init"); | ||||
| my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; | ||||
| $d->get_ok("$uri/logout"); #make sure we are logged out | ||||
| $d->get_ok("$uri/login"); | ||||
| my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome | ||||
| my $d = Selenium::Remote::Driver::Extensions->new ( | ||||
|     'browser_name' => $browsername, | ||||
|     'proxy' => {'proxyType' => 'system'} ); | ||||
| 
 | ||||
| diag("Loading login page (logout first)"); | ||||
| $d->set_window_size(1024,1280) if ($browsername ne "htmlunit"); | ||||
| $d->get("$uri/logout"); # make sure we are logged out | ||||
| $d->get("$uri/login"); | ||||
| $d->set_implicit_wait_timeout(10000); | ||||
| $d->default_finder('xpath'); | ||||
| 
 | ||||
| diag("Do Admin Login"); | ||||
| $d->findtext_ok('Admin Sign In'); | ||||
| $d->find(name => 'username')->send_keys('administrator'); | ||||
| $d->find(name => 'password')->send_keys('administrator'); | ||||
| $d->findclick_ok(name => 'submit'); | ||||
| $d->find_text("Admin Sign In"); | ||||
| is($d->get_title, ''); | ||||
| $d->find_element('username', name)->send_keys('administrator'); | ||||
| $d->find_element('password', name)->send_keys('administrator'); | ||||
| $d->find_element('submit', name)->click(); | ||||
| is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Dashboard"); | ||||
| 
 | ||||
| diag("Go to reseller list"); | ||||
| $d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Dashboard")]'); | ||||
| $d->findclick_ok(xpath => '//a[@class="btn" and contains(@href,"/reseller")]'); | ||||
| $d->find_element('//a[@class="btn" and contains(@href,"/reseller")]')->click(); | ||||
| 
 | ||||
| diag("Search nonexisting reseller"); | ||||
| my $searchfield = $d->find(css => '#Resellers_table_filter label input'); | ||||
| my $searchfield = $d->find_element('#Resellers_table_filter label input', css); | ||||
| ok($searchfield); | ||||
| $searchfield->send_keys('donotfindme'); | ||||
| 
 | ||||
| diag("Verify that nothing is shown"); | ||||
| my $elem = $d->find(css => '#Resellers_table td.dataTables_empty'); | ||||
| my $elem = $d->find_element('#Resellers_table td.dataTables_empty', css); | ||||
| ok($elem); | ||||
| is($elem->get_text,'No matching records found'); | ||||
| 
 | ||||
| diag('Search for "1" in resellers'); | ||||
| $searchfield->clear(); | ||||
| $searchfield->send_keys('active'); | ||||
| $d->find_ok(css => '#Resellers_table tr.sw_action_row'); | ||||
| is($d->find(xpath => '//table[@id="Resellers_table"]//tr[1]/td[1]')->get_text,'1'); | ||||
| $d->find_element('#Resellers_table tr.sw_action_row', css); | ||||
| is($d->find_element('//table[@id="Resellers_table"]//tr[1]/td[1]')->get_text(), '1'); | ||||
| 
 | ||||
| diag("Going to create a reseller"); | ||||
| $d->findclick_ok(link_text => 'Create Reseller'); | ||||
| $d->findclick_ok(id => 'save'); | ||||
| $d->findtext_ok("Contract field is required"); | ||||
| $d->findtext_ok("Name field is required"); | ||||
| $d->findclick_ok(id => 'mod_close'); | ||||
| $d->find_element('Create Reseller', link_text)->click(); | ||||
| $d->find_element('save', id)->click(); | ||||
| $d->find_text("Contract field is required"); | ||||
| $d->find_text("Name field is required"); | ||||
| $d->find_element('mod_close', id)->click(); | ||||
| 
 | ||||
| diag("Click Edit on the first reseller shown (first row)"); | ||||
| sleep 1; #prevent a StaleElementReferenceException | ||||
| my $row = $d->find(xpath => '//*[@id="Resellers_table"]/tbody/tr[1]'); | ||||
| my $row = $d->find_element('//*[@id="Resellers_table"]/tbody/tr[1]'); | ||||
| ok($row); | ||||
| $d->move_to(element => $row); | ||||
| my $btn = $d->find_child_element($row, './/a[contains(text(),"Edit")]'); | ||||
| ok($btn); | ||||
| $btn->click; | ||||
| #is($d->find(id => "name")->get_attribute("value"), "reseller 1"); | ||||
| $d->findclick_ok(id => 'mod_close'); | ||||
| $btn->click(); | ||||
| #is($d->find_element("name", id)->get_attribute("value"), "reseller 1"); | ||||
| $d->find_element('mod_close', id)->click(); | ||||
| 
 | ||||
| diag("Click Terminate on the first reseller shown"); | ||||
| sleep 1; #prevent a StaleElementReferenceException | ||||
| $row = $d->find(xpath => '//*[@id="Resellers_table"]/tbody/tr[1]'); | ||||
| $row = $d->find_element('//*[@id="Resellers_table"]/tbody/tr[1]'); | ||||
| ok($row); | ||||
| $d->move_to(element => $row); | ||||
| $btn = $d->find_child_element($row, './/a[contains(@class,"btn-secondary")]'); | ||||
| ok($btn); | ||||
| $btn->click; | ||||
| $d->findtext_ok("Are you sure?"); | ||||
| $d->findclick_ok(xpath => '//div[@id="dataConfirmModal"]//button[contains(text(),"Cancel")]'); | ||||
| $btn->click(); | ||||
| $d->find_text("Are you sure?"); | ||||
| $d->find_element('//div[@id="dataConfirmModal"]//button[contains(text(),"Cancel")]')->click(); | ||||
| 
 | ||||
| done_testing; | ||||
| # vim: filetype=perl | ||||
|  | ||||
					Loading…
					
					
				
		Reference in new issue