aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/Cobrand/Buckinghamshire.pm17
-rw-r--r--t/cobrand/bucks.t71
2 files changed, 88 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm b/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
index 055e481d9..c8432c4d7 100644
--- a/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
+++ b/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
@@ -109,6 +109,23 @@ sub open311_config_updates {
$params->{mark_reopen} = 1;
}
+sub filter_report_description {
+ my ($self, $description) = @_;
+
+ # this allows _ in the domain name but I figure it's unlikely to
+ # generate false positives so lets go with that for the same of
+ # a simpler regex
+ $description =~ s/\b[\w.!#$%&'*+\-\/=?^_{|}~]+\@[\w\-]+\.[^ ]+\b//g;
+ $description =~ s/ (?: \+ \d{2} \s? | \b 0 ) (?:
+ \d{2} \s? \d{4} \s? \d{4} # 0xx( )xxxx( )xxxx
+ | \d{3} \s \d{3} \s? \d{4} # 0xxx xxx( )xxxx
+ | \d{3} \s? \d{2} \s \d{4,5} # 0xxx( )xx xxxx(x)
+ | \d{4} \s \d{5,6} # 0xxxx xxxxx(x)
+ ) \b //gx;
+
+ return $description;
+}
+
sub map_type { 'Buckinghamshire' }
sub default_map_zoom { 3 }
diff --git a/t/cobrand/bucks.t b/t/cobrand/bucks.t
index 17e850196..a894bd377 100644
--- a/t/cobrand/bucks.t
+++ b/t/cobrand/bucks.t
@@ -82,4 +82,75 @@ subtest 'flytipping off road sent to extra email' => sub {
};
+$cobrand = FixMyStreet::Cobrand::Buckinghamshire->new();
+
+for my $test (
+ {
+ desc => 'filters basic emails',
+ in => 'email: test@example.com',
+ out => 'email: ',
+ },
+ {
+ desc => 'filters emails in brackets',
+ in => 'email: <test@example.com>',
+ out => 'email: <>',
+ },
+ {
+ desc => 'filters emails from hosts',
+ in => 'email: test@mail.example.com',
+ out => 'email: ',
+ },
+ {
+ desc => 'filters multiple emails',
+ in => 'email: test@example.com and user@fixmystreet.com',
+ out => 'email: and ',
+ },
+ {
+ desc => 'filters basic phone numbers',
+ in => 'number: 07700 900000',
+ out => 'number: ',
+ },
+ {
+ desc => 'filters multiple phone numbers',
+ in => 'number: 07700 900000 and 07700 900001',
+ out => 'number: and ',
+ },
+ {
+ desc => 'filters 3 part phone numbers',
+ in => 'number: 0114 496 0999',
+ out => 'number: ',
+ },
+ {
+ desc => 'filters international phone numbers',
+ in => 'number: +44 114 496 0999',
+ out => 'number: ',
+ },
+ {
+ desc => 'filters 020 phone numbers',
+ in => 'number: 020 7946 0999',
+ out => 'number: ',
+ },
+ {
+ desc => 'filters no area phone numbers',
+ in => 'number: 01632 01632',
+ out => 'number: ',
+ },
+ {
+ desc => 'does not filter normal numbers',
+ in => 'number: 16320163236',
+ out => 'number: 16320163236',
+ },
+ {
+ desc => 'does not filter short numbers',
+ in => 'number: 0163 1632',
+ out => 'number: 0163 1632',
+ },
+) {
+ subtest $test->{desc} => sub {
+ is $cobrand->filter_report_description($test->{in}), $test->{out}, "filtered correctly";
+ };
+}
+
+
+
done_testing();