server/users: first user becomes an admin
This commit is contained in:
parent
2d8b657559
commit
ee28d95537
|
@ -61,7 +61,7 @@ class UserListApi(BaseApi):
|
||||||
|
|
||||||
if users.get_by_name(context.session, name):
|
if users.get_by_name(context.session, name):
|
||||||
raise errors.IntegrityError('User %r already exists.' % name)
|
raise errors.IntegrityError('User %r already exists.' % name)
|
||||||
user = users.create_user(name, password, email)
|
user = users.create_user(context.session, name, password, email)
|
||||||
context.session.add(user)
|
context.session.add(user)
|
||||||
context.session.commit()
|
context.session.commit()
|
||||||
return {'user': _serialize_user(context.user, user)}
|
return {'user': _serialize_user(context.user, user)}
|
||||||
|
|
|
@ -84,7 +84,7 @@ class TestCreatingUser(DatabaseTestCase):
|
||||||
util.mock_context(self)
|
util.mock_context(self)
|
||||||
self.context.user.rank = 'anonymous'
|
self.context.user.rank = 'anonymous'
|
||||||
|
|
||||||
def test_creating_valid_user(self):
|
def test_first_user_becomes_admin(self):
|
||||||
self.context.request = {
|
self.context.request = {
|
||||||
'name': 'chewie',
|
'name': 'chewie',
|
||||||
'email': 'asd@asd.asd',
|
'email': 'asd@asd.asd',
|
||||||
|
@ -94,6 +94,22 @@ class TestCreatingUser(DatabaseTestCase):
|
||||||
created_user = self.session.query(db.User).filter_by(name='chewie').one()
|
created_user = self.session.query(db.User).filter_by(name='chewie').one()
|
||||||
self.assertEqual(created_user.name, 'chewie')
|
self.assertEqual(created_user.name, 'chewie')
|
||||||
self.assertEqual(created_user.email, 'asd@asd.asd')
|
self.assertEqual(created_user.email, 'asd@asd.asd')
|
||||||
|
self.assertEqual(created_user.rank, 'admin')
|
||||||
|
self.assertTrue(auth.is_valid_password(created_user, 'oks'))
|
||||||
|
self.assertFalse(auth.is_valid_password(created_user, 'invalid'))
|
||||||
|
|
||||||
|
def test_subsequent_users_are_created_normally(self):
|
||||||
|
self.context.request = {
|
||||||
|
'name': 'chewie',
|
||||||
|
'email': 'asd@asd.asd',
|
||||||
|
'password': 'oks',
|
||||||
|
}
|
||||||
|
self.api.post(self.context)
|
||||||
|
self.context.request['name'] = 'chewie2'
|
||||||
|
self.api.post(self.context)
|
||||||
|
created_user = self.session.query(db.User).filter_by(name='chewie2').one()
|
||||||
|
self.assertEqual(created_user.name, 'chewie2')
|
||||||
|
self.assertEqual(created_user.email, 'asd@asd.asd')
|
||||||
self.assertEqual(created_user.rank, 'regular_user')
|
self.assertEqual(created_user.rank, 'regular_user')
|
||||||
self.assertTrue(auth.is_valid_password(created_user, 'oks'))
|
self.assertTrue(auth.is_valid_password(created_user, 'oks'))
|
||||||
self.assertFalse(auth.is_valid_password(created_user, 'invalid'))
|
self.assertFalse(auth.is_valid_password(created_user, 'invalid'))
|
||||||
|
|
|
@ -4,13 +4,16 @@ from sqlalchemy import func
|
||||||
from szurubooru import config, db, errors
|
from szurubooru import config, db, errors
|
||||||
from szurubooru.util import auth, misc
|
from szurubooru.util import auth, misc
|
||||||
|
|
||||||
def create_user(name, password, email):
|
def create_user(session, name, password, email):
|
||||||
''' Create an user with given parameters and returns it. '''
|
''' Create an user with given parameters and returns it. '''
|
||||||
user = db.User()
|
user = db.User()
|
||||||
update_name(user, name)
|
update_name(user, name)
|
||||||
update_password(user, password)
|
update_password(user, password)
|
||||||
update_email(user, email)
|
update_email(user, email)
|
||||||
user.rank = config.config['default_rank']
|
if not session.query(db.User).count():
|
||||||
|
user.rank = config.config['ranks'][-1]
|
||||||
|
else:
|
||||||
|
user.rank = config.config['default_rank']
|
||||||
user.creation_time = datetime.now()
|
user.creation_time = datetime.now()
|
||||||
user.avatar_style = db.User.AVATAR_GRAVATAR
|
user.avatar_style = db.User.AVATAR_GRAVATAR
|
||||||
return user
|
return user
|
||||||
|
|
Loading…
Reference in New Issue