From 86a5cb9128b66c0f62e8a9266e897c8648f14e9f Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 25 Sep 2006 04:47:05 +0000 Subject: [PATCH] Fix the same problem with form params in getRequestedUrl as in getRefererUrl and add tests to detect it. --- lib/WebGUI/Session/Url.pm | 4 ++-- t/Session/Url.t | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/WebGUI/Session/Url.pm b/lib/WebGUI/Session/Url.pm index 2e43bd3fb..636cbef49 100644 --- a/lib/WebGUI/Session/Url.pm +++ b/lib/WebGUI/Session/Url.pm @@ -212,7 +212,7 @@ sub getRequestedUrl { unless ($self->{_requestedUrl}) { $self->{_requestedUrl} = $self->session->request->uri; my $gateway = $self->session->config->get("gateway"); - $self->{_requestedUrl} =~ s/^$gateway(.*)$/$1/; + $self->{_requestedUrl} =~ s/^$gateway([^?]*)\??.*$/$1/; } return $self->{_requestedUrl}; } @@ -367,7 +367,7 @@ sub session { =head2 setSiteURL ( ) -Sets an alternate site url. +Sets an alternate site url for this session variable. =cut diff --git a/t/Session/Url.t b/t/Session/Url.t index ba62589cd..7f659b656 100644 --- a/t/Session/Url.t +++ b/t/Session/Url.t @@ -134,6 +134,12 @@ is ($session->url->getRequestedUrl, 'path1/file1', 'getRequestedUrl, fetch'); $requestedUrl = '/path2/file2'; is ($session->url->getRequestedUrl, 'path1/file1', 'getRequestedUrl, check cache of previous result'); +$session->url->{_requestedUrl} = undef; ##Manually clear cached value +$requestedUrl = '/path2/file2?param1=one;param2=two'; +is ($session->url->getRequestedUrl, 'path2/file2', 'getRequestedUrl, does not return params'); + +$session->url->{_requestedUrl} = undef; ##Manually clear cached value +$requestedUrl = '/path1/file1'; is ($session->url->page, '/path1/file1', 'page with no args returns getRequestedUrl through gateway'); $url2 = 'http://'.$session->config->get('sitename')->[0].'/path1/file1'; @@ -141,7 +147,7 @@ is ($session->url->page('',1), $url2, 'page, withFullUrl includes method and sit ##getReferrerUrl tests -our %mockEnv = (HTTP_REFERER => undef); +our %mockEnv = %ENV; $session->{_env}->{_env} = \%mockEnv;