mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
1) Replace the deprecated unit test method. 2) Wraps filter usage in a list call. 3) Converts the old metaclass syntax to new. 4) Use range instead of xrange method. 5) Change Unicode to str. 6) Several other transformations. 7) Fixed change password test cases. 8) Use simplejson instead of plain JSON.
131 lines
5.0 KiB
Python
131 lines
5.0 KiB
Python
##########################################################################
|
|
#
|
|
# pgAdmin 4 - PostgreSQL Tools
|
|
#
|
|
# Copyright (C) 2013 - 2020, The pgAdmin Development Team
|
|
# This software is released under the PostgreSQL Licence
|
|
#
|
|
##########################################################################
|
|
|
|
import json
|
|
import uuid
|
|
|
|
from pgadmin.utils.route import BaseTestGenerator
|
|
from regression.python_test_utils import test_utils
|
|
from regression.test_setup import config_data
|
|
from . import utils
|
|
|
|
|
|
class ChangePasswordTestCase(BaseTestGenerator):
|
|
"""
|
|
This class validates the change password functionality
|
|
by defining change password scenarios; where dict of
|
|
parameters describes the scenario appended by test name.
|
|
"""
|
|
|
|
scenarios = [
|
|
# This testcase validates invalid confirmation password
|
|
('TestCase for Validating Incorrect_New_Password', dict(
|
|
password=(
|
|
config_data['pgAdmin4_login_credentials']
|
|
['login_password']),
|
|
new_password=(
|
|
config_data['pgAdmin4_login_credentials']
|
|
['new_password']),
|
|
new_password_confirm=str(uuid.uuid4())[4:8],
|
|
respdata='Passwords do not match')),
|
|
|
|
# This testcase validates if confirmation password is less than
|
|
# minimum length
|
|
('TestCase for Validating New_Password_Less_Than_Min_Length',
|
|
[dict(password=(
|
|
config_data['pgAdmin4_login_credentials']['login_password']),
|
|
new_password=new_password,
|
|
new_password_confirm=new_password,
|
|
respdata='Password must be at least 8 characters')
|
|
for new_password in [str(uuid.uuid4())[4:8]]][0]),
|
|
|
|
# This testcase validates if both password fields are left blank
|
|
('TestCase for Validating Empty_New_Password', dict(
|
|
password=(
|
|
config_data['pgAdmin4_login_credentials']
|
|
['login_password']),
|
|
new_password='', new_password_confirm='',
|
|
respdata='Password not provided')),
|
|
|
|
# This testcase validates if current entered password is incorrect
|
|
('TestCase for Validating Incorrect_Current_Password', dict(
|
|
password=str(uuid.uuid4())[4:8],
|
|
new_password=(
|
|
config_data['pgAdmin4_login_credentials']
|
|
['new_password']),
|
|
new_password_confirm=(
|
|
config_data['pgAdmin4_login_credentials']
|
|
['new_password']),
|
|
respdata='Invalid password')),
|
|
|
|
# This test case checks for valid password
|
|
('TestCase for Changing Valid_Password', dict(
|
|
valid_password='reassigning_password',
|
|
username=(
|
|
config_data['pgAdmin4_test_user_credentials']
|
|
['login_username']),
|
|
password=(
|
|
config_data['pgAdmin4_test_user_credentials']
|
|
['login_password']),
|
|
new_password=(
|
|
config_data['pgAdmin4_test_user_credentials']
|
|
['new_password']),
|
|
new_password_confirm=(
|
|
config_data['pgAdmin4_test_user_credentials']
|
|
['new_password']),
|
|
respdata='You successfully changed your password.'))
|
|
]
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
pass
|
|
|
|
def runTest(self):
|
|
"""This function will check change password functionality."""
|
|
|
|
# Check for 'valid_password' exists in self to test 'valid password'
|
|
# test case
|
|
if 'valid_password' in dir(self):
|
|
response = self.tester.post(
|
|
'/user_management/user/',
|
|
data=json.dumps(dict(
|
|
username=self.username,
|
|
email=self.username,
|
|
newPassword=self.password,
|
|
confirmPassword=self.password,
|
|
active=True,
|
|
role="2"
|
|
)),
|
|
follow_redirects=True
|
|
)
|
|
user_id = json.loads(response.data.decode('utf-8'))['id']
|
|
# Logout the Administrator before login normal user
|
|
self.tester.logout()
|
|
response = self.tester.login(self.username, self.password, True)
|
|
self.assertEqual(response.status_code, 200)
|
|
# test the 'change password' test case
|
|
utils.change_password(self)
|
|
# Delete the normal user after changing it's password
|
|
self.tester.logout()
|
|
# Login the Administrator before deleting normal user
|
|
test_utils.login_tester_account(self.tester)
|
|
response = self.tester.delete(
|
|
'/user_management/user/' + str(user_id),
|
|
follow_redirects=True
|
|
)
|
|
self.assertEqual(response.status_code, 200)
|
|
else:
|
|
utils.change_password(self)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
# Make sure - we're already logged out before running
|
|
cls.tester.logout()
|
|
test_utils.login_tester_account(cls.tester)
|