Fixed icon url issue when more than one 'w' url param is included and added a test
diff --git a/Allura/allura/controllers/project.py b/Allura/allura/controllers/project.py
index 3e8a4b4..57133ff 100644
--- a/Allura/allura/controllers/project.py
+++ b/Allura/allura/controllers/project.py
@@ -250,6 +250,8 @@
@expose()
def icon(self, w=None, **kw):
try:
+ if isinstance(w, list):
+ w = w[0]
icon = c.project.icon_sized(w=int(w or 48))
except ValueError as e:
log.info('Invalid project icon size: %s on %s', e, request.url)
@@ -422,6 +424,8 @@
@expose()
def icon(self, w=48, **kw):
try:
+ if isinstance(w, list):
+ w = w[0]
icon = c.project.icon_sized(w=int(w))
except ValueError as e:
log.info('Invalid project icon size: %s on %s', e, request.url)
diff --git a/Allura/allura/tests/functional/test_static.py b/Allura/allura/tests/functional/test_static.py
index 5f54ccc9..fae8f8d 100644
--- a/Allura/allura/tests/functional/test_static.py
+++ b/Allura/allura/tests/functional/test_static.py
@@ -19,6 +19,8 @@
from __future__ import absolute_import
from allura.tests import TestController
+from tg import config
+from allura.lib import helpers as h
class TestStaticFilesMiddleware(TestController):
diff --git a/Allura/allura/tests/unit/test_project.py b/Allura/allura/tests/unit/test_project.py
index 6fb0bc0..938a174 100644
--- a/Allura/allura/tests/unit/test_project.py
+++ b/Allura/allura/tests/unit/test_project.py
@@ -25,6 +25,7 @@
from allura import model as M
from allura.lib import helpers as h
from allura.app import SitemapEntry
+import requests
class TestProject(unittest.TestCase):
@@ -114,3 +115,10 @@
with h.push_config(config, **{'static.icon_base': 'https://mycdn.com/mysite'}):
self.assertEqual(p.icon_url(), 'https://mycdn.com/mysite/nbhd/myproj/icon')
+
+ def test_project_icon(self):
+ urls = ['http://localhost/s/contractsafe/icon?w=180&w=200',
+ 'http://localhost/s/sproutloud/icon?w=180&&w=200&w=100']
+ for url in urls:
+ r = requests.get(url)
+ self.assertEqual(r.status_code, 200)