Make create_user test helper.

master
Manager Bot 3 years ago
parent 58e67d5968
commit 7d6428a71a
  1. 37
      Web/lib/Test/Mojo/MJB.pm

@ -104,27 +104,40 @@ sub stash_has {
return $t; return $t;
} }
#==
# Create a user account and login to it.
#
# settings accepts is_admin, when true promote the user
# to an admin account.
#==
sub create_user { sub create_user {
my ( $t, $settings ) = @_; my ( $t, %settings ) = @_;
# Enable open registration.
my $old = $t->app->config->{register}{enable_open};
$t->app->config->{register}{enable_open} = 1;
# Create an 8-character random string to use as user/name/pass.
my $user = join( '', map({ ('a'..'z','A'..'Z')[int rand 52] } ( 0 .. 8)) ); my $user = join( '', map({ ('a'..'z','A'..'Z')[int rand 52] } ( 0 .. 8)) );
$t->post_ok( '/register/open', form => { $t->post_ok( '/register/open', form => {
username => $user, name => $user,
email => "$user\@blogdb.com", email => "$user\@myjekyllblog.net",
password => $user, password => $user,
confirm => $user, password_confirm => $user,
}) })
->get_ok( '/') ->get_ok( '/')
->code_block( sub { ->code_block( sub {
is(shift->stash->{person}->username, $user, "Created test user $user"); my $self = shift;
}) is($self->stash->{person}->name, $user, "Created test user $user");
->code_block( sub { if ( exists $settings{is_admin} and $settings{is_admin} == 1 ) {
# Now we're just gonna add whatever settings from $settings. $self->stash->{person}->is_admin( 1 );
my $t = shift; $self->stash->{person}->update;
foreach my $key ( keys %{$settings || {}}) { is( $self->stash->{person}->is_admin, 1, "Promoted $user to admin" );
$t->stash->{person}->setting( $key, $settings->{$key});
} }
}); });
# Reset open registration to old value.
$t->app->config->{register}{enable_open} = $old;
return $t; return $t;
} }

Loading…
Cancel
Save