aboutsummaryrefslogtreecommitdiffstats
path: root/t/app
diff options
context:
space:
mode:
Diffstat (limited to 't/app')
-rw-r--r--t/app/controller/admin.t492
-rw-r--r--t/app/controller/admin_permissions.t8
2 files changed, 260 insertions, 240 deletions
diff --git a/t/app/controller/admin.t b/t/app/controller/admin.t
index df4a72c4b..94a8d28f2 100644
--- a/t/app/controller/admin.t
+++ b/t/app/controller/admin.t
@@ -1,7 +1,9 @@
use strict;
use warnings;
use Test::More;
+use LWP::Protocol::PSGI;
+use t::Mock::MapIt;
use FixMyStreet::TestMech;
my $mech = FixMyStreet::TestMech->new;
@@ -1145,258 +1147,270 @@ $user->update;
my $southend = $mech->create_body_ok(2607, 'Southend-on-Sea Borough Council');
-for my $test (
- {
- desc => 'edit user name',
- fields => {
- name => 'Test User',
- email => 'test@example.com',
- body => $haringey->id,
- phone => '',
- flagged => undef,
- is_superuser => undef,
- "permissions[moderate]" => undef,
- "permissions[planned_reports]" => undef,
- "permissions[report_edit]" => undef,
- "permissions[report_edit_category]" => undef,
- "permissions[report_edit_priority]" => undef,
- "permissions[report_inspect]" => undef,
- "permissions[report_instruct]" => undef,
- "permissions[contribute_as_another_user]" => undef,
- "permissions[contribute_as_body]" => undef,
- "permissions[user_edit]" => undef,
- "permissions[user_manage_permissions]" => undef,
- "permissions[user_assign_body]" => undef,
- "permissions[user_assign_areas]" => undef,
- },
- changes => {
- name => 'Changed User',
- },
- log_count => 1,
- log_entries => [qw/edit/],
- },
- {
- desc => 'edit user email',
- fields => {
- name => 'Changed User',
- email => 'test@example.com',
- body => $haringey->id,
- phone => '',
- flagged => undef,
- is_superuser => undef,
- "permissions[moderate]" => undef,
- "permissions[planned_reports]" => undef,
- "permissions[report_edit]" => undef,
- "permissions[report_edit_category]" => undef,
- "permissions[report_edit_priority]" => undef,
- "permissions[report_inspect]" => undef,
- "permissions[report_instruct]" => undef,
- "permissions[contribute_as_another_user]" => undef,
- "permissions[contribute_as_body]" => undef,
- "permissions[user_edit]" => undef,
- "permissions[user_manage_permissions]" => undef,
- "permissions[user_assign_body]" => undef,
- "permissions[user_assign_areas]" => undef,
- },
- changes => {
- email => 'changed@example.com',
- },
- log_count => 2,
- log_entries => [qw/edit edit/],
- },
- {
- desc => 'edit user body',
- fields => {
- name => 'Changed User',
- email => 'changed@example.com',
- body => $haringey->id,
- phone => '',
- flagged => undef,
- is_superuser => undef,
- "permissions[moderate]" => undef,
- "permissions[planned_reports]" => undef,
- "permissions[report_edit]" => undef,
- "permissions[report_edit_category]" => undef,
- "permissions[report_edit_priority]" => undef,
- "permissions[report_inspect]" => undef,
- "permissions[report_instruct]" => undef,
- "permissions[contribute_as_another_user]" => undef,
- "permissions[contribute_as_body]" => undef,
- "permissions[user_edit]" => undef,
- "permissions[user_manage_permissions]" => undef,
- "permissions[user_assign_body]" => undef,
- "permissions[user_assign_areas]" => undef,
- },
- changes => {
- body => $southend->id,
- },
- log_count => 3,
- log_entries => [qw/edit edit edit/],
- },
- {
- desc => 'edit user flagged',
- fields => {
- name => 'Changed User',
- email => 'changed@example.com',
- body => $southend->id,
- phone => '',
- flagged => undef,
- is_superuser => undef,
- "permissions[moderate]" => undef,
- "permissions[planned_reports]" => undef,
- "permissions[report_edit]" => undef,
- "permissions[report_edit_category]" => undef,
- "permissions[report_edit_priority]" => undef,
- "permissions[report_inspect]" => undef,
- "permissions[report_instruct]" => undef,
- "permissions[contribute_as_another_user]" => undef,
- "permissions[contribute_as_body]" => undef,
- "permissions[user_edit]" => undef,
- "permissions[user_manage_permissions]" => undef,
- "permissions[user_assign_body]" => undef,
- "permissions[user_assign_areas]" => undef,
- },
- changes => {
- flagged => 'on',
- },
- log_count => 4,
- log_entries => [qw/edit edit edit edit/],
- },
- {
- desc => 'edit user remove flagged',
- fields => {
- name => 'Changed User',
- email => 'changed@example.com',
- body => $southend->id,
- phone => '',
- flagged => 'on',
- is_superuser => undef,
- "permissions[moderate]" => undef,
- "permissions[planned_reports]" => undef,
- "permissions[report_edit]" => undef,
- "permissions[report_edit_category]" => undef,
- "permissions[report_edit_priority]" => undef,
- "permissions[report_inspect]" => undef,
- "permissions[report_instruct]" => undef,
- "permissions[contribute_as_another_user]" => undef,
- "permissions[contribute_as_body]" => undef,
- "permissions[user_edit]" => undef,
- "permissions[user_manage_permissions]" => undef,
- "permissions[user_assign_body]" => undef,
- "permissions[user_assign_areas]" => undef,
+FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.uk/',
+}, sub {
+ LWP::Protocol::PSGI->register(t::Mock::MapIt->run_if_script, host => 'mapit.uk');
+ for my $test (
+ {
+ desc => 'edit user name',
+ fields => {
+ name => 'Test User',
+ email => 'test@example.com',
+ body => $haringey->id,
+ phone => '',
+ flagged => undef,
+ is_superuser => undef,
+ area_id => '',
+ "permissions[moderate]" => undef,
+ "permissions[planned_reports]" => undef,
+ "permissions[report_edit]" => undef,
+ "permissions[report_edit_category]" => undef,
+ "permissions[report_edit_priority]" => undef,
+ "permissions[report_inspect]" => undef,
+ "permissions[report_instruct]" => undef,
+ "permissions[contribute_as_another_user]" => undef,
+ "permissions[contribute_as_body]" => undef,
+ "permissions[user_edit]" => undef,
+ "permissions[user_manage_permissions]" => undef,
+ "permissions[user_assign_body]" => undef,
+ "permissions[user_assign_areas]" => undef,
+ },
+ changes => {
+ name => 'Changed User',
+ },
+ log_count => 1,
+ log_entries => [qw/edit/],
},
- changes => {
- flagged => undef,
+ {
+ desc => 'edit user email',
+ fields => {
+ name => 'Changed User',
+ email => 'test@example.com',
+ body => $haringey->id,
+ phone => '',
+ flagged => undef,
+ is_superuser => undef,
+ area_id => '',
+ "permissions[moderate]" => undef,
+ "permissions[planned_reports]" => undef,
+ "permissions[report_edit]" => undef,
+ "permissions[report_edit_category]" => undef,
+ "permissions[report_edit_priority]" => undef,
+ "permissions[report_inspect]" => undef,
+ "permissions[report_instruct]" => undef,
+ "permissions[contribute_as_another_user]" => undef,
+ "permissions[contribute_as_body]" => undef,
+ "permissions[user_edit]" => undef,
+ "permissions[user_manage_permissions]" => undef,
+ "permissions[user_assign_body]" => undef,
+ "permissions[user_assign_areas]" => undef,
+ },
+ changes => {
+ email => 'changed@example.com',
+ },
+ log_count => 2,
+ log_entries => [qw/edit edit/],
},
- 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,
- "permissions[moderate]" => undef,
- "permissions[planned_reports]" => undef,
- "permissions[report_edit]" => undef,
- "permissions[report_edit_category]" => undef,
- "permissions[report_edit_priority]" => undef,
- "permissions[report_inspect]" => undef,
- "permissions[report_instruct]" => undef,
- "permissions[contribute_as_another_user]" => undef,
- "permissions[contribute_as_body]" => undef,
- "permissions[user_edit]" => undef,
- "permissions[user_manage_permissions]" => undef,
- "permissions[user_assign_body]" => undef,
- "permissions[user_assign_areas]" => undef,
+ {
+ desc => 'edit user body',
+ fields => {
+ name => 'Changed User',
+ email => 'changed@example.com',
+ body => $haringey->id,
+ phone => '',
+ flagged => undef,
+ is_superuser => undef,
+ area_id => '',
+ "permissions[moderate]" => undef,
+ "permissions[planned_reports]" => undef,
+ "permissions[report_edit]" => undef,
+ "permissions[report_edit_category]" => undef,
+ "permissions[report_edit_priority]" => undef,
+ "permissions[report_inspect]" => undef,
+ "permissions[report_instruct]" => undef,
+ "permissions[contribute_as_another_user]" => undef,
+ "permissions[contribute_as_body]" => undef,
+ "permissions[user_edit]" => undef,
+ "permissions[user_manage_permissions]" => undef,
+ "permissions[user_assign_body]" => undef,
+ "permissions[user_assign_areas]" => undef,
+ },
+ changes => {
+ body => $southend->id,
+ },
+ log_count => 3,
+ log_entries => [qw/edit edit edit/],
},
- changes => {
- is_superuser => 'on',
+ {
+ desc => 'edit user flagged',
+ fields => {
+ name => 'Changed User',
+ email => 'changed@example.com',
+ body => $southend->id,
+ phone => '',
+ flagged => undef,
+ is_superuser => undef,
+ area_id => '',
+ "permissions[moderate]" => undef,
+ "permissions[planned_reports]" => undef,
+ "permissions[report_edit]" => undef,
+ "permissions[report_edit_category]" => undef,
+ "permissions[report_edit_priority]" => undef,
+ "permissions[report_inspect]" => undef,
+ "permissions[report_instruct]" => undef,
+ "permissions[contribute_as_another_user]" => undef,
+ "permissions[contribute_as_body]" => undef,
+ "permissions[user_edit]" => undef,
+ "permissions[user_manage_permissions]" => undef,
+ "permissions[user_assign_body]" => undef,
+ "permissions[user_assign_areas]" => undef,
+ },
+ changes => {
+ flagged => 'on',
+ },
+ log_count => 4,
+ log_entries => [qw/edit edit edit edit/],
},
- removed => [
- "permissions[moderate]",
- "permissions[planned_reports]",
- "permissions[report_edit]",
- "permissions[report_edit_category]",
- "permissions[report_edit_priority]",
- "permissions[report_inspect]",
- "permissions[report_instruct]",
- "permissions[contribute_as_another_user]",
- "permissions[contribute_as_body]",
- "permissions[user_edit]",
- "permissions[user_manage_permissions]",
- "permissions[user_assign_body]",
- "permissions[user_assign_areas]",
- ],
- 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',
+ {
+ desc => 'edit user remove flagged',
+ fields => {
+ name => 'Changed User',
+ email => 'changed@example.com',
+ body => $southend->id,
+ phone => '',
+ flagged => 'on',
+ is_superuser => undef,
+ area_id => '',
+ "permissions[moderate]" => undef,
+ "permissions[planned_reports]" => undef,
+ "permissions[report_edit]" => undef,
+ "permissions[report_edit_category]" => undef,
+ "permissions[report_edit_priority]" => undef,
+ "permissions[report_inspect]" => undef,
+ "permissions[report_instruct]" => undef,
+ "permissions[contribute_as_another_user]" => undef,
+ "permissions[contribute_as_body]" => undef,
+ "permissions[user_edit]" => undef,
+ "permissions[user_manage_permissions]" => undef,
+ "permissions[user_assign_body]" => undef,
+ "permissions[user_assign_areas]" => undef,
+ },
+ changes => {
+ flagged => undef,
+ },
+ log_count => 4,
+ log_entries => [qw/edit edit edit edit/],
},
- changes => {
- is_superuser => undef,
+ {
+ desc => 'edit user add is_superuser',
+ fields => {
+ name => 'Changed User',
+ email => 'changed@example.com',
+ body => $southend->id,
+ phone => '',
+ flagged => undef,
+ is_superuser => undef,
+ area_id => '',
+ "permissions[moderate]" => undef,
+ "permissions[planned_reports]" => undef,
+ "permissions[report_edit]" => undef,
+ "permissions[report_edit_category]" => undef,
+ "permissions[report_edit_priority]" => undef,
+ "permissions[report_inspect]" => undef,
+ "permissions[report_instruct]" => undef,
+ "permissions[contribute_as_another_user]" => undef,
+ "permissions[contribute_as_body]" => undef,
+ "permissions[user_edit]" => undef,
+ "permissions[user_manage_permissions]" => undef,
+ "permissions[user_assign_body]" => undef,
+ "permissions[user_assign_areas]" => undef,
+ },
+ changes => {
+ is_superuser => 'on',
+ },
+ removed => [
+ "permissions[moderate]",
+ "permissions[planned_reports]",
+ "permissions[report_edit]",
+ "permissions[report_edit_category]",
+ "permissions[report_edit_priority]",
+ "permissions[report_inspect]",
+ "permissions[report_instruct]",
+ "permissions[contribute_as_another_user]",
+ "permissions[contribute_as_body]",
+ "permissions[user_edit]",
+ "permissions[user_manage_permissions]",
+ "permissions[user_assign_body]",
+ "permissions[user_assign_areas]",
+ ],
+ log_count => 5,
+ log_entries => [qw/edit edit edit edit edit/],
},
- added => {
- "permissions[moderate]" => undef,
- "permissions[planned_reports]" => undef,
- "permissions[report_edit]" => undef,
- "permissions[report_edit_category]" => undef,
- "permissions[report_edit_priority]" => undef,
- "permissions[report_inspect]" => undef,
- "permissions[report_instruct]" => undef,
- "permissions[contribute_as_another_user]" => undef,
- "permissions[contribute_as_body]" => undef,
- "permissions[user_edit]" => undef,
- "permissions[user_manage_permissions]" => undef,
- "permissions[user_assign_body]" => undef,
- "permissions[user_assign_areas]" => undef,
+ {
+ desc => 'edit user remove is_superuser',
+ fields => {
+ name => 'Changed User',
+ email => 'changed@example.com',
+ body => $southend->id,
+ phone => '',
+ flagged => undef,
+ is_superuser => 'on',
+ area_id => '',
+ },
+ changes => {
+ is_superuser => undef,
+ },
+ added => {
+ "permissions[moderate]" => undef,
+ "permissions[planned_reports]" => undef,
+ "permissions[report_edit]" => undef,
+ "permissions[report_edit_category]" => undef,
+ "permissions[report_edit_priority]" => undef,
+ "permissions[report_inspect]" => undef,
+ "permissions[report_instruct]" => undef,
+ "permissions[contribute_as_another_user]" => undef,
+ "permissions[contribute_as_body]" => undef,
+ "permissions[user_edit]" => undef,
+ "permissions[user_manage_permissions]" => undef,
+ "permissions[user_assign_body]" => undef,
+ "permissions[user_assign_areas]" => undef,
+ },
+ log_count => 5,
+ log_entries => [qw/edit edit edit edit edit/],
},
- log_count => 5,
- log_entries => [qw/edit edit edit edit edit/],
- },
-) {
- subtest $test->{desc} => sub {
- $mech->get_ok( '/admin/user_edit/' . $user->id );
+ ) {
+ subtest $test->{desc} => sub {
+ $mech->get_ok( '/admin/user_edit/' . $user->id );
- my $visible = $mech->visible_form_values;
- is_deeply $visible, $test->{fields}, 'expected user';
+ my $visible = $mech->visible_form_values;
+ is_deeply $visible, $test->{fields}, 'expected user';
- my $expected = {
- %{ $test->{fields} },
- %{ $test->{changes} }
- };
+ my $expected = {
+ %{ $test->{fields} },
+ %{ $test->{changes} }
+ };
- $mech->submit_form_ok( { with_fields => $expected } );
+ $mech->submit_form_ok( { with_fields => $expected } );
- # Some actions cause visible fields to be added/removed
- foreach my $x (@{ $test->{removed} }) {
- delete $expected->{$x};
- }
- if ( $test->{added} ) {
- $expected = {
- %$expected,
- %{ $test->{added} }
- };
- }
+ # Some actions cause visible fields to be added/removed
+ foreach my $x (@{ $test->{removed} }) {
+ delete $expected->{$x};
+ }
+ if ( $test->{added} ) {
+ $expected = {
+ %$expected,
+ %{ $test->{added} }
+ };
+ }
- $visible = $mech->visible_form_values;
- is_deeply $visible, $expected, 'user updated';
+ $visible = $mech->visible_form_values;
+ is_deeply $visible, $expected, 'user updated';
- $mech->content_contains( 'Updated!' );
- };
-}
+ $mech->content_contains( 'Updated!' );
+ };
+ }
+};
subtest "Test setting a report from unconfirmed to something else doesn't cause a front end error" => sub {
$report->update( { confirmed => undef, state => 'unconfirmed', non_public => 0 } );
diff --git a/t/app/controller/admin_permissions.t b/t/app/controller/admin_permissions.t
index 63b753ff3..bb4a95718 100644
--- a/t/app/controller/admin_permissions.t
+++ b/t/app/controller/admin_permissions.t
@@ -168,7 +168,12 @@ FixMyStreet::override_config {
ok $user2->has_permission_to("moderate", $user2->from_body->id), "user2 has been granted moderate permission";
};
- subtest "Unsetting user from_body removes all permissions " => sub {
+ $oxfordshireuser->user_body_permissions->create({
+ body => $oxfordshire,
+ permission_type => 'user_assign_areas',
+ });
+
+ subtest "Unsetting user from_body removes all permissions and area " => sub {
is $user2->user_body_permissions->count, 1, 'user2 has 1 permission';
$mech->get_ok("/admin/user_edit/$user2_id");
@@ -193,6 +198,7 @@ FixMyStreet::override_config {
} } );
is $user2->user_body_permissions->count, 0, 'user2 has had permissions removed';
+ is $user2->area_id, undef, 'user2 has had area removed';
};
};