diff options
Diffstat (limited to 't/app')
-rw-r--r-- | t/app/controller/admin.t | 122 | ||||
-rw-r--r-- | t/app/controller/alert_new.t | 56 | ||||
-rw-r--r-- | t/app/controller/contact.t | 15 | ||||
-rw-r--r-- | t/app/controller/dashboard.t | 11 | ||||
-rw-r--r-- | t/app/controller/moderate.t | 4 | ||||
-rw-r--r-- | t/app/controller/questionnaire.t | 5 | ||||
-rw-r--r-- | t/app/controller/report_display.t | 12 | ||||
-rw-r--r-- | t/app/controller/report_interest_count.t | 5 | ||||
-rw-r--r-- | t/app/controller/report_new.t | 9 | ||||
-rw-r--r-- | t/app/controller/report_updates.t | 12 | ||||
-rw-r--r-- | t/app/controller/rss.t | 3 | ||||
-rw-r--r-- | t/app/controller/token.t | 4 |
12 files changed, 144 insertions, 114 deletions
diff --git a/t/app/controller/admin.t b/t/app/controller/admin.t index d7fcb30e6..51307f756 100644 --- a/t/app/controller/admin.t +++ b/t/app/controller/admin.t @@ -6,21 +6,16 @@ use FixMyStreet::TestMech; my $mech = FixMyStreet::TestMech->new; -my $user = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'test@example.com' } ); -ok $user, "created test user"; -$user->update({ name => 'Test User' }); +my $user = $mech->create_user_ok('test@example.com', name => 'Test User'); -my $user2 = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'test2@example.com', name => 'Test User 2' } ); -ok $user2, "created second test user"; +my $user2 = $mech->create_user_ok('test2@example.com', name => 'Test User 2'); +my $superuser = $mech->create_user_ok('superuser@example.com', name => 'Super User', is_superuser => 1); -my $user3 = - FixMyStreet::App->model('DB::User') - ->find( { email => 'test3@example.com', name => 'Test User 2' } ); +my $oxfordshire = $mech->create_body_ok(2237, 'Oxfordshire County Council', id => 2237); +my $oxfordshireuser = $mech->create_user_ok('counciluser@example.com', name => 'Council User', from_body => $oxfordshire); + +my $user3 = $mech->create_user_ok('test3@example.com', name => 'Test User 2'); if ( $user3 ) { $mech->delete_user( $user3 ); @@ -70,6 +65,8 @@ my $alert = FixMyStreet::App->model('DB::Alert')->find_or_create( }, ); +$mech->log_in_ok( $superuser->email ); + subtest 'check summary counts' => sub { my $problems = FixMyStreet::App->model('DB::Problem')->search( { state => { -in => [qw/confirmed fixed closed investigating planned/, 'in progress', 'fixed - user', 'fixed - council'] } } ); @@ -1131,6 +1128,7 @@ for my $test ( body => $haringey->id, phone => '', flagged => undef, + is_superuser => undef, }, changes => { name => 'Changed User', @@ -1146,6 +1144,7 @@ for my $test ( body => $haringey->id, phone => '', flagged => undef, + is_superuser => undef, }, changes => { email => 'changed@example.com', @@ -1161,6 +1160,7 @@ for my $test ( body => $haringey->id, phone => '', flagged => undef, + is_superuser => undef, }, changes => { body => $southend->id, @@ -1176,6 +1176,7 @@ for my $test ( body => $southend->id, phone => '', flagged => undef, + is_superuser => undef, }, changes => { flagged => 'on', @@ -1191,6 +1192,7 @@ for my $test ( body => $southend->id, phone => '', flagged => 'on', + is_superuser => undef, }, changes => { flagged => undef, @@ -1198,6 +1200,38 @@ for my $test ( log_count => 4, log_entries => [qw/edit edit edit edit/], }, + { + desc => 'edit user add is_superuser', + fields => { + name => 'Changed User', + email => 'changed@example.com', + body => $southend->id, + phone => '', + flagged => undef, + is_superuser => undef, + }, + changes => { + is_superuser => 'on', + }, + log_count => 5, + log_entries => [qw/edit edit edit edit edit/], + }, + { + desc => 'edit user remove is_superuser', + fields => { + name => 'Changed User', + email => 'changed@example.com', + body => $southend->id, + phone => '', + flagged => undef, + is_superuser => 'on', + }, + changes => { + is_superuser => undef, + }, + log_count => 5, + log_entries => [qw/edit edit edit edit edit/], + }, ) { subtest $test->{desc} => sub { $mech->get_ok( '/admin/user_edit/' . $user->id ); @@ -1237,9 +1271,73 @@ subtest "Check admin_base_url" => sub { 'get_admin_url OK'); }; +# Finished with the superuser tests +$mech->log_out_ok; + +subtest "Users without from_body can't access admin" => sub { + $user->from_body( undef ); + $user->update; + + $mech->log_in_ok( $user->email ); + + $mech->get_ok('/admin'); + is $mech->uri->path, '/my', "redirected to correct page"; + is $mech->res->code, 200, "got 200 for final destination"; + is $mech->res->previous->code, 302, "got 302 for redirect"; + + $mech->log_out_ok; +}; + +subtest "Users with from_body can access their own council's admin" => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'oxfordshire' ], + }, sub { + $mech->log_in_ok( $oxfordshireuser->email ); + + $mech->get_ok('/admin'); + $mech->content_contains( 'FixMyStreet admin:' ); + + $mech->log_out_ok; + }; +}; + +subtest "Users with from_body can't access another council's admin" => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'bristol' ], + }, sub { + $mech->log_in_ok( $oxfordshireuser->email ); + + $mech->get_ok('/admin'); + is $mech->uri->path, '/my', "redirected to correct page"; + is $mech->res->code, 200, "got 200 for final destination"; + is $mech->res->previous->code, 302, "got 302 for redirect"; + + $mech->log_out_ok; + }; +}; + +subtest "Users with from_body can't access fixmystreet.com admin" => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'fixmystreet' ], + }, sub { + $mech->log_in_ok( $oxfordshireuser->email ); + + $mech->get_ok('/admin'); + is $mech->uri->path, '/my', "redirected to correct page"; + is $mech->res->code, 200, "got 200 for final destination"; + is $mech->res->previous->code, 302, "got 302 for redirect"; + + $mech->log_out_ok; + }; +}; + + + $mech->delete_user( $user ); $mech->delete_user( $user2 ); $mech->delete_user( $user3 ); +$mech->delete_user( $superuser ); +$mech->delete_user( $oxfordshireuser ); $mech->delete_user( 'test4@example.com' ); done_testing(); diff --git a/t/app/controller/alert_new.t b/t/app/controller/alert_new.t index 06932f70a..2c20daf9d 100644 --- a/t/app/controller/alert_new.t +++ b/t/app/controller/alert_new.t @@ -156,9 +156,7 @@ foreach my $test ( my $type = 'area_problems'; - my $user = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'test-new@example.com' } ); + my $user = $mech->create_user_ok('test-new@example.com'); my $alert = FixMyStreet::App->model('DB::Alert')->find( { @@ -204,9 +202,7 @@ foreach my $test ( subtest $test->{desc} => sub { my $type = $test->{type} . '_problems'; - my $user = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => $test->{email} } ); + my $user = $mech->create_user_ok($test->{email}); $mech->log_in_ok( $test->{email} ); $mech->clear_emails_ok; @@ -335,13 +331,9 @@ subtest "Test normal alert signups and that alerts are sent" => sub { $mech->delete_user( 'reporter@example.com' ); $mech->delete_user( 'alerts@example.com' ); - my $user1 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'reporter@example.com', name => 'Reporter User' } ); - ok $user1, "created test user"; + my $user1 = $mech->create_user_ok('reporter@example.com', name => 'Reporter User' ); - my $user2 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'alerts@example.com', name => 'Alert User' } ); - ok $user2, "created test user"; + my $user2 = $mech->create_user_ok('alerts@example.com', name => 'Alert User' ); for my $alert ( { @@ -489,13 +481,9 @@ subtest "Test signature template is used from cobrand" => sub { $mech->delete_user( 'reporter@example.com' ); $mech->delete_user( 'alerts@example.com' ); - my $user1 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'reporter@example.com', name => 'Reporter User' } ); - ok $user1, "created test user"; + my $user1 = $mech->create_user_ok('reporter@example.com', name => 'Reporter User' ); - my $user2 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'alerts@example.com', name => 'Alert User' } ); - ok $user2, "created test user"; + my $user2 = $mech->create_user_ok('alerts@example.com', name => 'Alert User' ); my $dt = DateTime->now()->add( days => 2); @@ -638,13 +626,9 @@ for my $test ( $mech->delete_user( 'reporter@example.com' ); $mech->delete_user( 'alerts@example.com' ); - my $user1 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'reporter@example.com', name => 'Reporter User' } ); - ok $user1, "created test user"; + my $user1 = $mech->create_user_ok('reporter@example.com', name => 'Reporter User'); - my $user2 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'alerts@example.com', name => 'Alert User' } ); - ok $user2, "created test user"; + my $user2 = $mech->create_user_ok('alerts@example.com', name => 'Alert User'); my $dt = DateTime->now->add( minutes => -30 ); my $r_dt = $dt->clone->add( minutes => 20 ); @@ -711,17 +695,11 @@ subtest 'check new updates alerts for non public reports only go to report owner $mech->delete_user( 'reporter@example.com' ); $mech->delete_user( 'alerts@example.com' ); - my $user1 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'reporter@example.com', name => 'Reporter User' } ); - ok $user1, "created test user"; + my $user1 = $mech->create_user_ok('reporter@example.com', name => 'Reporter User'); - my $user2 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'alerts@example.com', name => 'Alert User' } ); - ok $user2, "created test user"; + my $user2 = $mech->create_user_ok('alerts@example.com', name => 'Alert User'); - my $user3 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'updates@example.com', name => 'Update User' } ); - ok $user3, "created test user"; + my $user3 = $mech->create_user_ok('updates@example.com', name => 'Update User'); my $dt = DateTime->now->add( minutes => -30 ); my $r_dt = $dt->clone->add( minutes => 20 ); @@ -812,17 +790,11 @@ subtest 'check setting inlude dates in new updates cobrand option' => sub { $mech->delete_user( 'reporter@example.com' ); $mech->delete_user( 'alerts@example.com' ); - my $user1 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'reporter@example.com', name => 'Reporter User' } ); - ok $user1, "created test user"; + my $user1 = $mech->create_user_ok('reporter@example.com', name => 'Reporter User'); - my $user2 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'alerts@example.com', name => 'Alert User' } ); - ok $user2, "created test user"; + my $user2 = $mech->create_user_ok('alerts@example.com', name => 'Alert User'); - my $user3 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'updates@example.com', name => 'Update User' } ); - ok $user3, "created test user"; + my $user3 = $mech->create_user_ok('updates@example.com', name => 'Update User'); my $dt = DateTime->now->add( minutes => -30 ); my $r_dt = $dt->clone->add( minutes => 20 ); diff --git a/t/app/controller/contact.t b/t/app/controller/contact.t index 4ac69a9f8..1b0f09a85 100644 --- a/t/app/controller/contact.t +++ b/t/app/controller/contact.t @@ -52,12 +52,7 @@ for my $test ( ) { subtest 'check reporting a problem displays correctly' => sub { - my $user = FixMyStreet::App->model('DB::User')->find_or_create( - { - name => $test->{name}, - email => $test->{email} - } - ); + my $user = $mech->create_user_ok($test->{email}, name => $test->{name}); my $problem = FixMyStreet::App->model('DB::Problem')->create( { @@ -80,12 +75,8 @@ for my $test ( if ( $test->{update} ) { my $update_info = $test->{update}; - my $update_user = FixMyStreet::App->model('DB::User')->find_or_create( - { - name => $update_info->{name}, - email => $update_info->{email} - } - ); + my $update_user = $mech->create_user_ok($update_info->{email}, + name => $update_info->{name}); $update = FixMyStreet::App->model('DB::Comment')->create( { diff --git a/t/app/controller/dashboard.t b/t/app/controller/dashboard.t index 3829873e5..5ea5cb9f5 100644 --- a/t/app/controller/dashboard.t +++ b/t/app/controller/dashboard.t @@ -16,14 +16,9 @@ my $test_ward = 20723; my $body = $mech->create_body_ok($test_council, 'City of Edinburgh Council'); $mech->delete_user( $test_user ); -my $user = FixMyStreet::App->model('DB::User')->create( { - email => $test_user, - password => $test_pass, -} ); - -my $p_user = FixMyStreet::App->model('DB::User')->find_or_create( { - email => 'p_user@example.com' -} ); +my $user = $mech->create_user_ok($test_user, password => $test_pass); + +my $p_user = $mech->create_user_ok('p_user@example.com'); # Dashboard tests assume we are not too early in year, to allow reporting # within same year, as a convenience. diff --git a/t/app/controller/moderate.t b/t/app/controller/moderate.t index 38216c708..14c751115 100644 --- a/t/app/controller/moderate.t +++ b/t/app/controller/moderate.t @@ -15,9 +15,7 @@ my $body = $mech->create_body_ok( $BROMLEY_ID, 'Bromley Council' ); my $dt = DateTime->now; -my $user = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'test-moderation@example.com', name => 'Test User' } ); +my $user = $mech->create_user_ok('test-moderation@example.com', name => 'Test User'); $user->user_body_permissions->delete_all; $user->discard_changes; diff --git a/t/app/controller/questionnaire.t b/t/app/controller/questionnaire.t index 7bc6545db..7a46e48bd 100644 --- a/t/app/controller/questionnaire.t +++ b/t/app/controller/questionnaire.t @@ -17,10 +17,7 @@ $mech->clear_emails_ok; # create a test user and report $mech->delete_user('test@example.com'); -my $user = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'test@example.com', name => 'Test User' } ); -ok $user, "created test user"; +my $user = $mech->create_user_ok('test@example.com', name => 'Test User'); my $dt = DateTime->now()->subtract( weeks => 5 ); my $report_time = $dt->ymd . ' ' . $dt->hms; diff --git a/t/app/controller/report_display.t b/t/app/controller/report_display.t index 265760d86..fb532ddc4 100644 --- a/t/app/controller/report_display.t +++ b/t/app/controller/report_display.t @@ -12,15 +12,9 @@ my $mech = FixMyStreet::TestMech->new; # create a test user and report $mech->delete_user('test@example.com'); -my $user = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'test@example.com', name => 'Test User' } ); -ok $user, "created test user"; - -my $user2 = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'test2@example.com', name => 'Other User' } ); -ok $user2, "created test user"; +my $user = $mech->create_user_ok('test@example.com', name => 'Test User'); + +my $user2 = $mech->create_user_ok('test2@example.com', name => 'Other User'); my $dt = DateTime->new( year => 2011, diff --git a/t/app/controller/report_interest_count.t b/t/app/controller/report_interest_count.t index 4e86789ba..3cb80ea5f 100644 --- a/t/app/controller/report_interest_count.t +++ b/t/app/controller/report_interest_count.t @@ -22,10 +22,7 @@ my $mech = FixMyStreet::TestMech->new; # create a test user and report $mech->delete_user('test@example.com'); -my $user = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'test@example.com', name => 'Test User' } ); -ok $user, "created test user"; +my $user = $mech->create_user_ok('test@example.com', name => 'Test User'); my $dt = DateTime->new( year => 2011, diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t index 6ea4c9523..2aebfa00b 100644 --- a/t/app/controller/report_new.t +++ b/t/app/controller/report_new.t @@ -654,8 +654,7 @@ subtest "test password errors for a user who is signing in as they report" => su # check that the user does not exist my $test_email = 'test-2@example.com'; - my $user = FixMyStreet::App->model('DB::User')->find_or_create( { email => $test_email } ); - ok $user, "test user does exist"; + my $user = $mech->create_user_ok($test_email); # setup the user. ok $user->update( { @@ -707,8 +706,7 @@ subtest "test report creation for a user who is signing in as they report" => su # check that the user does not exist my $test_email = 'test-2@example.com'; - my $user = FixMyStreet::App->model('DB::User')->find_or_create( { email => $test_email } ); - ok $user, "test user does exist"; + my $user = $mech->create_user_ok($test_email); # setup the user. ok $user->update( { @@ -909,8 +907,7 @@ subtest "test report creation for a category that is non public" => sub { # check that the user does not exist my $test_email = 'test-2@example.com'; - my $user = FixMyStreet::App->model('DB::User')->find_or_create( { email => $test_email } ); - ok $user, "test user does exist"; + my $user = $mech->create_user_ok($test_email); $contact1->update( { non_public => 1 } ); diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t index 2a3c7c0b3..e077a07c9 100644 --- a/t/app/controller/report_updates.t +++ b/t/app/controller/report_updates.t @@ -13,15 +13,9 @@ my $mech = FixMyStreet::TestMech->new; $mech->delete_user('commenter@example.com'); $mech->delete_user('test@example.com'); -my $user = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'test@example.com', name => 'Test User' } ); -ok $user, "created test user"; - -my $user2 = - FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'commenter@example.com', name => 'Commenter' } ); -ok $user2, "created comment user"; +my $user = $mech->create_user_ok('test@example.com', name => 'Test User'); + +my $user2 = $mech->create_user_ok('commenter@example.com', name => 'Commenter'); my $body = $mech->create_body_ok(2504, 'Westminster City Council'); diff --git a/t/app/controller/rss.t b/t/app/controller/rss.t index 3e820cff3..8b39219fa 100644 --- a/t/app/controller/rss.t +++ b/t/app/controller/rss.t @@ -13,8 +13,7 @@ my $dt = DateTime->new( day => 10 ); -my $user1 = FixMyStreet::App->model('DB::User') - ->find_or_create( { email => 'reporter-rss@example.com', name => 'Reporter User' } ); +my $user1 = $mech->create_user_ok('reporter-rss@example.com', name => 'Reporter User'); my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser; diff --git a/t/app/controller/token.t b/t/app/controller/token.t index 9ca8b905d..ac88f4f7a 100644 --- a/t/app/controller/token.t +++ b/t/app/controller/token.t @@ -6,10 +6,8 @@ use utf8; use FixMyStreet::TestMech; use FixMyStreet::App; -my $user = FixMyStreet::App->model('DB::User')->find_or_create({ - name => 'Bob', email => 'bob@example.com', - }); my $mech = FixMyStreet::TestMech->new; +my $user = $mech->create_user_ok('bob@example.com', name => 'Bob'); subtest 'Zurich special case for C::Tokens->problem_confirm' => sub { FixMyStreet::override_config { |