def test_get_users(self): user_server.init_db('test_data.sql') response = self.app.get('/users', content_type='application/json') self.assertEqual(response._status_code, 200) users = json.loads(response.data) self.assertEqual(len(users['users']), 3) for user in users['users']: self.assertEqual(len(user.keys()), 4) self.assertIn('name', user.keys()) self.assertIn('email', user.keys()) self.assertIn('uri', user.keys()) self.assertIn('id', user.keys())
def get_user_m(self, name=False): user_server.init_db('test_data.sql') uri = name and '/users/Hansi' or '/users/4' response = self.app.get(uri, content_type='application/json') self.assertEqual(response._status_code, 404) uri = name and '/users/Hans%20Huber' or '/users/1' response = self.app.get(uri, content_type='application/json') self.assertEqual(response._status_code, 200) user = json.loads(response.data)['user'] self.assertEqual(len(user.keys()), 4) self.assertIn('name', user.keys()) self.assertIn('email', user.keys()) self.assertIn('uri', user.keys()) self.assertIn('id', user.keys())
def test_init_db(self): user_server.init_db('test_data.sql') with closing(sqlite3.connect( user_server.app.config['DATABASE'])) as db: row = db.cursor().execute( 'SELECT sql FROM SQLITE_MASTER WHERE type="table" and name="users"') self.assertEqual(row.fetchone()[0], u'CREATE TABLE users (\n ' 'id integer PRIMARY KEY autoincrement,\n name string UNIQUE ' 'NOT NULL,\n email string NOT NULL,\n password ' 'string NOT NULL\n)') row = db.cursor().execute( 'SELECT sql FROM SQLITE_MASTER WHERE type="index" and ' 'name="name_index"') self.assertEqual(row.fetchone()[0], u'CREATE UNIQUE INDEX name_index ' 'ON users (name)')
def update_user_m(self, method, name=False): user_server.init_db('test_data.sql') uri = name and '/users/Hans%20Huber' or '/users/1' response = method(uri, data='{"password": "******"name": None, "email": "*****@*****.**", "password": "******" } ), content_type='application/json' ) self.assertEqual(response._status_code, 400) response = method(uri, data=json.dumps( { "name": "", "email": "*****@*****.**", "password": "******" } ), content_type='application/json' ) self.assertEqual(response._status_code, 400) response = method(uri, data=json.dumps( { "name": "Hans Huber", "email": "hanshu@exampl", "password": "******" } ), content_type='application/json' ) self.assertEqual(response._status_code, 400) response = method(uri, data=json.dumps( { "name": "Hans Huber", "email": "*****@*****.**", "password": "******" } ), content_type='application/json' ) self.assertEqual(response._status_code, 400) response = method(uri, data=json.dumps( { "name": "Hans Huber", "email": "*****@*****.**", "password": "******" } ), content_type='application/json' ) self.assertEqual(response._status_code, 200) self.assertIn('*****@*****.**', response.data) self.assertIn('Hans Huber', response.data) self.assertNotIn('password', response.data) response = method(uri, data=json.dumps( { "name": "Hansi", "email": "*****@*****.**", "password": "******" } ), content_type='application/json' ) self.assertEqual(response._status_code, 200) self.assertIn('*****@*****.**', response.data) self.assertIn('Hansi', response.data) uri = name and '/users/Hansi' or '/users/1' response = method(uri, data=json.dumps( { "password": "******" } ), content_type='application/json' ) self.assertEqual(response._status_code, 200) self.assertIn('Hansi', response.data) self.assertIn('*****@*****.**', response.data) with closing(sqlite3.connect( user_server.app.config['DATABASE'])) as db: cursor = db.cursor().execute('SELECT password FROM users WHERE id=1') row = cursor.fetchone() self.assertEqual(row[0], '1042e9c6b7770c5a8d73d7274bb1e787') uri = name and '/users/Hans Huber' or '/users/4' response = method(uri, data=json.dumps( { "name": "Hans Huber", "email": "*****@*****.**", "password": "******" } ), content_type='application/json' ) self.assertEqual(response._status_code, 404)
def setUp(self): self.db_file, user_server.app.config['DATABASE'] = tempfile.mkstemp() user_server.app.config['TESTING'] = True self.app = user_server.app.test_client() user_server.init_db()