From 9341a79aca339e1a5749222c1fa8db70773241bc Mon Sep 17 00:00:00 2001 From: Jade Ellis Date: Mon, 30 Dec 2024 18:17:10 +0000 Subject: [PATCH] MBS-13876: Verification email test --- t/lib/t/MusicBrainz/Server/Email.pm | 55 ++++++++++++----------------- 1 file changed, 23 insertions(+), 32 deletions(-) diff --git a/t/lib/t/MusicBrainz/Server/Email.pm b/t/lib/t/MusicBrainz/Server/Email.pm index 337b16a0e42..3f24f3d11e6 100644 --- a/t/lib/t/MusicBrainz/Server/Email.pm +++ b/t/lib/t/MusicBrainz/Server/Email.pm @@ -153,39 +153,30 @@ test all => sub { }; subtest 'send_email_verification' => sub { + $email->send_email_verification( + email => 'user@example.com', + verification_link => "$server/verify-email", + ip => '127.0.0.1', + editor => $user1, + ); - $email->send_email_verification( - email => 'user@example.com', - verification_link => "$server/verify-email", - ip => '127.0.0.1', - editor => $user1, - ); - - is($email->transport->delivery_count, 1); - my $delivery = $email->transport->shift_deliveries; - is($delivery->{envelope}->{from}, 'noreply@musicbrainz.org', "Envelope from is noreply@..."); - my $e = $delivery->{email}; - $email->transport->clear_deliveries; - is($e->get_header('From'), 'MusicBrainz Server ', 'From is noreply@...'); - is($e->get_header('To'), 'user@example.com', 'To is user@example.com'); - is($e->get_header('Subject'), 'Please verify your email address', 'Subject is Please verify your email address'); - like($e->get_header('Message-Id'), qr{}, 'Message-Id has right format'); - compare_body($e->object->body_str, - "Hello Editor 1,\n". - "\n". - "This is a verification email for your MusicBrainz account. Please click\n". - "on the link below to verify your email address:\n". - "\n". - "$server/verify-email\n". - "\n". - "If clicking the link above doesn't work, please copy and paste the URL in a\n". - "new browser window instead.\n". - "This email was triggered by a request from the IP address [127.0.0.1].\n". - "\n". - "Thanks for using MusicBrainz!\n". - "\n". - "-- The MusicBrainz Team\n"); - + my $mail_service_req = shift(@mail_service_reqs); + my $mail_service_req_content = decode_json($mail_service_req->content); + is($mail_service_req->method, 'POST', 'mail service request method is POST'); + is($mail_service_req->uri, 'http://localhost:3000/send_single', 'mail service request uri is send_single'); + is($mail_service_req->header('Accept'), 'application/json', 'client accepts application/json'); + is($mail_service_req->header('Content-Type'), 'application/json', 'mail service content-type is application/json'); + cmp_deeply($mail_service_req_content, { + template_id => 'verify-email', + to => 'user@example.com', + from => 'MusicBrainz Server ', + reply_to => 'MusicBrainz Server ', + message_id => re(qr/^$/), + params => { + verification_url => "$server/verify-email", + to_name => 'Editor 1', + }, + }, 'mail service request content is correct'); }; subtest 'send_lost_username' => sub {