Showing 3 changed files with 46 additions and 2 deletions
+2
lib/Gitprep/API.pm
... ...
@@ -20,6 +20,8 @@ sub encrypt_password {
20 20
 sub check_password {
21 21
   my ($self, $password, $salt, $password_encrypted) = @_;
22 22
   
23
+  return unless defined $password && $salt && $password_encrypted;
24
+  
23 25
   return md5_hex(md5_hex "$salt$password") eq $password_encrypted;
24 26
 }
25 27
 
+2 -1
templates/auto/_login.html.ep
... ...
@@ -13,7 +13,8 @@
13 13
   
14 14
   # Login
15 15
   if ($op eq 'login') {
16
-    sleep 3;
16
+  
17
+    sleep 3 unless $ENV{GITPREP_TEST};
17 18
     
18 19
     # Validation
19 20
     my $params = $api->params;
+42 -1
xt/admin.t
... ...
@@ -20,7 +20,7 @@ my $rep_home = $ENV{GITPREP_REP_HOME} = "$FindBin::Bin/admin";
20 20
 use Gitprep;
21 21
 
22 22
 
23
-note '_start page';
23
+note 'Start page';
24 24
 {
25 25
   unlink $db_file;
26 26
 
... ...
@@ -63,5 +63,46 @@ note '_start page';
63 63
   $t->post_ok('/_start?op=create', form => {password => 'a', password2 => 'a'})
64 64
     ->content_like(qr/Admin user already exists/);
65 65
   ;
66
+}
67
+
68
+note 'Login as admin user';
69
+{
70
+  unlink $db_file;
71
+
72
+  my $app = Gitprep->new;
73
+  my $t = Test::Mojo->new($app);
74
+  $t->ua->max_redirects(3);
75
+
76
+  # Create admin user
77
+  $t->post_ok('/_start?op=create', form => {password => 'a', password2 => 'a'})
78
+    ->content_like(qr/Login Page/);
79
+  ;
80
+  
81
+  # Page access
82
+  $t->get_ok('/_login')->content_like(qr/Login Page/);
83
+  
84
+  # Login fail
85
+  $t->post_ok('/_login?op=login', form => {id => 'admin', password => 'b'})
86
+    ->content_like(qr/User name or password is wrong/)
87
+  ;
88
+
89
+  # Login success
90
+  $t->post_ok('/_login?op=login', form => {id => 'admin', password => 'a'})
91
+    ->content_like(qr/Admin/)
92
+  ;
93
+  
94
+  note 'Admin page';
95
+  {
96
+    $t->post_ok('/_admin')->content_like(qr/Admin/);
97
+  }
98
+  
99
+  note 'Admin User page';
100
+  {
101
+    $t->post_ok('/_admin/users')->content_like(qr/Admin Users/);
102
+  }
66 103
 
104
+  note 'Create User page';
105
+  {
106
+    $t->post_ok('/_admin/user/create')->content_like(qr/Create User/);
107
+  }
67 108
 }