mirror of
git://git.psyced.org/git/pypsyc
synced 2024-08-15 03:20:04 +00:00
added new pypsyc as 'mjacob2'
This commit is contained in:
parent
0abc7a0888
commit
9f7c4147c7
46 changed files with 7243 additions and 0 deletions
139
mjacob2/tests/test_server/test_webif/test_webif.py
Normal file
139
mjacob2/tests/test_server/test_webif/test_webif.py
Normal file
|
@ -0,0 +1,139 @@
|
|||
"""
|
||||
:copyright: 2010 by Manuel Jacob
|
||||
:license: MIT
|
||||
"""
|
||||
from mock import Mock, sentinel
|
||||
from nose.tools import assert_raises
|
||||
from tests.constants import USER1, USER1_NICK, PASSWORD
|
||||
from tests.helpers import mockified, PlaceHolder
|
||||
|
||||
from pypsyc.server import webif
|
||||
from pypsyc.server.db import Database
|
||||
from pypsyc.server.webif import app, PersistentStore, run_webif
|
||||
|
||||
|
||||
class TestViews(object):
|
||||
@classmethod
|
||||
def setup_class(cls):
|
||||
app.secret_key = 'testing key'
|
||||
|
||||
def setup(self):
|
||||
self.server = webif.server = Mock()
|
||||
self.server.root.children = {}
|
||||
self.client = app.test_client()
|
||||
|
||||
def test_index(self):
|
||||
rv = self.client.get('/')
|
||||
assert 'register' in rv.data
|
||||
|
||||
def _register(self, username, password, password2):
|
||||
return self.client.post('/register', data=dict(
|
||||
username=username, password=password, password2=password2
|
||||
), follow_redirects=True)
|
||||
|
||||
def test_register_get(self):
|
||||
rv = self.client.get('/register')
|
||||
assert 'Username' in rv.data
|
||||
assert 'Register' in rv.data
|
||||
|
||||
def test_register_post(self):
|
||||
rv = self._register(USER1_NICK, PASSWORD, PASSWORD)
|
||||
assert 'you were registered' in rv.data
|
||||
assert self.server.method_calls == [
|
||||
('register_person', (USER1_NICK, PASSWORD))]
|
||||
|
||||
def test_register_nousername(self):
|
||||
rv = self._register('', '', '')
|
||||
assert 'please specify a valid username' in rv.data
|
||||
|
||||
def test_register_username_inuse(self):
|
||||
self.server.root.children = {USER1: True}
|
||||
|
||||
rv = self._register(USER1_NICK, '', '')
|
||||
assert 'username already in use' in rv.data
|
||||
|
||||
def test_register_nopassword(self):
|
||||
rv = self._register(USER1_NICK, '', '')
|
||||
assert 'your password must have at least 6 characters' in rv.data
|
||||
|
||||
def test_register_shortpassword(self):
|
||||
rv = self._register(USER1_NICK, 'passw', 'passw')
|
||||
assert 'your password must have at least 6 characters' in rv.data
|
||||
|
||||
def test_register_unmatching_passwords(self):
|
||||
rv = self._register(USER1_NICK, PASSWORD, 'password2')
|
||||
assert 'the two passwords do not match' in rv.data
|
||||
|
||||
|
||||
def test_persistent_store():
|
||||
webif.server = Mock()
|
||||
webif.server.database = Database(':memory:')
|
||||
|
||||
store = PersistentStore()
|
||||
assert_raises(KeyError, store.__getitem__, 'key')
|
||||
assert dict(store) == {}
|
||||
assert len(store) == 0
|
||||
|
||||
store['key'] = 'value'
|
||||
assert store['key'] == 'value'
|
||||
assert len(store) == 1
|
||||
|
||||
store['key'] = 'value2'
|
||||
assert dict(store) == {'key': 'value2'}
|
||||
assert len(store) == 1
|
||||
|
||||
del store['key']
|
||||
assert dict(store) == {}
|
||||
assert len(store) == 0
|
||||
|
||||
|
||||
@mockified('pypsyc.server.webif', ['PersistentStore', 'urandom',
|
||||
'WSGIResource', 'Site', 'reactor',
|
||||
'greenlet'])
|
||||
def test_run_webif_ssl(PersistentStore, urandom, WSGIResource, Site, reactor,
|
||||
greenlet):
|
||||
store = PersistentStore.return_value = {'secret_key': 'key1'*5}
|
||||
reactor_ph = PlaceHolder()
|
||||
threadpool_ph = PlaceHolder()
|
||||
wsgi_resource = WSGIResource.return_value
|
||||
site = Site.return_value
|
||||
|
||||
run_webif(sentinel.server, sentinel.interface, sentinel.port,
|
||||
sentinel.context_factory)
|
||||
assert webif.server == sentinel.server
|
||||
assert PersistentStore.call_args_list == [()]
|
||||
assert webif.store == store
|
||||
assert app.secret_key == 'key1'*5
|
||||
assert not urandom.called
|
||||
assert WSGIResource.call_args_list == [
|
||||
((reactor_ph, threadpool_ph, app.wsgi_app),)]
|
||||
assert Site.call_args_list == [((wsgi_resource,),)]
|
||||
assert reactor.method_calls == [
|
||||
('listenSSL', (sentinel.port, site, sentinel.context_factory),
|
||||
{'interface': sentinel.interface})]
|
||||
|
||||
func = Mock()
|
||||
reactor_ph.obj.callFromThread(func, sentinel.a, b=sentinel.b)
|
||||
assert func.call_args_list == [((sentinel.a,), {'b': sentinel.b})]
|
||||
|
||||
threadpool_ph.obj.callInThread(sentinel.func, sentinel.a, b=sentinel.b)
|
||||
assert greenlet.call_args_list == [((sentinel.func,),)]
|
||||
assert greenlet.return_value.method_calls == [
|
||||
('switch', (sentinel.a,), {'b': sentinel.b})]
|
||||
|
||||
|
||||
@mockified('pypsyc.server.webif', ['PersistentStore', 'urandom',
|
||||
'WSGIResource', 'Site', 'reactor'])
|
||||
def test_run_webif_tcp(PersistentStore, urandom, WSGIResource, Site, reactor):
|
||||
store = PersistentStore.return_value = {}
|
||||
rand = urandom.return_value = 'key2'*5
|
||||
wsgi_resource = WSGIResource.return_value
|
||||
site = Site.return_value
|
||||
|
||||
run_webif(sentinel.server, sentinel.interface, sentinel.port, None)
|
||||
assert urandom.call_args_list == [((20,),)]
|
||||
assert app.secret_key == rand
|
||||
assert store['secret_key'] == rand
|
||||
assert Site.call_args_list == [((wsgi_resource,),)]
|
||||
assert reactor.method_calls == [
|
||||
('listenTCP', (sentinel.port, site), {'interface': 'localhost'})]
|
Loading…
Add table
Add a link
Reference in a new issue