Mercurial > kallithea
changeset 3809:647fb653048e beta
make the password optional in API calls
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 06 May 2013 23:35:29 +0200 |
parents | 2feb58495f34 |
children | 13b7e04af99b |
files | docs/api/api.rst rhodecode/controllers/api/api.py rhodecode/model/user.py rhodecode/tests/api/api_base.py |
diffstat | 4 files changed, 26 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/docs/api/api.rst Mon May 06 16:34:02 2013 +0200 +++ b/docs/api/api.rst Mon May 06 23:35:29 2013 +0200 @@ -212,13 +212,13 @@ OUTPUT:: id : <id_given_in_input> - result : { + result : { "repo": "<reponame>", "locked": "<bool true|false>", "locked_since": "<float lock_time>", "locked_by": "<username>", "msg": "User `<username>` set lock state for repo `<reponame>` to `<false|true>`" - } + } error : null @@ -354,7 +354,7 @@ args : { "username" : "<username>", "email" : "<useremail>", - "password" : "<password>", + "password" : "<password = Optional(None)>", "firstname" : "<firstname> = Optional(None)", "lastname" : "<lastname> = Optional(None)", "active" : "<bool> = Optional(True)",
--- a/rhodecode/controllers/api/api.py Mon May 06 16:34:02 2013 +0200 +++ b/rhodecode/controllers/api/api.py Mon May 06 23:35:29 2013 +0200 @@ -407,7 +407,7 @@ return result @HasPermissionAllDecorator('hg.admin') - def create_user(self, apiuser, username, email, password, + def create_user(self, apiuser, username, email, password=Optional(None), firstname=Optional(None), lastname=Optional(None), active=Optional(True), admin=Optional(False), ldap_dn=Optional(None)):
--- a/rhodecode/model/user.py Mon May 06 16:34:02 2013 +0200 +++ b/rhodecode/model/user.py Mon May 06 23:35:29 2013 +0200 @@ -133,7 +133,7 @@ new_user.admin = admin # set password only if creating an user or password is changed if not edit or user.password != password: - new_user.password = get_crypt_password(password) + new_user.password = get_crypt_password(password) if password else None new_user.api_key = generate_api_key(username) new_user.email = email new_user.active = active
--- a/rhodecode/tests/api/api_base.py Mon May 06 16:34:02 2013 +0200 +++ b/rhodecode/tests/api/api_base.py Mon May 06 23:35:29 2013 +0200 @@ -477,6 +477,27 @@ UserModel().delete(usr.user_id) Session().commit() + def test_api_create_user_without_password(self): + username = 'test_new_api_user_passwordless' + email = username + "@foo.com" + + id_, params = _build_data(self.apikey, 'create_user', + username=username, + email=email) + response = api_call(self, params) + + usr = UserModel().get_by_username(username) + ret = dict( + msg='created new user `%s`' % username, + user=jsonify(usr.get_api_data()) + ) + + expected = ret + self._compare_ok(id_, expected, given=response.body) + + UserModel().delete(usr.user_id) + Session().commit() + @mock.patch.object(UserModel, 'create_or_update', crash) def test_api_create_user_when_exception_happened(self):