File: test_functional.py

package info (click to toggle)
freedombox 26.3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 83,092 kB
  • sloc: python: 48,542; javascript: 1,730; xml: 481; makefile: 290; sh: 137; php: 32
file content (53 lines) | stat: -rw-r--r-- 2,077 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Functional, browser based tests for RSS-Bridge app.
"""

import json
import subprocess

from plinth.tests import functional


class TestRSSBridgeApp(functional.BaseAppTests):
    app_name = 'rssbridge'
    has_service = False
    has_web = True

    def test_active_bridges(self, session_browser):
        """Check that bridges are active."""
        functional.app_enable(session_browser, self.app_name)
        functional.visit(session_browser, '/rss-bridge/')
        assert session_browser.find_by_css(
            '#bridge-Wikipedia button[type="submit"]')

    def test_feed_html(self, session_browser):
        """Check that a feed is properly rendered."""
        functional.app_enable(session_browser, self.app_name)
        url = '/rss-bridge/?action=display&bridge=Wikipedia&' \
            'language=en&subject=tfa&format=Html'
        functional.visit(session_browser, url)
        assert not session_browser.find_by_css('.exception-message')
        assert session_browser.find_by_css('.feeditem')

    def test_feed_json(self, session_browser):
        """Check that a feed is properly rendered."""
        functional.app_enable(session_browser, self.app_name)
        path = '/rss-bridge/?action=display&bridge=Wikipedia&' \
            'language=en&subject=tfa&format=Json'
        url = functional.config['DEFAULT']['url'] + path

        # Unauthorized
        result = subprocess.run(['curl', '-k', '--basic', url],
                                stdout=subprocess.PIPE,
                                stderr=subprocess.DEVNULL, check=True)
        assert '401 Unauthorized' in result.stdout.decode()

        # Authorized
        username = functional.config['DEFAULT']['username']
        password = functional.config['DEFAULT']['password']
        result = subprocess.run(
            ['curl', '-k', '--basic', '--user', f'{username}:{password}', url],
            stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, check=True)
        feed = json.loads(result.stdout)
        assert len(feed['items'])