Exemplo n.º 1
0
 def setUp(self, mock_driver):
     if 'CABU_SETTINGS' in os.environ:
         del os.environ['CABU_SETTINGS']
     os.environ['CABU_SETTINGS'] = 'cabu.tests.test_settings'
     self.app = Cabu(__name__)
     self.config = self.app.config
     self.vdisplay = self.app.vdisplay
     self.client = self.app.test_client()
Exemplo n.º 2
0
class TestBase(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super(TestBase, self).__init__(*args, **kwargs)

        self.patcher_xvfb = patch('cabu.drivers.Xvfb', spec=True)
        self.patcher_xvfb.start()
        self.patcher_ftpretty = patch('cabu.core.ftpretty', spec=True)
        self.patcher_ftpretty.start()

    def __del__(self, *args, **kwargs):
        self.patcher_ftpretty.stop()
        self.patcher_xvfb.stop()

    def __exit__(self, *args, **kwargs):
        self.patcher_ftpretty.stop()
        self.patcher_xvfb.stop()
        super(TestBase, self).__exit__(*args, **kwargs)

    @patch('cabu.drivers.load_phantomjs', return_value=MagicMock())
    def setUp(self, mock_driver):
        if 'CABU_SETTINGS' in os.environ:
            del os.environ['CABU_SETTINGS']
        os.environ['CABU_SETTINGS'] = 'cabu.tests.test_settings'
        self.app = Cabu(__name__)
        self.config = self.app.config
        self.vdisplay = self.app.vdisplay
        self.client = self.app.test_client()

    def tearDown(self):
        if hasattr(self, 'ftp'):
            self.ftp.close()
        if 'CABU_SETTINGS' in os.environ:
            del os.environ['CABU_SETTINGS']
        if hasattr(self, 'app'):
            del self.app

    def get(self, resource, item=None, query='', headers=[]):
        url = self.resolve_resource(resource, item)
        res = self.client.get(url + query, headers=headers)
        return self.parse_response(res)

    def post(self, resource, data, item=None, headers=[], content_type=None):
        if not content_type:
            content_type = 'application/json'
        headers.append(('Content-Type', content_type))
        url = self.resolve_resource(resource, item)
        res = self.client.post(url, data=json.dumps(data), headers=headers)
        return self.parse_response(res)

    def put(self, resource, data, item=None, headers=[]):
        headers.append(('Content-Type', 'application/json'))
        url = self.resolve_resource(resource, item)
        res = self.client.put(url, data=json.dumps(data), headers=headers)
        return self.parse_response(res)

    def patch(self, resource, data, item=None, headers=[]):
        headers.append(('Content-Type', 'application/json'))
        url = self.resolve_resource(resource, item)
        res = self.client.patch(url, data=json.dumps(data), headers=headers)
        return self.parse_response(res)

    def delete(self, resource, item=None, headers=None):
        url = self.resolve_resource(resource, item)
        res = self.client.delete(url, headers=headers)
        return self.parse_response(res)

    def parse_response(self, res):
        val = None
        if res.get_data():
            val = res.get_data().decode("utf-8")
            try:
                val = json.loads(val)
            except ValueError:
                self.fail("'%s' is not valid JSON" % (val))

        return val, res.status_code
Exemplo n.º 3
0
# -*- coding: utf-8 -*-

import os
from cabu import Cabu
from flask import jsonify

os.environ['DRIVER_NAME'] = 'PhantomJS'
# os.environ['DRIVER_NAME'] = 'Firefox'
# os.environ['DRIVER_BINARY_PATH'] = 'iceweasel'
app = Cabu(__name__)


@app.route('/gizmodo_last_articles_links')
def gizmodo_last_articles():
    app.webdriver.get('http://www.gizmodo.com')
    articles_links = [
        i.get_attribute('href')
        for i in app.webdriver.find_elements_by_css_selector('h1.headline>a')
    ]

    return jsonify({'message': 'Last articles', 'articles': articles_links})


@app.route('/test_headers')
def test_headers():
    app.webdriver.get('http://requestb.in/11vj4ii1')

    return jsonify({'message': 'Test header', 'status': 'ok'})

app.run(host='0.0.0.0', port=8080, debug=True)