#!/usr/bin/env python # -*- encoding: utf-8 -*- import unittest import json from luncho import server from luncho.server import User from base import LunchoTests class TestToken(LunchoTests): """Test token requests.""" def setUp(self): # leave the database blank to make it in memory super(TestToken, self).setUp() # add a user self.test_user = User(username='test', fullname='Testing user', passhash='hash') server.db.session.add(self.test_user) server.db.session.commit() def tearDown(self): super(TestToken, self).tearDown() def test_create_token(self): """Test requesting a token""" request = {'username': 'test', 'password': 'hash'} rv = self.app.post('/token/', data=json.dumps(request), content_type='application/json') self.assertJsonOk(rv) response = json.loads(rv.data) self.assertTrue('token' in response) # we can't check the token itself 'cause it should change every day def test_reget_token(self): """Check if getting the token twice will produce the same token.""" request = {'username': 'test', 'password': 'hash'} rv = self.app.post('/token/', data=json.dumps(request), content_type='application/json') self.assertJsonOk(rv) response = json.loads(rv.data) # re-request the token rv = self.app.post('/token/', data=json.dumps(request), content_type='application/json') self.assertJsonOk(rv) self.assertEqual(response['token'], json.loads(rv.data)['token']) def test_no_such_user(self): """Check the result of getting a token for a user that doesn't exist.""" request = {'username': 'username', 'password': 'hash'} rv = self.app.post('/token/', data=json.dumps(request), content_type='application/json') self.assertJsonError(rv, 404, 'User does not exist') def test_wrong_password(self): """Try to log with the wrong password.""" request = {'username': 'test', 'password': 'nothing'} rv = self.app.post('/token/', data=json.dumps(request), content_type='application/json') self.assertJsonError(rv, 401, 'Invalid password') if __name__ == '__main__': unittest.main()