mirror of
https://github.com/jazzband/django-ddp.git
synced 2026-03-16 22:40:24 +00:00
93 lines
2.4 KiB
Python
93 lines
2.4 KiB
Python
"""Django DDP Accounts test suite."""
|
|
from __future__ import unicode_literals
|
|
|
|
import sys
|
|
from dddp import tests
|
|
from django.contrib.auth import get_user_model
|
|
|
|
|
|
# gevent-websocket doesn't work with Python 3 yet
|
|
@tests.expected_failure_if(sys.version_info.major == 3)
|
|
class AccountsTestCase(tests.DDPServerTestCase):
|
|
|
|
def test_login_no_accounts(self):
|
|
sockjs = self.server.sockjs('/sockjs/1/a/websocket')
|
|
|
|
resp = sockjs.websocket.recv()
|
|
self.assertEqual(resp, 'o')
|
|
|
|
msgs = sockjs.recv()
|
|
self.assertEqual(
|
|
msgs, [
|
|
{'server_id': '0'},
|
|
],
|
|
)
|
|
|
|
sockjs.connect('1', 'pre2', 'pre1')
|
|
msgs = sockjs.recv()
|
|
self.assertEqual(
|
|
msgs, [
|
|
{'msg': 'connected', 'session': msgs[0]['session']},
|
|
],
|
|
)
|
|
|
|
id_ = sockjs.call(
|
|
'login', {'user': 'invalid@example.com', 'password': 'foo'},
|
|
)
|
|
msgs = sockjs.recv()
|
|
self.assertEqual(
|
|
msgs, [
|
|
{
|
|
'msg': 'result', 'id': id_,
|
|
'error': {
|
|
'error': 403, 'reason': 'Authentication failed.',
|
|
},
|
|
},
|
|
],
|
|
)
|
|
|
|
sockjs.close()
|
|
|
|
def test_login_new_account(self):
|
|
User = get_user_model()
|
|
new_user = User.objects.create_user(
|
|
'user@example.com', 's3cre7-pa55w0rd!',
|
|
)
|
|
sockjs = self.server.sockjs('/sockjs/1/a/websocket')
|
|
|
|
resp = sockjs.websocket.recv()
|
|
self.assertEqual(resp, 'o')
|
|
|
|
msgs = sockjs.recv()
|
|
self.assertEqual(
|
|
msgs, [
|
|
{'server_id': '0'},
|
|
],
|
|
)
|
|
|
|
sockjs.connect('1', 'pre2', 'pre1')
|
|
msgs = sockjs.recv()
|
|
self.assertEqual(
|
|
msgs, [
|
|
{'msg': 'connected', 'session': msgs[0]['session']},
|
|
],
|
|
)
|
|
|
|
id_ = sockjs.call(
|
|
'login', {
|
|
'user': 'user@example.com', 'password': 's3cre7-pa55w0rd!',
|
|
},
|
|
)
|
|
msgs = sockjs.recv()
|
|
self.assertEqual(
|
|
msgs, [
|
|
{
|
|
'msg': 'result', 'id': id_,
|
|
'error': {
|
|
'error': 403, 'reason': 'Authentication failed.',
|
|
},
|
|
},
|
|
],
|
|
)
|
|
|
|
sockjs.close()
|