Showing 3 changed files with 58 additions and 19 deletions
+17 -16
lib/Gitprep.pm
... ...
@@ -111,22 +111,7 @@ sub startup {
111 111
     }
112 112
   );
113 113
   
114
-  # Helper
115
-  {
116
-    # API
117
-    $self->helper(gitprep_api => sub { Gitprep::API->new(shift) });
118
-    
119
-    # Finish rendering
120
-    $self->helper(finish_rendering => sub {
121
-      my $self = shift;
122
-      
123
-      $self->stash->{'mojo.routed'} = 1;
124
-      $self->rendered;
125
-      
126
-      return $self;
127
-    });
128
-  }
129
-  
114
+
130 115
   # Routes
131 116
   {
132 117
     my $r = $self->routes;
... ...
@@ -227,6 +212,22 @@ sub startup {
227 212
       }
228 213
     }
229 214
   }
215
+
216
+  # Helper
217
+  {
218
+    # API
219
+    $self->helper(gitprep_api => sub { Gitprep::API->new(shift) });
220
+    
221
+    # Finish rendering
222
+    $self->helper(finish_rendering => sub {
223
+      my $self = shift;
224
+      
225
+      $self->stash->{'mojo.routed'} = 1;
226
+      $self->rendered;
227
+      
228
+      return $self;
229
+    });
230
+  }
230 231
   
231 232
   # Reverse proxy support
232 233
   my $reverse_proxy_on = $self->config->{reverse_proxy}{on};
+2 -2
templates/auto/_admin/user/create.html.ep
... ...
@@ -12,11 +12,11 @@
12 12
     my $rule = [
13 13
       id => [
14 14
         ['not_blank' => 'User name is empty.'],
15
-        [{'regex' => qr/^[a-zA-Z0-9_]+$/} => 'User name contain invalid character.'],
15
+        [user_name => 'User name contain invalid character.'],
16 16
         [{'length' => {max => 20}} => 'User name is too long.']
17 17
       ],
18 18
       password => [
19
-        ['not_blank' => 'Input password.'],
19
+        ['not_blank' => 'Password is empty.'],
20 20
         ['ascii' => 'Password contain invalid character.'],
21 21
         [{'length' => {max => 20}} => 'Password is too long.']
22 22
       ],
+39 -1
xt/admin.t
... ...
@@ -103,6 +103,44 @@ note 'Login as admin user';
103 103
 
104 104
   note 'Create User page';
105 105
   {
106
-    $t->post_ok('/_admin/user/create')->content_like(qr/Create User/);
106
+    # Page access
107
+    $t->get_ok('/_admin/user/create')->content_like(qr/Create User/);
108
+    
109
+    # User name is empty
110
+    $t->post_ok('/_admin/user/create?op=create', form => {id => ''})
111
+      ->content_like(qr/User name is empty/);
112
+
113
+    # User name contain invalid character
114
+    $t->post_ok('/_admin/user/create?op=create', form => {id => '&'})
115
+      ->content_like(qr/User name contain invalid character/);
116
+
117
+    # User name is too long
118
+    $t->post_ok('/_admin/user/create?op=create', form => {id => 'a' x 21})
119
+      ->content_like(qr/User name is too long/);
120
+
121
+    # Password is empty
122
+    $t->post_ok('/_admin/user/create?op=create', form => {id => 'a', password => ''})
123
+      ->content_like(qr/Password is empty/);
124
+
125
+    # Password contain invalid character
126
+    $t->post_ok('/_admin/user/create?op=create', form => {id => 'a', password => "\t"})
127
+      ->content_like(qr/Password contain invalid character/);
128
+
129
+    # Password contain invalid character
130
+    $t->post_ok('/_admin/user/create?op=create', form => {id => 'a', password => 'a' x 21})
131
+      ->content_like(qr/Password is too long/);
132
+
133
+    # Password contain invalid character
134
+    $t->post_ok('/_admin/user/create?op=create', form => {id => 'a', password => 'a', password2 => 'b'})
135
+      ->content_like(qr/Two password/);
136
+    
137
+    # Create user
138
+    $t->post_ok('/_admin/user/create?op=create', form => {id => 'kimoto', password => 'a', password2 => 'a'})
139
+      ->content_like(qr/Success.*created/);
140
+    
141
+    # Admin Users page
142
+    $t->get_ok('/_admin/users')
143
+      ->content_like(qr/Admin Users/)
144
+      ->content_like(qr/kimoto/);
107 145
   }
108 146
 }