aboutsummaryrefslogtreecommitdiffstats
path: root/t/app/controller/admin.t
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2011-08-16 10:38:49 +0100
committerStruan Donald <struan@exo.org.uk>2011-08-16 10:38:49 +0100
commitc104ae8c1d72eb25ba60686b58f01da148dc081f (patch)
tree83bbf971b4d4ca305452bdfaacf50cd30ae5317c /t/app/controller/admin.t
parent213948dcc9c281b1873da98e381b25231c376165 (diff)
parentf6ddc9d4db2e272d725e7ed44fb4d828d99d3b61 (diff)
Merge branch 'master' of ssh://git.mysociety.org/data/git/public/fixmystreet into open311-consumer
Conflicts: db/schema.sql perllib/FixMyStreet/DB/Result/Problem.pm
Diffstat (limited to 't/app/controller/admin.t')
-rw-r--r--t/app/controller/admin.t195
1 files changed, 181 insertions, 14 deletions
diff --git a/t/app/controller/admin.t b/t/app/controller/admin.t
index a7eee4dd3..160e99785 100644
--- a/t/app/controller/admin.t
+++ b/t/app/controller/admin.t
@@ -286,6 +286,7 @@ foreach my $test (
name => 'Test User',
email => $user->email,
anonymous => 0,
+ flagged => undef,
},
changes => {
title => 'Edited Report',
@@ -303,6 +304,7 @@ foreach my $test (
name => 'Test User',
email => $user->email,
anonymous => 0,
+ flagged => undef,
},
changes => {
detail => 'Edited Detail',
@@ -320,6 +322,7 @@ foreach my $test (
name => 'Test User',
email => $user->email,
anonymous => 0,
+ flagged => undef,
},
changes => {
name => 'Edited User',
@@ -330,7 +333,7 @@ foreach my $test (
user => $user,
},
{
- description => 'edit report user email',
+ description => 'edit report set flagged true',
fields => {
title => 'Edited Report',
detail => 'Edited Detail',
@@ -338,13 +341,33 @@ foreach my $test (
name => 'Edited User',
email => $user->email,
anonymous => 0,
+ flagged => undef,
},
changes => {
- email => $user2->email,
+ flagged => 'on',
},
log_count => 4,
log_entries => [ qw/edit edit edit edit/ ],
resend => 0,
+ user => $user,
+ },
+ {
+ description => 'edit report user email',
+ fields => {
+ title => 'Edited Report',
+ detail => 'Edited Detail',
+ state => 'confirmed',
+ name => 'Edited User',
+ email => $user->email,
+ anonymous => 0,
+ flagged => 'on',
+ },
+ changes => {
+ email => $user2->email,
+ },
+ log_count => 5,
+ log_entries => [ qw/edit edit edit edit edit/ ],
+ resend => 0,
user => $user2,
},
{
@@ -356,12 +379,13 @@ foreach my $test (
name => 'Edited User',
email => $user2->email,
anonymous => 0,
+ flagged => 'on',
},
changes => {
state => 'unconfirmed'
},
- log_count => 5,
- log_entries => [ qw/state_change edit edit edit edit/ ],
+ log_count => 6,
+ log_entries => [ qw/state_change edit edit edit edit edit/ ],
resend => 0,
},
{
@@ -373,12 +397,13 @@ foreach my $test (
name => 'Edited User',
email => $user2->email,
anonymous => 0,
+ flagged => 'on',
},
changes => {
state => 'confirmed'
},
- log_count => 6,
- log_entries => [ qw/state_change state_change edit edit edit edit/ ],
+ log_count => 7,
+ log_entries => [ qw/state_change state_change edit edit edit edit edit/ ],
resend => 0,
},
{
@@ -390,12 +415,13 @@ foreach my $test (
name => 'Edited User',
email => $user2->email,
anonymous => 0,
+ flagged => 'on',
},
changes => {
state => 'fixed'
},
- log_count => 7,
- log_entries => [ qw/state_change state_change state_change edit edit edit edit/ ],
+ log_count => 8,
+ log_entries => [ qw/state_change state_change state_change edit edit edit edit edit/ ],
resend => 0,
},
{
@@ -407,12 +433,13 @@ foreach my $test (
name => 'Edited User',
email => $user2->email,
anonymous => 0,
+ flagged => 'on',
},
changes => {
state => 'hidden'
},
- log_count => 8,
- log_entries => [ qw/state_change state_change state_change state_change edit edit edit edit/ ],
+ log_count => 9,
+ log_entries => [ qw/state_change state_change state_change state_change edit edit edit edit edit/ ],
resend => 0,
},
{
@@ -424,13 +451,14 @@ foreach my $test (
name => 'Edited User',
email => $user2->email,
anonymous => 0,
+ flagged => 'on',
},
changes => {
state => 'confirmed',
anonymous => 1,
},
- log_count => 10,
- log_entries => [ qw/edit state_change state_change state_change state_change state_change edit edit edit edit/ ],
+ log_count => 11,
+ log_entries => [ qw/edit state_change state_change state_change state_change state_change edit edit edit edit edit/ ],
resend => 0,
},
{
@@ -442,11 +470,12 @@ foreach my $test (
name => 'Edited User',
email => $user2->email,
anonymous => 1,
+ flagged => 'on',
},
changes => {
},
- log_count => 11,
- log_entries => [ qw/resend edit state_change state_change state_change state_change state_change edit edit edit edit/ ],
+ log_count => 12,
+ log_entries => [ qw/resend edit state_change state_change state_change state_change state_change edit edit edit edit edit/ ],
resend => 1,
},
) {
@@ -479,6 +508,7 @@ foreach my $test (
$mech->content_lacks( 'type="submit" name="resend"', 'no resend button' );
}
+ $test->{changes}->{flagged} = 1 if $test->{changes}->{flagged};
is $report->$_, $test->{changes}->{$_}, "$_ updated" for grep { $_ ne 'email' } keys %{ $test->{changes} };
if ( $test->{user} ) {
@@ -502,6 +532,7 @@ subtest 'change email to new user' => sub {
name => $report->name,
email => $report->user->email,
anonymous => 1,
+ flagged => 'on',
};
is_deeply( $mech->visible_form_values(), $fields, 'initial form values' );
@@ -541,6 +572,65 @@ subtest 'change email to new user' => sub {
is $report->user_id, $user3->id, 'user changed to new user';
};
+subtest 'adding email to abuse list from report page' => sub {
+ my $email = $report->user->email;
+
+ my $abuse = FixMyStreet::App->model('DB::Abuse')->find( { email => $email } );
+ $abuse->delete if $abuse;
+
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_contains('Ban email address');
+
+ $mech->click_ok('banuser');
+
+ $mech->content_contains('Email added to abuse list');
+ $mech->content_contains('<small>(Email in abuse table)</small>');
+
+ $abuse = FixMyStreet::App->model('DB::Abuse')->find( { email => $email } );
+ ok $abuse, 'entry created in abuse table';
+
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_contains('<small>(Email in abuse table)</small>');
+};
+
+subtest 'flagging user from report page' => sub {
+ $report->user->flagged(0);
+ $report->user->update;
+
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_contains('Flag user');
+
+ $mech->click_ok('flaguser');
+
+ $mech->content_contains('User flagged');
+ $mech->content_contains('Remove flag');
+
+ $report->discard_changes;
+ ok $report->user->flagged, 'user flagged';
+
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_contains('Remove flag');
+};
+
+subtest 'unflagging user from report page' => sub {
+ $report->user->flagged(1);
+ $report->user->update;
+
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_contains('Remove flag');
+
+ $mech->click_ok('removeuserflag');
+
+ $mech->content_contains('User flag removed');
+ $mech->content_contains('Flag user');
+
+ $report->discard_changes;
+ ok !$report->user->flagged, 'user not flagged';
+
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_contains('Flag user');
+};
+
$log_entries->delete;
my $update = FixMyStreet::App->model('DB::Comment')->create(
@@ -721,6 +811,65 @@ subtest 'editing update email creates new user if required' => sub {
is $update->user->id, $user->id, 'update set to new user';
};
+subtest 'adding email to abuse list from update page' => sub {
+ my $email = $update->user->email;
+
+ my $abuse = FixMyStreet::App->model('DB::Abuse')->find( { email => $email } );
+ $abuse->delete if $abuse;
+
+ $mech->get_ok( '/admin/update_edit/' . $update->id );
+ $mech->content_contains('Ban email address');
+
+ $mech->click_ok('banuser');
+
+ $mech->content_contains('Email added to abuse list');
+ $mech->content_contains('<small>(Email in abuse table)</small>');
+
+ $abuse = FixMyStreet::App->model('DB::Abuse')->find( { email => $email } );
+ ok $abuse, 'entry created in abuse table';
+
+ $mech->get_ok( '/admin/update_edit/' . $update->id );
+ $mech->content_contains('<small>(Email in abuse table)</small>');
+};
+
+subtest 'flagging user from update page' => sub {
+ $update->user->flagged(0);
+ $update->user->update;
+
+ $mech->get_ok( '/admin/update_edit/' . $update->id );
+ $mech->content_contains('Flag user');
+
+ $mech->click_ok('flaguser');
+
+ $mech->content_contains('User flagged');
+ $mech->content_contains('Remove flag');
+
+ $update->discard_changes;
+ ok $update->user->flagged, 'user flagged';
+
+ $mech->get_ok( '/admin/update_edit/' . $update->id );
+ $mech->content_contains('Remove flag');
+};
+
+subtest 'unflagging user from update page' => sub {
+ $update->user->flagged(1);
+ $update->user->update;
+
+ $mech->get_ok( '/admin/update_edit/' . $update->id );
+ $mech->content_contains('Remove flag');
+
+ $mech->click_ok('removeuserflag');
+
+ $mech->content_contains('User flag removed');
+ $mech->content_contains('Flag user');
+
+ $update->discard_changes;
+ ok !$update->user->flagged, 'user not flagged';
+
+ $mech->get_ok( '/admin/update_edit/' . $update->id );
+ $mech->content_contains('Flag user');
+};
+
subtest 'hiding comment marked as fixed reopens report' => sub {
$update->mark_fixed( 1 );
$update->update;
@@ -777,6 +926,24 @@ subtest 'report search' => sub {
$mech->content_like( qr{<tr [^>]*hidden[^>]*> \s* <td> \s* $r_id \s* </td>}xs );
};
+subtest 'search abuse' => sub {
+ $mech->get_ok( '/admin/search_abuse?search=example' );
+
+ $mech->content_contains('test4@example.com');
+};
+
+subtest 'show flagged entries' => sub {
+ $report->flagged( 1 );
+ $report->update;
+
+ $user->flagged( 1 );
+ $user->update;
+
+ $mech->get_ok('/admin/list_flagged');
+ $mech->content_contains( $report->title );
+ $mech->content_contains( $user->email );
+};
+
$mech->delete_user( $user );
$mech->delete_user( $user2 );
$mech->delete_user( $user3 );