#!/usr/bin/perl
use Test::WWW::Mechanize::CGIApp;
use strict;
use warnings;
use Data::Printer;
use DateTime::Format::MySQL;
#use Test::More tests => 28;
use Test::More 'no_plan';
=begin # tests:
=cut
BEGIN {
require 't/test-lib.pl';
# 1st test MySQL supports InnoDB tables:
die 'no innodb support' unless mysql_supports_innodb();
}
my $test_username = 'admin_fname.admin_lname';
my $test_password = 'adm1n';
my $mech = get_mech();
my $dbix = get_dbix();
# login/logout tests handled by test-lib.pl
=begin
{ # test redirect_after_login (permitted destination url):
my $permitted_url = '/search/notification/1';
$mech->get_ok($permitted_url);
# not logged in yet but check destination set correctly:
$mech->form_name('login_form');
like( $mech->field('destination'), qr{$permitted_url},
'OK: intended destination detected'); # print_and_exit();
# login:
$mech->submit_form(
fields => {
authen_username => $test_username,
authen_password => $test_password,
}
); # print_and_exit();
# print $mech->content; exit;
# find urls containing request id:
my @links = $mech->find_all_links( url_regex => qr{\w+/=/1} ); # eg screen/=/1
# warn Dumper $_->url for @links; exit;
$mech->links_ok( \@links, 'OK: nav links checked' ); # print_and_exit();
}
do_logout();
{ # test redirect_after_login (disallowed destination url):
my $disallowed_redirect = '/report/update_report/1?diagnosis_id=1'; # don't need rest of url'
$mech->get_ok($disallowed_redirect); # print_and_exit();
$mech->form_name('login_form');
is( $mech->field('destination'), '', 'OK: disallowed destination url'); # print_and_exit();
# login:
$mech->submit_form(
fields => {
authen_username => $test_username,
authen_password => $test_password,
}
); # print_and_exit();
# check no rediect:
$mech->has_tag_like(
h2 => qr/Search for record\(s\)/,
'OK: search page loaded, no redirect'
); # print_and_exit();
}
do_logout();
=cut
{ # test new registration email link:
# epoch value of admin last_login:
$dbix->select('users', 'last_login', { username => 'admin' })->into(my $date); # p $date;
my $epoch = DateTime::Format::MySQL->parse_datetime($date)->epoch / 100; # p $epoch;
my $url = '/?uid=1&first_login='.$epoch
. '&authen_username='.$test_username
. '&authen_password='.$test_password; # p $url;
$mech->get_ok($url); # print_and_exit();
$mech->has_tag_like(
h2 => qr/Search for record\(s\)/,
'OK: logged in OK'
); # print_and_exit();
}