Content Delivery Network (CDN) - optional, for either uploads only or both uploads & extras (rfe 9134)

This commit is contained in:
Randall Schwartz 2009-05-13 21:12:05 +00:00
parent d6696f8a7e
commit acd3fded45
8 changed files with 646 additions and 11 deletions

View file

@ -53,7 +53,7 @@ my @testSets = (
my $session = WebGUI::Test->session;
plan tests => scalar(@testSets) + 5;
plan tests => scalar(@testSets) + 6;
# generate
my $generateId = $session->id->generate();
@ -79,6 +79,7 @@ foreach my $testSet (@testSets) {
#
is($session->id->toHex('wjabZsKOb7kBBSiO3bQwzA'), 'c2369b66c28e6fb90105288eddb430cc', 'toHex works');
is($session->id->fromHex('c2369b66c28e6fb90105288eddb430cc'), 'wjabZsKOb7kBBSiO3bQwzA', 'fromHex works');
my $re = $session->id->getValidator;
is( ref $re, 'Regexp', 'getValidator returns a regexp object');

View file

@ -52,7 +52,7 @@ my @getRefererUrlTests = (
use Test::More;
use Test::MockObject::Extends;
plan tests => 72 + scalar(@getRefererUrlTests);
plan tests => 76 + scalar(@getRefererUrlTests);
my $session = WebGUI::Test->session;
@ -284,6 +284,12 @@ is($session->url->makeAbsolute('page1'), '/page1', 'makeAbsolute: default baseUr
my $origExtras = $session->config->get('extrasURL');
my $extras = $origExtras;
my $savecdn = $session->config->get('cdn');
if ($savecdn) {
$session->config->delete('cdn');
}
# Note: the CDN configuration will be reverted in the END
is($session->url->extras, $extras.'/', 'extras method returns URL to extras with a trailing slash');
is($session->url->extras('foo.html'), join('/', $extras,'foo.html'), 'extras method appends to the extras url');
is($session->url->extras('/foo.html'), join('/', $extras,'foo.html'), 'extras method removes extra slashes');
@ -301,8 +307,34 @@ $session->config->set('extrasURL', $extras);
is($session->url->extras('/foo.html'), join('', $extras,'foo.html'), 'extras method removes extra slashes');
is($session->url->extras('/dir1//foo.html'), join('', $extras,'dir1/foo.html'), 'extras method removes extra slashes anywhere');
$extras = 'http://mydomain.com/';
$session->config->set('extrasURL', $extras);
my $cdnCfg = { "enabled" => 1,
"extrasCdn" => "http://extras.example.com/",
"extrasSsl" => "https://ssl.example.com/",
"extrasExclude" => ["^tiny"]
};
$session->config->set('cdn', $cdnCfg);
is($session->url->extras('/dir1/foo.html'), join('', $cdnCfg->{extrasCdn}, 'dir1/foo.html'),
'extras cleartext with CDN');
is($session->url->extras('tinymce'), join('', $extras, 'tinymce'),
'extras exclusion from CDN');
# Note: env is already mocked above.
$mockEnv{HTTPS} = 'on';
is($session->url->extras('/dir1/foo.html'), join('', $cdnCfg->{extrasSsl}, 'dir1/foo.html'),
'extras using extrasSsl with HTTPS');
$mockEnv{HTTPS} = undef;
$mockEnv{SSLPROXY} = 1;
is($session->url->extras('/dir1/foo.html'), join('', $cdnCfg->{extrasSsl}, 'dir1/foo.html'),
'extras using extrasSsl with SSLPROXY');
delete $mockEnv{SSLPROXY};
$session->config->set('extrasURL', $origExtras);
# partial cleanup here; complete cleanup in END block
$session->config->delete('cdn');
#######################################
#
# escape and unescape
@ -468,4 +500,9 @@ END { ##Always clean-up
else {
$session->config->delete('webServerPort');
}
if ($savecdn) {
$session->config->set('cdn', $savecdn);
} else {
$session->config->delete('cdn');
}
}