Projet

Général

Profil

0001-pwa-absolute-redirection-url-into-internal-page-5697.patch

Nicolas Roche, 15 septembre 2021 16:41

Télécharger (2,71 ko)

Voir les différences:

Subject: [PATCH] pwa: absolute redirection url into internal page (#56974)

 tests/test_pwa.py | 45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
tests/test_pwa.py
248 248
        assert nav.count('background-image') == 1
249 249
        assert nav.count('data-notification-count-url=') == 1
250 250
        assert nav.count('data-pwa-user-name=""') == 1
251 251

  
252 252
        nav = t.render(Context({'request': request, 'render_skeleton': True}))
253 253
        assert 'data-pwa-user-name="{% block placeholder-user-name %}' in nav
254 254

  
255 255

  
256
def test_pwa_navigation_templatetag_internal_redirection(app):
257
    page1 = Page(title='One', slug='one')
258
    page2 = Page(title='Two', slug='two', redirect_url = 'https://www.example.org/test')
259
    page3 = Page(title='Three', slug='three', redirect_url = '../test')
260
    page4 = Page(title='Four', slug='four', redirect_url = '{{test_url}}plop')
261
    page1.save()
262
    page2.save()
263
    page3.save()
264
    page4.save()
265
    entry1 = PwaNavigationEntry(link_page=page1, order=1)
266
    entry2 = PwaNavigationEntry(link_page=page2, order=2)
267
    entry3 = PwaNavigationEntry(link_page=page3, order=3)
268
    entry4 = PwaNavigationEntry(link_page=page4, order=4)
269
    entry1.save()
270
    entry2.save()
271
    entry3.save()
272
    entry4.save()
273
    t = Template('{% load pwa %}{% pwa_navigation %}')
274
    assert t.render(Context({})) == ''
275

  
276
    with override_settings(TEMPLATE_VARS={'pwa_display': 'standalone'}):
277
        request = RequestFactory().get('/')
278
        nav = t.render(Context({'request': request}))
279

  
280
    open('/var/www/html/index.html', 'w').write(nav)
281
    from html.parser import HTMLParser
282

  
283
    expected = [
284
        'http://testserver/one/',
285
        'http://testserverhttps://www.example.org/test',
286
        'http://testserver/three/',
287
        'http://testserver/four/',
288
    ]
289

  
290
    results = []
291
    class MyHTMLParser(HTMLParser):
292
        def handle_starttag(self, tag, attrs):
293
            if tag == 'a':
294
                results.append(attrs[0][1])
295

  
296
    parser = MyHTMLParser()
297
    parser.feed(nav)
298
    assert results == expected
299

  
300

  
256 301
def test_pwa_application_icon(app, admin_user):
257 302
    app = login(app)
258 303
    with override_settings(TEMPLATE_VARS={'pwa_display': 'standalone'}):
259 304
        PwaSettings.objects.all().delete()
260 305
        resp = app.get('/manage/pwa/')
261 306
        resp.form['application_icon'] = Upload(
262 307
            'test.png',
263 308
            base64.decodebytes(
264
-