You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/t/controller_Reseller.t

49 lines
1.9 KiB

use strict;
use warnings;
use Test::More;
use JSON::Parse 'valid_json';
use JSON qw( from_json );
use Catalyst::Test 'NGCP::Panel';
use NGCP::Panel::Controller::Reseller;
my $response = request('/reseller');
ok( $response->is_success || $response->is_redirect , 'Request should succeed' );
#Testing /ajax
BEGIN { use_ok("Test::WWW::Mechanize::Catalyst" => "NGCP::Panel") }
my $admin = Test::WWW::Mechanize::Catalyst->new;
$admin->get_ok("http://localhost/reseller", "Check redirect");
#not yet tested: /reseller/ajax should give 403
$admin->content_contains("Sign In", "Should be on login page");
$admin->follow_link_ok( {text => 'Admin'}, "Go to admin Login");
$admin->submit_form(
fields => {
username => 'administrator',
password => 'administrator',
});
$admin->get_ok("http://localhost/reseller/ajax", "Should get ajax now");
$admin->content_contains('"aaData"');
$admin->content_contains('"iTotalDisplayRecords"');
$admin->content_contains('"iTotalRecords"');
$admin->content_contains('"sEcho"');
ok(valid_json($admin->content()), "Should be valid JSON"); #need JSON::Parse
$admin->get_ok("http://localhost/reseller/ajax?sEcho=1337&sSearch=a&iDisplayStart=0&iDisplayLength=2&iSortCol_0=0&sSortDir_0=asc", "Should get ajax now");
$admin->content_contains('"sEcho":"1337"');
my $returndata = from_json($admin->content());
if($returndata->{aaData}->[0]->[1] eq "reseller 1") { #using mock data
ok($returndata->{aaData}->[0]->[0] == 1, "check id field");
ok($returndata->{aaData}->[0]->[2] == 1, "check contract.id field");
ok($returndata->{aaData}->[0]->[3] eq "active", "check status field");
ok($returndata->{iTotalRecords} == 6, "iTotalRecords (all mock data) should be 6");
ok($returndata->{iTotalDisplayRecords} == 4, "iTotalDisplayRecords (filtered mock data) should be 4");
ok($returndata->{sEcho} eq "1337");
}
####
done_testing();