def setUpFunctional(global_config=None, **settings): from kotti import main from zope.testbrowser.wsgi import Browser from webtest import TestApp tearDown() _settings = { "sqlalchemy.url": testing_db_url(), "kotti.secret": "secret", "kotti.site_title": "Website des Kottbusser Tors", # for mailing "kotti.populators": "kotti.testing._populator", "mail.default_sender": "kotti@localhost", "pyramid.includes": "kotti.testing._functional_includeme", } _settings.update(settings) host, port = BASE_URL.split(":")[-2:] app = main({}, **_settings) Browser.pyquery = property(_zope_testbrowser_pyquery) return dict( Browser=lambda: Browser("http://{}:{}/".format(host[2:], int(port)), wsgi_app=app), browser=Browser("http://{}:{}/".format(host[2:], int(port)), wsgi_app=app), test_app=TestApp(app), )
def setUpFunctional(global_config=None, **settings): from kotti import main from zope.testbrowser.wsgi import Browser from webtest import TestApp tearDown() _settings = { 'sqlalchemy.url': testing_db_url(), 'kotti.secret': 'secret', 'kotti.site_title': 'Website des Kottbusser Tors', # for mailing 'kotti.populators': 'kotti.testing._populator', 'mail.default_sender': 'kotti@localhost', 'pyramid.includes': 'kotti.testing._functional_includeme', } _settings.update(settings) host, port = BASE_URL.split(':')[-2:] app = main({}, **_settings) Browser.pyquery = property(_zope_testbrowser_pyquery) return dict( Browser=lambda: Browser('http://{}:{}/'.format(host[2:], int(port)), wsgi_app=app), browser=Browser('http://{}:{}/'.format(host[2:], int(port)), wsgi_app=app), test_app=TestApp(app), )
def test_use_test_browser(self): # TEMPORARY test. Make sure we can use a virtual browser. app = SampleApp() self.layer.getRootFolder()['app'] = app browser = Browser() browser.open("http://localhost/app/@@foo") assert browser.contents == 'Hi from SampleAppView, VARS: []'
def browser(db_session, request, setup_app): """returns an instance of `zope.testbrowser`. The `kotti.testing.user` pytest marker (or `pytest.mark.user`) can be used to pre-authenticate the browser with the given login name: `@user('admin')`. """ from zope.testbrowser.wsgi import Browser from kotti.testing import BASE_URL host, port = BASE_URL.split(":")[-2:] browser = Browser("http://{}:{}/".format(host[2:], int(port)), wsgi_app=setup_app) marker = request.node.get_closest_marker("user") if marker: # set auth cookie directly on the browser instance... from pyramid.security import remember from pyramid.testing import DummyRequest login = marker.args[0] environ = dict(HTTP_HOST=host[2:]) for _, value in remember(DummyRequest(environ=environ), login): cookie, _ = value.split(";", 1) name, value = cookie.split("=") if name in browser.cookies: del browser.cookies[name] browser.cookies.create(name, value.strip('"'), path="/") return browser
def test_post_data(self): # TEMPORARY test. Make sure we can post data. app = SampleApp() self.layer.getRootFolder()['app'] = app browser = Browser() browser.post("http://localhost/app/@@foo", "x=1&y=2") assert browser.contents == ( "Hi from SampleAppView, VARS: [(u'x', u'1'), (u'y', u'2')]")
def test_index_returns_empty_body(self): # if we deliver normal data we will return with an empty doc. receiver = PayPalIPNReceiver() receiver.validation_url = '' self.layer.getRootFolder()['app'] = receiver browser = Browser() browser.open('http://localhost/app/@@index') assert browser.contents == ''
def test_index_returns_200_Ok(self): # if we deliver normal data we will get a 200 Ok. receiver = PayPalIPNReceiver() receiver.validation_url = '' self.layer.getRootFolder()['app'] = receiver browser = Browser() browser.open('http://localhost/app/@@index') assert browser.headers.get("status") == "200 Ok"
def test_index_is_default_view(self): # the index view is called by default. receiver = ModifiedReceiver() receiver.validation_url = '' self.layer.getRootFolder()['app'] = receiver browser = Browser() # we do not give a view name here. browser.post("http://localhost/app", "got_it=1") assert receiver.call_args == 'got_it=1'
def test_index_calls_store_notification(self): # the index view informs the receiver. receiver = ModifiedReceiver() receiver.validation_url = '' self.layer.getRootFolder()['app'] = receiver browser = Browser() browser.post("http://localhost/app/@@index", "y=1&x=2") assert receiver.call_args == 'y=1&x=2' browser.post("http://localhost/app/@@index", "x=1&y=2") assert receiver.call_args == 'x=1&y=2'
def test_can_set_content_type(self): # TEMPORARY test. We can set the content type of a post request. app = SampleApp() self.layer.getRootFolder()['app'] = app browser = Browser() browser.handleErrors = False browser.post("http://localhost/app/@@bar", "x=1&y=2", "application/x-javascript") assert browser.contents == ("INPUT: x=1&y=2 " "CONTENT-TYPE application/x-javascript")
def test_can_access_post_data_line(self): # TEMPORARY test. We can access the body line with the post data. app = SampleApp() self.layer.getRootFolder()['app'] = app browser = Browser() browser.handleErrors = False browser.post("http://localhost/app/@@bar", "x=1&y=2") assert browser.contents == ( "INPUT: x=1&y=2 " "CONTENT-TYPE application/x-www-form-urlencoded") browser.post("http://localhost/app/@@bar", "y=1&x=2") assert browser.contents == ( "INPUT: y=1&x=2 " "CONTENT-TYPE application/x-www-form-urlencoded")
def test_notify_view_validation_valid(self): # we can get successful validations with notify receiver = PayPalIPNReceiver() receiver.validation_url = self.layer.server.url root = self.layer.getRootFolder() root['app'] = receiver browser = Browser() browser.post('http://localhost/app/@@index', 'x=2') sent_body = self.layer.server.last_request_body assert browser.headers.get("status") == "200 Ok" assert sent_body == 'cmd=_notify-validate&x=2' assert len(list(receiver.keys())) == 1 notification = receiver[receiver.keys()[0]] assert notification.final_verdict == u'VERIFIED'
def browser(app): """ A ``zope.testbrowser.wsgi.Browser`` instance for integration testing. """ return Browser('http://localhost/', wsgi_app=app.wsgi_app)
def setUp(self): """Method called by nose before running each test""" clean_db_and_bootstrap() self.browser = Browser('http://localhost/', wsgi_app=app.wsgi_app)
from zope.testbrowser.ftests.wsgitestapp import WSGITestApplication from zope.testbrowser.wsgi import Browser wsgi_app = WSGITestApplication() browser = Browser('http://localhost/@@/testbrowser/simple.html', wsgi_app=wsgi_app) print(browser.url)
def test_bla(self): browser = Browser()
def setup_browser(self, frontend): self.browser = Browser('http://localhost/', wsgi_app=frontend.wsgi_app)