##// END OF EJS Templates
integrations: refactor/cleanup + features, fixes #4181...
integrations: refactor/cleanup + features, fixes #4181 * added scopes on integrations, scopes are: - repo only - repogroup children only - root repos only - global (any repo) * integrations schemas now have separate section for the settings (eg. slack) and options (eg. scope/enabled) * added descriptions to integration types * added icons to integration types * added 'create new' integration page * added scope of integration to integrations list * added breadcrumbs for each repo/repogroup/global integrations pages * added sorting to integrations list * added pagination to integrations list * added icons to integrations list * added type filter to integrations list * added message to integrations list if none we found * added extra permissions check on integrations views * db migration from 56 => 57 - adds child_repos_only field * added tests for integrations triggered on events * added tests for integrations schemas * added tests for integrations views for repo/repogroup/admin

File last commit:

r665:a92da8f2 default
r731:7a6d3636 default
Show More
test_user_schema.py
72 lines | 3.0 KiB | text/x-python | PythonLexer
# -*- coding: utf-8 -*-
# Copyright (C) 2016-2016 RhodeCode GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
import colander
import pytest
from rhodecode.model import validation_schema
from rhodecode.model.validation_schema.schemas import user_schema
class TestChangePasswordSchema(object):
original_password = 'm092d903fnio0m'
def test_deserialize_bad_data(self, user_regular):
schema = user_schema.ChangePasswordSchema().bind(
username=user_regular.username)
with pytest.raises(validation_schema.Invalid) as exc_info:
schema.deserialize('err')
err = exc_info.value.asdict()
assert err[''] == '"err" is not a mapping type: ' \
'Does not implement dict-like functionality.'
def test_validate_valid_change_password_data(self, user_util):
user = user_util.create_user(password=self.original_password)
schema = user_schema.ChangePasswordSchema().bind(
username=user.username)
schema.deserialize({
'current_password': self.original_password,
'new_password': '23jf04rm04imr'
})
@pytest.mark.parametrize(
'current_password,new_password,key,message', [
('', 'abcdef123', 'current_password', 'required'),
('wrong_pw', 'abcdef123', 'current_password', 'incorrect'),
(original_password, original_password, 'new_password', 'different'),
(original_password, '', 'new_password', 'Required'),
(original_password, 'short', 'new_password', 'minimum'),
])
def test_validate_invalid_change_password_data(self, current_password,
new_password, key, message,
user_util):
user = user_util.create_user(password=self.original_password)
schema = user_schema.ChangePasswordSchema().bind(
username=user.username)
with pytest.raises(validation_schema.Invalid) as exc_info:
schema.deserialize({
'current_password': current_password,
'new_password': new_password
})
err = exc_info.value.asdict()
assert message.lower() in err[key].lower()