diff options
-rw-r--r-- | perllib/FixMyStreet/Cobrand/Buckinghamshire.pm | 17 | ||||
-rw-r--r-- | t/cobrand/bucks.t | 71 |
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(); |