|
|
|
|
@ -104,28 +104,41 @@ sub stash_has { |
|
|
|
|
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 { |
|
|
|
|
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)) ); |
|
|
|
|
$t->post_ok( '/register/open', form => { |
|
|
|
|
username => $user, |
|
|
|
|
email => "$user\@blogdb.com", |
|
|
|
|
name => $user, |
|
|
|
|
email => "$user\@myjekyllblog.net", |
|
|
|
|
password => $user, |
|
|
|
|
confirm => $user, |
|
|
|
|
password_confirm => $user, |
|
|
|
|
}) |
|
|
|
|
->get_ok( '/') |
|
|
|
|
->code_block( sub { |
|
|
|
|
is(shift->stash->{person}->username, $user, "Created test user $user"); |
|
|
|
|
}) |
|
|
|
|
->code_block( sub { |
|
|
|
|
# Now we're just gonna add whatever settings from $settings. |
|
|
|
|
my $t = shift; |
|
|
|
|
foreach my $key ( keys %{$settings || {}}) { |
|
|
|
|
$t->stash->{person}->setting( $key, $settings->{$key}); |
|
|
|
|
my $self = shift; |
|
|
|
|
is($self->stash->{person}->name, $user, "Created test user $user"); |
|
|
|
|
if ( exists $settings{is_admin} and $settings{is_admin} == 1 ) { |
|
|
|
|
$self->stash->{person}->is_admin( 1 ); |
|
|
|
|
$self->stash->{person}->update; |
|
|
|
|
is( $self->stash->{person}->is_admin, 1, "Promoted $user to admin" ); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
# Reset open registration to old value. |
|
|
|
|
$t->app->config->{register}{enable_open} = $old; |
|
|
|
|
|
|
|
|
|
return $t; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|