horizon/openstack_auth/tests/unit/test_password.py
Radomir Dopieralski dbaca46d0f Add a unit test for the password change form
Change-Id: I5eeacefc3a0bd7d7f958f00befeb18e949c789db
2022-02-14 13:51:55 -06:00

86 lines
2.7 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from unittest import mock
from django import test
from openstack_auth import forms
from openstack_auth.tests.unit.test_auth import IsA
class ChangePasswordTests(test.TestCase):
@test.override_settings(
ALLOW_USERS_CHANGE_EXPIRED_PASSWORD=True,
AVAILABLE_REGIONS=[
("x", 'region1'),
("y", 'region2'),
], # we need at least two regions for the choice field to be visible
)
def test_change_password(self):
form_data = {
'region': '0',
'original_password': 'oldpwd',
'password': 'normalpwd',
'confirm_password': 'normalpwd',
}
initial = {
'user_id': 'user',
'region': '0',
}
form = forms.Password(form_data, initial=initial)
client = mock.Mock()
with mock.patch(
'openstack_auth.utils.get_session',
return_value=mock.sentinel.session
) as mock_get_session:
with mock.patch(
'openstack_auth.utils.get_keystone_client',
return_value=client
) as mock_get_keystone_client:
form.is_valid()
self.assertFalse(form.errors)
mock_get_session.assert_called_once_with(auth=IsA(forms.DummyAuth))
mock_get_keystone_client.assert_called_once_with()
client.Client.assert_called_once_with(
session=mock.sentinel.session,
user_id='user',
auth_url='x',
endpoint='x',
)
@test.override_settings(
AVAILABLE_REGIONS=[
("x", 'region1'),
("y", 'region2'),
],
)
def test_change_password_with_error(self):
form_data = {
'region': '0',
'original_password': 'oldpwd',
'password': 'normalpwd',
'confirm_password': 'normalpwd1',
}
initial = {
'user_id': 'user',
'region': '0',
}
form = forms.Password(form_data, initial=initial)
self.assertTrue(form.errors)
self.assertIn(['Passwords do not match.'], form.errors.values())