1#!/usr/bin/env perl 2use warnings; 3use strict; 4 5use Jifty::Test::Dist tests => 24; 6use TestApp::Notification::Foo; 7 8sub send_and_receive { 9 Jifty::Test->setup_mailbox; 10 11 my $notification = TestApp::Notification::Foo->new; 12 $notification->send_one_message; 13 14 my @emails = Jifty::Test->messages; 15 Jifty::Test->teardown_mailbox; 16 17 is(scalar @emails, 1, "Sent one notification email"); 18 return Email::MIME->new($emails[0]->as_string)->body_str . "\n"; 19} 20 21# Normal, non-ssl with no request object 22ok !Jifty->web->request, "no request object"; 23ok !Jifty->web->is_ssl, "is_ssl returns 0"; 24my $body = send_and_receive(); 25like $body, qr/^http:/, "Got http:// notification url for is_ssl = 0 with no request object"; 26like +Jifty->web->url(path => '/foo'), qr/^http:/, "Got http:// url as normal"; 27 28# Normal, non-ssl with an http request object 29Jifty::Test->web; 30ok +Jifty->web->request, "got request object"; 31ok !Jifty->web->is_ssl, "is_ssl returns 0"; 32$body = send_and_receive(); 33like $body, qr/^http:/, "Got http:// notification url for is_ssl = 0 with request object"; 34like +Jifty->web->url(path => '/foo'), qr/^http:/, "Got http:// url as normal"; 35 36 37# Override Jifty->web->is_ssl to always return true for this test 38# to fake an HTTPS environment 39{ no warnings 'redefine'; *Jifty::Web::is_ssl = sub { 1 }; } 40 41# 42# Normal, ssl indicated, but no request object 43# 44Jifty->web->request(undef); 45ok !Jifty->web->request, "no request object"; 46ok +Jifty->web->is_ssl, "is_ssl returns 1"; 47$body = send_and_receive(); 48like $body, qr/^http:/, "Got http:// notification url for is_ssl = 1 with no request object"; 49like +Jifty->web->url(path => '/foo'), qr/^https:/, "Got https:// url as normal"; 50 51 52# 53# Normal, ssl with an https request object 54# 55Jifty::Test->web; 56my $req = Jifty->web->request; 57 58# Fake https scheme for the request object 59$req->scheme('https'); 60$req->uri->scheme('https'); 61$req->uri->host('localhost'); 62 63ok $req, "got request object"; 64is $req->scheme, 'https', "https scheme in request"; 65ok $req->uri, "got request->uri"; 66is $req->uri->scheme, 'https', "https scheme in request->uri"; 67ok $req->uri->host, "got request->uri->host"; 68ok +Jifty->web->is_ssl, "is_ssl returns 1"; 69 70$body = send_and_receive(); 71like $body, qr/^http:/, "Got http:// notification url for is_ssl = 1 with request object"; 72like +Jifty->web->url(path => '/foo'), qr/^https:/, "Got https:// url as normal"; 73 74