From 7d6428a71ac115aed4db9840f3cee96563f536c1 Mon Sep 17 00:00:00 2001 From: Manager Bot Date: Sun, 27 Nov 2022 08:31:04 +0000 Subject: [PATCH] Make create_user test helper. --- Web/lib/Test/Mojo/MJB.pm | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/Web/lib/Test/Mojo/MJB.pm b/Web/lib/Test/Mojo/MJB.pm index 8344177..8e27009 100644 --- a/Web/lib/Test/Mojo/MJB.pm +++ b/Web/lib/Test/Mojo/MJB.pm @@ -104,27 +104,40 @@ 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", - password => $user, - confirm => $user, + name => $user, + email => "$user\@myjekyllblog.net", + password => $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; }