aboutsummaryrefslogtreecommitdiffstats
path: root/t/app/controller
diff options
context:
space:
mode:
Diffstat (limited to 't/app/controller')
-rw-r--r--t/app/controller/alert_new.t75
-rw-r--r--t/app/controller/auth.t19
-rw-r--r--t/app/controller/auth_social.t12
-rw-r--r--t/app/controller/contact.t8
-rw-r--r--t/app/controller/moderate.t3
-rw-r--r--t/app/controller/questionnaire.t28
-rw-r--r--t/app/controller/report_import.t15
-rw-r--r--t/app/controller/report_new.t38
-rw-r--r--t/app/controller/report_updates.t27
9 files changed, 95 insertions, 130 deletions
diff --git a/t/app/controller/alert_new.t b/t/app/controller/alert_new.t
index 2c20daf9d..1b85adf7e 100644
--- a/t/app/controller/alert_new.t
+++ b/t/app/controller/alert_new.t
@@ -98,9 +98,10 @@ foreach my $test (
my $email = $mech->get_email;
ok $email, "got an email";
- like $email->body, qr/$test->{email_text}/i, "Correct email text";
+ like $mech->get_text_body_from_email($email), qr/$test->{email_text}/i, "Correct email text";
- my ( $url, $url_token ) = $email->body =~ m{(http://\S+/A/)(\S+)};
+ my $url = $mech->get_link_from_email($email);
+ my ($url_token) = $url =~ m{/A/(\S+)};
ok $url, "extracted confirm url '$url'";
my $token = FixMyStreet::App->model('DB::Token')->find(
@@ -119,10 +120,8 @@ foreach my $test (
$mech->get_ok( $test->{uri} . "&token=$csrf" );
- $email = $mech->get_email;
- ok $email, 'got a second email';
-
- ($url_token) = $email->body =~ m{http://\S+/A/(\S+)};
+ $url = $mech->get_link_from_email;
+ ($url_token) = $url =~ m{/A/(\S+)};
ok $url_token ne $existing_token, 'sent out a new token';
$token = FixMyStreet::App->model('DB::Token')->find(
@@ -361,9 +360,9 @@ subtest "Test normal alert signups and that alerts are sent" => sub {
} );
};
if ( $alert->{email_confirm} ) {
- my $email = $mech->get_email;
+ my $url = $mech->get_link_from_email;
+ my ($url_token) = $url =~ m{/A/(\S+)};
$mech->clear_emails_ok;
- my ( $url, $url_token ) = $email->body =~ m{http://\S+(/A/(\S+))};
my $token = FixMyStreet::App->model('DB::Token')->find( { token => $url_token, scope => 'alert' } );
$mech->get_ok( $url );
$mech->content_contains('alert created');
@@ -446,30 +445,32 @@ subtest "Test normal alert signups and that alerts are sent" => sub {
my @emails = $mech->get_email;
my $count;
for (@emails) {
- $count++ if $_->body =~ /The following updates have been left on this report:/;
- $count++ if $_->body =~ /The following new FixMyStreet reports have been added in the City of\s+Edinburgh\s+Council area:/;
- $count++ if $_->body =~ /The following FixMyStreet reports have been made within the area you\s+specified:/;
- $count++ if $_->body =~ /\s+-\s+Testing/;
+ my $body = $mech->get_text_body_from_email($_);
+ $count++ if $body =~ /The following updates have been left on this report:/;
+ $count++ if $body =~ /The following new FixMyStreet reports have been added in the City of\s+Edinburgh\s+Council area:/;
+ $count++ if $body =~ /The following FixMyStreet reports have been made within the area you\s+specified:/;
+ $count++ if $body =~ /\s+-\s+Testing/;
}
is $count, 5, 'Three emails, with five matching lines in them';
my $email = $emails[0];
- like $email->body, qr/Other User/, 'Update name given';
- unlike $email->body, qr/Anonymous User/, 'Update name not given';
+ my $body = $mech->get_text_body_from_email($email);
+ like $body, qr/Other User/, 'Update name given';
+ unlike $body, qr/Anonymous User/, 'Update name not given';
# The update alert was to the problem reporter, so has a special update URL
$mech->log_out_ok;
$mech->get_ok( "/report/$report_id" );
$mech->content_lacks( 'has not been fixed' );
- my ($url) = $email->body =~ m{(http://\S+/R/\S+)};
- ok $url, "extracted update url '$url'";
- $mech->get_ok( $url );
+ my @urls = $mech->get_link_from_email($email, 1);
+ ok $urls[0] =~ m{/R/\S+}, "extracted update url '$urls[0]'";
+ $mech->get_ok( $urls[0] );
is $mech->uri->path, "/report/" . $report_id, "redirected to report page";
$mech->content_contains( 'has not been fixed' );
$mech->not_logged_in_ok;
- ($url) = $emails[0]->body =~ m{http://\S+(/A/\S+)};
- $mech->get_ok( $url );
+ ok $urls[-1] =~ m{/A/\S+}, "unsubscribe URL '$urls[-1]'";
+ $mech->get_ok( $urls[-1] );
$mech->content_contains('alert deleted');
$mech->not_logged_in_ok;
@@ -546,13 +547,10 @@ subtest "Test signature template is used from cobrand" => sub {
}, sub {
FixMyStreet::App->model('DB::AlertType')->email_alerts();
};
- # TODO Note the below will fail if the db has an existing alert that matches
- $mech->email_count_is(1);
- my @emails = $mech->get_email;
- my $email = $emails[0];
- like $email->body, qr/All the best/, 'default signature used';
- unlike $email->body, qr/twitter.com/, 'nothing from fixmystreet signature';
+ my $email = $mech->get_text_body_from_email;
+ like $email, qr/All the best/, 'default signature used';
+ unlike $email, qr/twitter.com/, 'nothing from fixmystreet signature';
$update = FixMyStreet::App->model('DB::Comment')->create( {
problem_id => $report_id,
@@ -577,12 +575,9 @@ subtest "Test signature template is used from cobrand" => sub {
}, sub {
FixMyStreet::App->model('DB::AlertType')->email_alerts();
};
- # TODO Note the below will fail if the db has an existing alert that matches
- $mech->email_count_is(1);
- @emails = $mech->get_email;
- $email = $emails[0];
- like $email->body, qr/twitter.com/, 'fixmystreet signature used';
+ $email = $mech->get_text_body_from_email;
+ like $email, qr/twitter.com/, 'fixmystreet signature used';
$mech->delete_user($user1);
$mech->delete_user($user2);
@@ -682,9 +677,8 @@ for my $test (
}, sub {
FixMyStreet::App->model('DB::AlertType')->email_alerts();
};
- $mech->email_count_is(1);
- my $email = $mech->get_email;
- like $email->body, qr/Alert\s+test\s+for\s+non\s+public\s+reports/, 'alert contains public report';
+ my $email = $mech->get_text_body_from_email;
+ like $email, qr/Alert\s+test\s+for\s+non\s+public\s+reports/, 'alert contains public report';
$mech->delete_user( $user1 );
$mech->delete_user( $user2 );
@@ -766,16 +760,14 @@ subtest 'check new updates alerts for non public reports only go to report owner
ok $alert_user2, "alert created";
FixMyStreet::App->model('DB::AlertType')->email_alerts();
- $mech->email_count_is(1);
- my $email = $mech->get_email;
- like $email->body, qr/This is some more update text/, 'alert contains update text';
+ my $email = $mech->get_text_body_from_email;
+ like $email, qr/This is some more update text/, 'alert contains update text';
$mech->clear_emails_ok;
$report->update( { non_public => 0 } );
FixMyStreet::App->model('DB::AlertType')->email_alerts();
- $mech->email_count_is(1);
- $email = $mech->get_email;
- like $email->body, qr/This is some more update text/, 'alert contains update text';
+ $email = $mech->get_text_body_from_email;
+ like $email, qr/This is some more update text/, 'alert contains update text';
$mech->delete_user( $user1 );
$mech->delete_user( $user2 );
@@ -848,7 +840,6 @@ subtest 'check setting inlude dates in new updates cobrand option' => sub {
$mech->clear_emails_ok;
FixMyStreet::App->model('DB::AlertType')->email_alerts();
- $mech->email_count_is(1);
# if we don't do this then we're applying the date inflation code and
# it's timezone munging to the DateTime object above and not the DateTime
@@ -858,8 +849,8 @@ subtest 'check setting inlude dates in new updates cobrand option' => sub {
$update->discard_changes();
my $date_in_alert = Utils::prettify_dt( $update->confirmed );
- my $email = $mech->get_email;
- like $email->body, qr/$date_in_alert/, 'alert contains date';
+ my $email = $mech->get_text_body_from_email;
+ like $email, qr/$date_in_alert/, 'alert contains date';
$mech->delete_user( $user1 );
$mech->delete_user( $user2 );
diff --git a/t/app/controller/auth.t b/t/app/controller/auth.t
index 60f22acfb..251aa2977 100644
--- a/t/app/controller/auth.t
+++ b/t/app/controller/auth.t
@@ -72,8 +72,7 @@ $mech->not_logged_in_ok;
is $email->header('To'), $test_email, "to is correct";
# extract the link
- my ($link) = $email->body =~ m{(http://\S+)};
- ok $link, "Found a link in email '$link'";
+ my $link = $mech->get_link_from_email($email);
# check that the user does not exist
sub get_user {
@@ -117,9 +116,7 @@ $mech->not_logged_in_ok;
# follow link and change password - check not prompted for old password
$mech->not_logged_in_ok;
- my $email = $mech->get_email;
- $mech->clear_emails_ok;
- my ($link) = $email->body =~ m{(http://\S+)};
+ my $link = $mech->get_link_from_email;
$mech->get_ok($link);
is $mech->uri->path, '/faq', "redirected to the Help page";
@@ -187,9 +184,7 @@ subtest "Test change email page" => sub {
$mech->submit_form_ok({ with_fields => { email => $test_email2 } }, "change_email to $test_email2");
is $mech->uri->path, '/auth/change_email', "still on change email page";
$mech->content_contains( 'Now check your email', "found check your email" );
- my $email = $mech->get_email;
- $mech->clear_emails_ok;
- my ($link) = $email->body =~ m{(http://\S+)};
+ my $link = $mech->get_link_from_email;
$mech->get_ok($link);
is $mech->uri->path, '/auth/change_email/success', "redirected to the change_email page";
$mech->content_contains('successfully confirmed');
@@ -201,9 +196,7 @@ subtest "Test change email page" => sub {
);
is $mech->uri->path, '/auth/change_email', "still on change email page";
$mech->content_contains( 'Now check your email', "found check your email" );
- $email = $mech->get_email;
- $mech->clear_emails_ok;
- ($link) = $email->body =~ m{(http://\S+)};
+ $link = $mech->get_link_from_email;
$mech->get_ok($link);
is $mech->uri->path, '/auth/change_email/success', "redirected to the change_email page";
$mech->content_contains('successfully confirmed');
@@ -214,9 +207,7 @@ subtest "Test change email page" => sub {
);
is $mech->uri->path, '/auth/change_email', "still on change email page";
$mech->content_contains( 'Now check your email', "found check your email" );
- $email = $mech->get_email;
- $mech->clear_emails_ok;
- ($link) = $email->body =~ m{(http://\S+)};
+ $link = $mech->get_link_from_email;
$mech->log_out_ok;
$mech->get_ok($link);
isnt $mech->uri->path, '/auth/change_email/success', "not redirected to the change_email page";
diff --git a/t/app/controller/auth_social.t b/t/app/controller/auth_social.t
index 6929c0ddc..f3eae32a7 100644
--- a/t/app/controller/auth_social.t
+++ b/t/app/controller/auth_social.t
@@ -113,10 +113,8 @@ for my $fb_state ( 'refused', 'no email', 'existing UID', 'okay' ) {
$mech->submit_form(with_fields => $fields);
$mech->content_contains('Nearly done! Now check your email');
- my $email = $mech->get_email;
- ok $email, "got an email";
+ my $url = $mech->get_link_from_email;
$mech->clear_emails_ok;
- my ( $url, $url_token ) = $email->body =~ m{(https?://\S+/[CMP]/)(\S+)};
ok $url, "extracted confirm url '$url'";
my $user = FixMyStreet::App->model( 'DB::User' )->find( { email => $fb_email } );
@@ -125,7 +123,7 @@ for my $fb_state ( 'refused', 'no email', 'existing UID', 'okay' ) {
} else {
is $user->facebook_id, undef, 'User has no facebook ID';
}
- $mech->get_ok( $url . $url_token );
+ $mech->get_ok( $url );
$user = FixMyStreet::App->model( 'DB::User' )->find( { email => $fb_email } );
is $user->facebook_id, $fb_uid, 'User now has correct facebook ID';
@@ -225,10 +223,8 @@ for my $tw_state ( 'refused', 'existing UID', 'no email' ) {
$mech->submit_form(with_fields => $fields);
$mech->content_contains('Nearly done! Now check your email');
- my $email = $mech->get_email;
- ok $email, "got an email";
+ my $url = $mech->get_link_from_email;
$mech->clear_emails_ok;
- my ( $url, $url_token ) = $email->body =~ m{(https?://\S+/[CMP]/)(\S+)};
ok $url, "extracted confirm url '$url'";
my $user = FixMyStreet::App->model( 'DB::User' )->find( { email => $tw_email } );
@@ -237,7 +233,7 @@ for my $tw_state ( 'refused', 'existing UID', 'no email' ) {
} else {
is $user->twitter_id, undef, 'User has no twitter ID';
}
- $mech->get_ok( $url . $url_token );
+ $mech->get_ok( $url );
$user = FixMyStreet::App->model( 'DB::User' )->find( { email => $tw_email } );
is $user->twitter_id, $tw_uid, 'User now has correct twitter ID';
diff --git a/t/app/controller/contact.t b/t/app/controller/contact.t
index 1b0f09a85..dd94fc431 100644
--- a/t/app/controller/contact.t
+++ b/t/app/controller/contact.t
@@ -251,16 +251,16 @@ for my $test (
}
$mech->submit_form_ok( { with_fields => $test->{fields} } );
$mech->content_contains('Thank you for your feedback');
- $mech->email_count_is(1);
my $email = $mech->get_email;
is $email->header('Subject'), 'FMS message: ' . $test->{fields}->{subject}, 'subject';
is $email->header('From'), "\"$test->{fields}->{name}\" <$test->{fields}->{em}>", 'from';
- like $email->body, qr/$test->{fields}->{message}/, 'body';
- like $email->body, qr/Sent by contact.cgi on \S+. IP address (?:\d{1,3}\.){3,}\d{1,3}/, 'body footer';
+ my $body = $mech->get_text_body_from_email($email);
+ like $body, qr/$test->{fields}->{message}/, 'body';
+ like $body, qr/Sent by contact.cgi on \S+. IP address (?:\d{1,3}\.){3,}\d{1,3}/, 'body footer';
my $problem_id = $test->{fields}{id};
- like $email->body, qr/Complaint about report $problem_id/, 'reporting a report'
+ like $body, qr/Complaint about report $problem_id/, 'reporting a report'
if $test->{fields}{id};
$problem_main->discard_changes;
diff --git a/t/app/controller/moderate.t b/t/app/controller/moderate.t
index 14c751115..e3e8bf2cf 100644
--- a/t/app/controller/moderate.t
+++ b/t/app/controller/moderate.t
@@ -169,8 +169,7 @@ subtest 'Problem moderation' => sub {
$report->discard_changes;
is $report->state, 'hidden', 'Is hidden';
- my $email = $mech->get_email;
- my ($url) = $email->body =~ m{(http://\S+)};
+ my $url = $mech->get_link_from_email;
ok $url, "extracted complain url '$url'";
$mech->get_ok($url);
diff --git a/t/app/controller/questionnaire.t b/t/app/controller/questionnaire.t
index 7a46e48bd..b05f74225 100644
--- a/t/app/controller/questionnaire.t
+++ b/t/app/controller/questionnaire.t
@@ -58,12 +58,14 @@ FixMyStreet::App->model('DB::Questionnaire')->send_questionnaires( {
} );
my $email = $mech->get_email;
ok $email, "got an email";
-like $email->body, qr/fill in our short questionnaire/i, "got questionnaire email";
+my $plain = $mech->get_text_body_from_email($email, 1);
+like $plain->body, qr/fill in our short questionnaire/i, "got questionnaire email";
-like $email->body_str, qr/Testing \x{2013} Detail/, 'email contains encoded character';
-is $email->header('Content-Type'), 'text/plain; charset="utf-8"', 'in the right character set';
+like $plain->body_str, qr/Testing \x{2013} Detail/, 'email contains encoded character';
+is $plain->header('Content-Type'), 'text/plain; charset="utf-8"', 'in the right character set';
-my ($token) = $email->body =~ m{http://.*?/Q/(\S+)};
+my $url = $mech->get_link_from_email($email);
+my ($token) = $url =~ m{/Q/(\S+)};
ok $token, "extracted questionnaire token '$token'";
$mech->clear_emails_ok;
@@ -399,13 +401,14 @@ FixMyStreet::override_config {
$questionnaire->delete;
FixMyStreet::App->model('DB::Questionnaire')->send_questionnaires();
- $email = $mech->get_email;
- ok $email, "got an email";
- $mech->clear_emails_ok;
- (my $body = $email->body) =~ s/\s+/ /g;
+ my $email = $mech->get_email;
+ my $body = $mech->get_text_body_from_email($email);
+ $mech->clear_emails_ok;
+ $body =~ s/\s+/ /g;
like $body, qr/fill in our short questionnaire/i, "got questionnaire email";
- ($token) = $email->body =~ m{http://.*?/Q/(\S+)};
+ my $url = $mech->get_link_from_email($email);
+ ($token) = $url =~ m{/Q/(\S+)};
ok $token, "extracted questionnaire token '$token'";
# Test already answered the ever reported question, so not shown again
@@ -445,9 +448,10 @@ FixMyStreet::override_config {
ok $email, "got an email";
$mech->clear_emails_ok;
- like $email->body_str, qr/Testing \x{2013} Detail/, 'email contains encoded character from user';
- like $email->body_str, qr/sak p\xe5 FiksGataMi/, 'email contains encoded character from template';
- is $email->header('Content-Type'), 'text/plain; charset="utf-8"', 'email is in right encoding';
+ my $plain = $mech->get_text_body_from_email($email, 1);
+ like $plain->body_str, qr/Testing \x{2013} Detail/, 'email contains encoded character from user';
+ like $plain->body_str, qr/sak p\xe5 FiksGataMi/, 'email contains encoded character from template';
+ is $plain->header('Content-Type'), 'text/plain; charset="utf-8"', 'email is in right encoding';
};
$mech->delete_user('test@example.com');
diff --git a/t/app/controller/report_import.t b/t/app/controller/report_import.t
index 26acf7790..c8cbcf412 100644
--- a/t/app/controller/report_import.t
+++ b/t/app/controller/report_import.t
@@ -114,11 +114,8 @@ subtest "Submit a correct entry" => sub {
is $mech->content, 'SUCCESS', "Got success response";
# check that we have received the email
- $mech->email_count_is(1);
- my $email = $mech->get_email;
+ my $token_url = $mech->get_link_from_email;
$mech->clear_emails_ok;
-
- my ($token_url) = $email->body =~ m{(http://\S+)};
ok $token_url, "Found a token url $token_url";
# go to the token url
@@ -257,11 +254,8 @@ subtest "Submit a correct entry (with location)" => sub {
is $mech->content, 'SUCCESS', "Got success response";
# check that we have received the email
- $mech->email_count_is(1);
- my $email = $mech->get_email;
+ my $token_url = $mech->get_link_from_email;
$mech->clear_emails_ok;
-
- my ($token_url) = $email->body =~ m{(http://\S+)};
ok $token_url, "Found a token url $token_url";
# go to the token url
@@ -356,11 +350,8 @@ subtest "Submit a correct entry (with location) to cobrand" => sub {
is $mech->content, 'SUCCESS', "Got success response";
# check that we have received the email
- $mech->email_count_is(1);
- my $email = $mech->get_email;
+ my $token_url = $mech->get_link_from_email;
$mech->clear_emails_ok;
-
- my ($token_url) = $email->body =~ m{(http://\S+)};
ok $token_url, "Found a token url $token_url";
# go to the token url
diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t
index 2aebfa00b..6b4f40172 100644
--- a/t/app/controller/report_new.t
+++ b/t/app/controller/report_new.t
@@ -607,10 +607,9 @@ foreach my $test (
# receive token
my $email = $mech->get_email;
ok $email, "got an email";
- like $email->body, qr/confirm that you want to send your\s+report/i, "confirm the problem";
+ like $mech->get_text_body_from_email($email), qr/confirm that you want to send your\s+report/i, "confirm the problem";
- my ($url) = $email->body =~ m{(http://\S+)};
- ok $url, "extracted confirm url '$url'";
+ my $url = $mech->get_link_from_email($email);
# confirm token
$mech->get_ok($url);
@@ -949,10 +948,9 @@ subtest "test report creation for a category that is non public" => sub {
my $email = $mech->get_email;
ok $email, "got an email";
- like $email->body, qr/confirm that you want to send your\s+report/i, "confirm the problem";
+ like $mech->get_text_body_from_email($email), qr/confirm that you want to send your\s+report/i, "confirm the problem";
- my ($url) = $email->body =~ m{(http://\S+)};
- ok $url, "extracted confirm url '$url'";
+ my $url = $mech->get_link_from_email($email);
# confirm token
$mech->get_ok($url);
@@ -1145,10 +1143,9 @@ for my $test (
my $email = $mech->get_email;
ok $email, "got an email";
- like $email->body, qr/confirm that you want to send your\s+report/i, "confirm the problem";
+ like $mech->get_text_body_from_email($email), qr/confirm that you want to send your\s+report/i, "confirm the problem";
- my ($url) = $email->body =~ m{(https?://\S+)};
- ok $url, "extracted confirm url '$url'";
+ my $url = $mech->get_link_from_email($email);
# confirm token in order to update the user details
$mech->get_ok($url);
@@ -1315,17 +1312,17 @@ subtest "test Hart" => sub {
# receive token
my $email = $mech->get_email;
ok $email, "got an email";
- like $email->body, qr/to confirm that you want to send your/i, "confirm the problem";
+ my $body = $mech->get_text_body_from_email($email);
+ like $body, qr/to confirm that you want to send your/i, "confirm the problem";
# does it reference the fact that this report hasn't been sent to Hart?
if ( $test->{national} ) {
- like $email->body, qr/Hart Council is not responsible for this type/i, "mentions report hasn't gone to Hart";
+ like $body, qr/Hart Council is not responsible for this type/i, "mentions report hasn't gone to Hart";
} else {
- unlike $email->body, qr/Hart Council is not responsible for this type/i, "doesn't mention report hasn't gone to Hart";
+ unlike $body, qr/Hart Council is not responsible for this type/i, "doesn't mention report hasn't gone to Hart";
}
- my ($url) = $email->body =~ m{(http://\S+)};
- ok $url, "extracted confirm url '$url'";
+ my $url = $mech->get_link_from_email($email);
# confirm token
FixMyStreet::override_config {
@@ -1541,9 +1538,7 @@ subtest "unresponsive body handling works" => sub {
ok $report, "Found the report";
is $report->bodies_str, undef, "Report not going anywhere";
- my $email = $mech->get_email;
- ok $email, "got an email";
- like $email->body, qr/despite not being sent/i, "correct email sent";
+ like $mech->get_text_body_from_email, qr/despite not being sent/i, "correct email sent";
$user->problems->delete;
$mech->clear_emails_ok;
@@ -1577,9 +1572,7 @@ subtest "unresponsive body handling works" => sub {
ok $report, "Found the report";
is $report->bodies_str, undef, "Report not going anywhere";
- $email = $mech->get_email;
- ok $email, "got an email";
- like $email->body, qr/despite not being sent/i, "correct email sent";
+ like $mech->get_text_body_from_email, qr/despite not being sent/i, "correct email sent";
$user->problems->delete;
$mech->clear_emails_ok;
@@ -1737,10 +1730,9 @@ subtest "extra google analytics code displayed on email confirmation problem cre
my $email = $mech->get_email;
ok $email, "got an email";
- like $email->body, qr/confirm that you want to/i, "confirm the problem";
+ like $mech->get_text_body_from_email($email), qr/confirm that you want to/i, "confirm the problem";
- my ($url) = $email->body =~ m{(https?://\S+)};
- ok $url, "extracted confirm url '$url'";
+ my $url = $mech->get_link_from_email($email);
# confirm token in order to update the user details
$mech->get_ok($url);
diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t
index e077a07c9..e1cd0da71 100644
--- a/t/app/controller/report_updates.t
+++ b/t/app/controller/report_updates.t
@@ -362,10 +362,11 @@ for my $test (
$mech->content_contains('Nearly done! Now check your email');
my $email = $mech->get_email;
- ok $email, "got an email";
- like $email->body, qr/confirm your update on/i, "Correct email text";
+ my $body = $mech->get_text_body_from_email($email);
+ like $body, qr/confirm your update on/i, "Correct email text";
- my ( $url, $url_token ) = $email->body =~ m{(http://\S+/C/)(\S+)};
+ my $url = $mech->get_link_from_email($email);
+ my ($url_token) = $url =~ m{/C/(\S+)};
ok $url, "extracted confirm url '$url'";
my $token = FixMyStreet::App->model('DB::Token')->find(
@@ -392,7 +393,7 @@ for my $test (
is $update->text, $details->{update}, 'update text';
is $add_alerts, $details->{add_alert} ? 1 : 0, 'do not sign up for alerts';
- $mech->get_ok( $url . $url_token );
+ $mech->get_ok( $url );
$mech->content_contains("/report/$report_id#update_$update_id");
my $unreg_user = FixMyStreet::App->model( 'DB::User' )->find( { email => $details->{rznvy} } );
@@ -1000,10 +1001,11 @@ subtest 'submit an update for a registered user, creating update by email' => su
is $user->name, 'Mr Reg', 'name unchanged';
my $email = $mech->get_email;
- ok $email, "got an email";
- like $email->body, qr/confirm your update on/i, "Correct email text";
+ my $body = $mech->get_text_body_from_email($email);
+ like $body, qr/confirm your update on/i, "Correct email text";
- my ( $url, $url_token ) = $email->body =~ m{(http://\S+/C/)(\S+)};
+ my $url = $mech->get_link_from_email($email);
+ my ($url_token) = $url =~ m{/C/(\S+)};
ok $url, "extracted confirm url '$url'";
my $token = FixMyStreet::App->model('DB::Token')->find( {
@@ -1021,7 +1023,7 @@ subtest 'submit an update for a registered user, creating update by email' => su
is $update->user->email, 'registered@example.com', 'update email';
is $update->text, 'Update from a user', 'update text';
- $mech->get_ok( $url . $url_token );
+ $mech->get_ok( $url );
$mech->content_contains("/report/$report_id#update_$update_id");
# User should have new name and password
@@ -1514,8 +1516,6 @@ for my $test (
$mech->content_contains( 'Now check your email' );
- $mech->email_count_is(1);
-
my $results = { %{ $test->{fields} }, %{ $test->{changed} }, };
my $update = $report->comments->first;
@@ -1526,10 +1526,11 @@ for my $test (
is $update->anonymous, $test->{anonymous}, 'user anonymous';
my $email = $mech->get_email;
- ok $email, "got an email";
- like $email->body, qr/confirm your update on/i, "Correct email text";
+ my $body = $mech->get_text_body_from_email($email);
+ like $body, qr/confirm your update on/i, "Correct email text";
- my ( $url, $url_token ) = $email->body =~ m{(http://\S+/C/)(\S+)};
+ my $url = $mech->get_link_from_email($email);
+ my ($url_token) = $url =~ m{/C/(\S+)};
ok $url, "extracted confirm url '$url'";
my $token = FixMyStreet::App->model('DB::Token')->find(