class Test_009_UpdateUser_updateUserName: baseURL = ReadConfig.get_CM_UI_Users() logger = LogGen.loggen() @pytest.mark.regression @pytest.mark.test_portal @pytest.mark.updateuser def test_UpdateUser_updateUserName_009(self, setup): self.logger.info( "**************** Test_009 :: Test UpdateUser when user Try to Update 'UserName' ****************" ) self.logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164254?projectId=50" ) print( "**************** Test_009 :: Test UpdateUser when user Try to Update 'UserName' ****************" ) print( "Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164254?projectId=50" ) self.driver = setup self.driver.get(self.baseURL) self.login = admin_central_login(self.driver) self.login.admin_login() self.user = users(self.driver) self.user.select_users_Link() self.user.select_edit_button() self.user.send_userName_update() try: self.user.select_edit_button() except Exception: self.user.capture_screenshot() self.user.select_edit_button() self.driver.quit()
def test_getRole_API_002(): logger = LogGen.loggen() cmurl = ReadConfig.cm_for_decryption() smurl = ReadConfig.sm() com = common() headers = com.headers() logger.info( "**************** Test_002: Test getRole when user sends - Invalid Body ****************" ) logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164278?projectId=50" ) print( "**************** Test_002: Test getRole when user sends - Invalid Body ****************" ) print( "Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164278?projectId=50" ) body = {"userRoleName": ""} b = com.encrypt(body) resp = requests.post(smurl + '/getRole', headers=headers, data=json.dumps(b, indent=4)) resp_text = resp.text d = json.loads(resp_text) message = d["status_message"] msg = json.loads(message) decrypt = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(msg, indent=4)) decrypted_text = decrypt.text e = json.loads(decrypted_text) status = e.get('status') assert status == 'failed' print("\n Decrypted text is ::\n", e)
class Test_033_roleName_RegEx: baseURL = ReadConfig.get_CM_UI_Roles() logger = LogGen.loggen() @pytest.mark.regression @pytest.mark.test_portal @pytest.mark.createrole def test_roleName_RegEx_033(self,setup): self.logger.info("**************** Test_033: test Role name RegEx ****************") print( "In Description : TestCase_033: test Role name RegEx") self.logger.info("https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164224?projectId=50") print("https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164224?projectId=50") self.driver=setup self.driver.get(self.baseURL) self.login = admin_central_login(self.driver) self.login.admin_login() self.RolesList = roles(self.driver) self.RolesList.select_roles() time.sleep(3) self.RolesList.verify_AdminCentral_RolesList_header() self.RolesList.select_add_role_button() self.RolesList.select_system_from_dropdown() creating_role = self.RolesList.send_Random_RoleName() self.RolesList.select_Random_roles_checkboxes() self.RolesList.select_save_button() self.RolesList.search_toastify(creating_role) self.RolesList.verify_cm_ui_positive(creating_role) com = Common_role_portal() com.verify_roles_from_sm_with_api(creating_role) try: self.RolesList.select_add_role_button() except Exception: self.RolesList.capture_screenshot() self.RolesList.select_add_role_button() self.driver.quit()
def test_createUser_userName_HTML_012(): logger = LogGen.loggen() com = common_createUser_api() logger.info( "**************** Test_012: Test CreateUser when user sends - HTML ****************" ) print("In Description :Test_012: Test CreateUser when user sends - HTML") logger.info( "Jama Link :: https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164308?projectId=50" ) print( "Jama Link :: https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164308?projectId=50" ) # Body user = username_field_validations() userName = user.username_html() file_body = readFiles() body = file_body.create_user_body() body['userName'] = userName com.create_user_negative(body, userName) com.verify_users_from_sm_with_api(userName)
def test_updateUser_middleInitial_apartFrom_RegEx_017(): logger = LogGen.loggen() com = common_updateUser_api() logger.info( "**************** Test_017: Test updateUser when user sends - middleInitial apart from RegEx ****************" ) logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164311?projectId=50" ) print( "**************** Test_017: Test updateUser when user sends - middleInitial apart from RegEx ****************" ) print( "Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164311?projectId=50" ) # Body list = com.getUsersList() userName = random.choice(list) print("Updating user ::", userName) list = { ".", "!", "@", "=", "$", "%", "^", "&", "*", "~", ":", ";", "/", "/", "?", "]", "[", "|" } for i in list: print("Trying to update middle initial as ::", i) file = open("./tests_admin/testCases/update_user_api.json", 'r') body = json.loads(file.read()) body['userName'] = userName body['middleInitial'] = i com.update_user_negative(body, userName) com.verify_updated_user_from_sm_with_api(userName)
def test_createUser_email_254Characters_050(): logger = LogGen.loggen() com = common_createUser_api() logger.info( "**************** Test_050: Test CreateUser when user sends - email 254 characters ****************") print("In Description :Test_050: Test CreateUser when user sends - email 254 characters ") logger.info( "Jama Link :: https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164308?projectId=50") print("Jama Link :: https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164308?projectId=50") user = username_field_validations() userName = user.username_regex() file_body = readFiles() body = file_body.create_user_body() body['emailAddress'] = "*****@*****.**" body['userName'] = userName com.create_user_positive(body, userName) com.verify_users_from_sm_with_api(userName) e = com.verify_user_options(userName) assert e['userName'] == userName assert e['firstName'] == 'v' assert e['middleInitial'] == 'i' assert e['lastName'] == 'j' assert e['emailAddress'] == '*****@*****.**' assert e['telephoneNumber'] == '23' assert e['extension'] == '5309' assert e['password'] == 'Password123' assert e['userRoleName'] == 'Operator' assert e['deactivated'] == False assert e['hidden'] == False assert e['isADUser'] == True print("All the options are matched with the request")
class Test_008_DeleteRole_SelectDelete_and_x: baseURL = ReadConfig.get_CM_UI_Roles() logger = LogGen.loggen() @pytest.mark.regression @pytest.mark.test_portal @pytest.mark.deleterole def test_selectDelete_and_x_008(self, setup): self.logger.info( "**************** Test_008 :Test DeleteRole when user Click 'Delete' button and cross(x) button. ****************" ) self.logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164245?projectId=50" ) print( "**************** Test_008 :Test DeleteRole when user Click 'Delete' button and cross(x) button. ****************" ) print( "Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164245?projectId=50" ) self.driver = setup self.driver.get(self.baseURL) self.RolesList = roles(self.driver) self.RolesList.select_delete_role_button()
class Test_010_UpdateRole_Select_Deselect_Random_Options: baseURL = ReadConfig.get_CM_UI_Roles() logger = LogGen.loggen() @pytest.mark.regression @pytest.mark.test_portal @pytest.mark.updaterole def test_updateRole_select_deselect_random_options_010(self, setup): self.logger.info( "**************** Test_010 : Test UpdateRole when user - select and deselect the random options. ****************" ) self.logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164242?projectId=50" ) print( "**************** Test_010 : Test UpdateRole when user - select and deselect the random options. ****************" ) print( "Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164242?projectId=50" ) self.driver = setup self.driver.get(self.baseURL) self.login = admin_central_login(self.driver) self.login.admin_login() self.RolesList = roles(self.driver) self.RolesList.select_roles() time.sleep(10) self.RolesList.verify_AdminCentral_RolesList_header() self.RolesList.select_edit_role_button() self.RolesList.select_Random_roles_checkboxes() self.RolesList.select_save_button() time.sleep(2) self.RolesList.search_toastify_edit_success() self.driver.close()
def test_updateUser_telephone_beginAndEnd_WithSpace_034(): logger = LogGen.loggen() com = common_updateUser_api() logger.info("**************** Test_034: Test updateUser when user sends - telephone begin with space ****************") logger.info("https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164311?projectId=50") print("**************** Test_034: Test updateUser when user sends - telephone begin with space ****************") print("Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164311?projectId=50") # Body list = com.getUsersList() userName = random.choice(list) print("Updating user ::", userName) x = Xeger(limit=20) telephone = com.telephone_RegEx() telephoneNumber=" "+x.xeger(telephone)+" " file = open("./tests_admin/testCases/update_user_api.json", 'r') body = json.loads(file.read()) body['userName'] = userName body['telephoneNumber'] = telephoneNumber com.update_user_negative(body, userName) com.verify_updated_user_from_sm_with_api(userName)
def test(): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ######### get list ############### logger.info('------- get list -------') r = http.request( method='GET', url=url_sm_ui+'roles/get_list', fields={}, retries=False, timeout=timeout) logger.info('response is type {}'.format(type(r))) logger.info('headers is type {}'.format(type(r.headers))) logger.info('status is type {}'.format(type(r.status))) logger.info('data is type {}'.format(type(r.data))) logger.info('r.headers = {}'.format(r.headers)) logger.info('r.status = {}'.format(r.status)) logger.info('r.data = {}'.format(r.data)) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) print("Values from SM_UI ::", data) logger.info('------- work with the response data --------') for key,value in data.items(): logger.info("{} {}".format(key,value)) logger.info('there are {}'.format(len(data))) logger.info('------- test done --------')
class Test_006_Select_cross_x_button: baseURL = ReadConfig.get_CM_UI_Roles() logger = LogGen.loggen() @pytest.mark.regression @pytest.mark.test_portal @pytest.mark.createrole def test_cross_x_button_006(self, setup): self.logger.info( "**************** Test_006: Test CreateRole when userClick ADD button and select cross(*) button ****************" ) print( "In Description : TestCase_006: Test CreateRole when userClick ADD button and select cross(*) button." ) self.logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164224?projectId=50" ) print( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164224?projectId=50" ) self.driver = setup self.driver.get(self.baseURL) self.login = admin_central_login(self.driver) self.login.admin_login() self.RolesList = roles(self.driver) self.RolesList.select_roles() time.sleep(3) self.RolesList.verify_AdminCentral_RolesList_header() self.RolesList.select_add_role_button() self.RolesList.select_closeSymbol_mark() try: self.RolesList.select_add_role_button() except Exception: self.RolesList.capture_screenshot() self.RolesList.select_add_role_button() self.driver.quit()
class Test_005_Select_cross_x_button: baseURL = ReadConfig.get_CM_UI_Users() logger = LogGen.loggen() @pytest.mark.regression @pytest.mark.test_portal @pytest.mark.createuser def test_cross_x_button_005(self, setup): self.logger.info( "**************** Test_005: Test CreateUser when userClick ADD button and select cross(*) button ****************" ) self.logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164248?projectId=50" ) print( "**************** Test_005: Test CreateUser when userClick ADD button and select cross(*) button ****************" ) print( "Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164248?projectId=50" ) self.driver = setup self.driver.get(self.baseURL) self.login = admin_central_login(self.driver) self.login.admin_login() self.User = users(self.driver) self.User.select_add_button() self.User.select_close_x() try: self.User.select_add_button() except Exception: self.User.capture_screenshot() self.User.verify_error() self.User.select_add_button() self.driver.quit()
def test_roleName_leadingSpaces_015(): logger = LogGen.loggen() logger.info( "**************** IN Description: TestCase_015: Test CreateRole when user sends - 'userRoleName' with values :: leadingSpaces ****************" ) print( "In Description :Testcase_015: Test CreateRole when user sends - userRoleName with values :: leadingSpaces" ) logger.info( "Jama link: https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164299?projectId=50" ) print( "Jama link: https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164299?projectId=50" ) com = Common_role_api() role = userRoleName_field_validations() roleName = role.userRolename_leading_spaces() files = readFiles() body = files.create_role_body() body['userRoleName'] = roleName com.create_role_positive(body, roleName) com.verify_roles_from_sm_with_api(roleName) e = com.verify_roleName_options(roleName) assert e['userRoleName'] == roleName assert e['createMethod'] == True assert e['editMethod'] == True assert e['deleteMethod'] == True assert e['createActionAlertLevel'] == True assert e['editActionAlertLevel'] == True assert e['deleteActionAlertLevel'] == True assert e['createHandlingRule'] == True assert e['editHandlingRule'] == True assert e['deleteHandlingRule'] == True assert e['createSample'] == False assert e['editSample'] == False assert e['deleteSample'] == False assert e['createProduct'] == False assert e['editProduct'] == False assert e['deleteProduct'] == False assert e['createUser'] == False assert e['editUser'] == False assert e['deleteUser'] == False assert e['createUserRole'] == False assert e['editUserRole'] == False assert e['deleteUserRole'] == False assert e['cancelCassettes'] == True assert e['retrieveCassettes'] == True assert e['approveCassettes'] == True assert e['cleanupCassettes'] == True assert e['orderTests'] == True assert e['loadTests'] == True assert e['printProductLabels'] == True assert e['administerGD'] == False assert e['editSettings'] == False assert e['maintenance'] == False assert e['acknowledgeSystemAlarms'] == True assert e['acknowledgeSystemErrors'] == True assert e['acknowledgeSystemServiceIssues'] == True assert e['editAlarmNotifications'] == False assert e['emptyTrash'] == True assert e['service'] == False assert e['editITSettings'] == False assert e['editLimsSettings'] == False assert e['printLimsLabels'] == False assert e['modifyLimsRequest'] == False assert e['editLimsTestResultsFields'] == False assert e['sendSystemLogs'] == True print("All the options are verified and match with the request")
def update_user_in_sm_ui(self, username): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ########### create ##################### # username = "******" + datetime.now().strftime('%y%m%d%H%M%S%f') role_name = 'Operator' logger.info('------- update user {} with role {}'.format( username, role_name)) letters = string.ascii_lowercase first = ''.join(random.choice(letters) for i in range(6)) middle = ''.join(random.choice(letters)) last = ''.join(random.choice(letters) for i in range(6)) email = uuid.uuid4().hex.upper()[0:6] + r'@rapidmicrobio.com' password = r'BlahBlah123@' phone = '123-456-7890' extension = '123' role = 'Operator' body_raw = { 'first': first, 'middle': middle, 'last': last, 'username': username, 'email': email, 'password': password, 'phone': phone, 'extension': extension, 'role_name': role_name } body_encoded = json.dumps(body_raw).encode('utf-8') r = http.request(method='POST', url=url_sm_ui + 'users/create_user', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status {} {}".format( r.status, r.data) ############ update ######################3 role_name = 'Administrator' logger.info('------- update user {} to role {}'.format( username, role_name)) letters = string.ascii_lowercase first = ''.join(random.choice(letters) for i in range(6)) middle = ''.join(random.choice(letters)) last = ''.join(random.choice(letters) for i in range(6)) email = uuid.uuid4().hex.upper()[0:6] + r'@rapidmicrobio.com' password = r'Foofoo123@' phone = '456-789-0123' extension = '456' body_raw = { 'first': first, 'middle': middle, 'last': last, 'username': username, 'email': email, 'password': password, 'phone': phone, 'extension': extension, 'role_name': role_name } body_encoded = json.dumps(body_raw).encode('utf-8') logger.info('------- issue the command -------') r = http.request(method='POST', url=url_sm_ui + 'users/update_user', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status {} {}".format( r.status, r.data) ######### get/check user ############### logger.info('------- get/check user -------') fields = { 'user_name': username, } r = http.request(method='GET', url=url_sm_ui + 'users/get_user', fields=fields, retries=False, timeout=timeout) logger.info('response is type {}'.format(type(r))) logger.info('headers is type {}'.format(type(r.headers))) logger.info('status is type {}'.format(type(r.status))) logger.info('data is type {}'.format(type(r.data))) logger.info('r.headers = {}'.format(r.headers)) logger.info('r.status = {}'.format(r.status)) # logger.info('r.data = {}'.format(r.data)) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) logger.info('------- work with the response data --------') for key, value in data.items(): logger.info("{} {}".format(key, value)) logger.info('there are {}'.format(len(data))) assert data['first'] == first assert data['middle'] == middle assert data['last'] == last assert data['username'] == username assert data['email'] == email assert data['phone'] == phone assert data['extension'] == extension # zona not implemented assert data['role'] = role assert data['privs_get']['methods_create'] == 1 assert data['privs_get']['methods_edit'] == 1 assert data['privs_get']['methods_delete'] == 1 assert data['privs_get']['aa_create'] == 1 assert data['privs_get']['aa_edit'] == 1 assert data['privs_get']['aa_delete'] == 1 logger.info('------- test done --------')
class Common_sm_ui(): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() def create_role_in_sm_ui(self, role_name): timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ######### create role ############### # role_name = "test_" + datetime.now().strftime('%y%m%d%H%M%S%f') print("Creating Role from SM GDSystem UI is ::", role_name) self.logger.info( '------- create role with privs alternating one/zero {}'.format( role_name)) body_raw = { 'name': role_name, 'privs_set': { 'methods_create': '1', 'methods_edit': '0', 'methods_delete': '1', 'aa_create': '0', 'aa_edit': '1', 'aa_delete': '0' } } body_encoded = json.dumps(body_raw).encode('utf-8') r = http.request(method='POST', url=self.url_sm_ui + 'roles/create_role', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) ######### get/check ############### self.logger.info('------- get/check role -------') name = "Administrator" fields = { 'name': role_name, } r = http.request(method='GET', url=self.url_sm_ui + 'roles/get_role', fields=fields, retries=False, timeout=timeout) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) assert data['privs_get']['methods_create'] == 1 assert data['privs_get']['methods_edit'] == 0 assert data['privs_get']['methods_delete'] == 1 assert data['privs_get']['aa_create'] == 0 assert data['privs_get']['aa_edit'] == 1 assert data['privs_get']['aa_delete'] == 0 self.logger.info('------- test done --------') def verify_role_in_sm_ui(self, roleName): timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ######### get list ############### self.logger.info('------- get list -------') r = http.request(method='GET', url=self.url_sm_ui + 'roles/get_list', fields={}, retries=False, timeout=timeout) self.logger.info('response is type {}'.format(type(r))) self.logger.info('headers is type {}'.format(type(r.headers))) self.logger.info('status is type {}'.format(type(r.status))) self.logger.info('data is type {}'.format(type(r.data))) self.logger.info('r.headers = {}'.format(r.headers)) self.logger.info('r.status = {}'.format(r.status)) self.logger.info('r.data = {}'.format(r.data)) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) # print("Values from SM_UI ::", data) self.logger.info('------- work with the response data --------') list = [] for key, value in data.items(): self.logger.info("{} {}".format(key, value)) list.append(key) self.logger.info('there are {}'.format(len(data))) assert list.__contains__(roleName) == True print("\n Created Role present in the SM(checking from SM_UI) ::::", roleName) self.logger.info('------- test done --------') def verify_updated_role_in_sm_UI(self, a): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() http = urllib3.PoolManager() ######### get role ############### logger.info('------- get role -------') name = a fields = {'name': name} r = http.request( method='GET', url=url_sm_ui + 'roles/get_role', fields=fields, retries=False, timeout=120.0, ) logger.info('response is type {}'.format(type(r))) logger.info('headers is type {}'.format(type(r.headers))) logger.info('status is type {}'.format(type(r.status))) logger.info('data is type {}'.format(type(r.data))) logger.info('r.headers = {}'.format(r.headers)) logger.info('r.status = {}'.format(r.status)) logger.info('r.data = {}'.format(r.data)) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) logger.info('------- work with the response data --------') for key, value in data.items(): logger.info("{} {}".format(key, value)) logger.info('there are {}'.format(len(data))) assert data['methods_create'] == 1 assert data['methods_edit'] == 1 assert data['methods_delete'] == 1 assert data['aa_create'] == 1 assert data['aa_edit'] == 1 assert data['aa_delete'] == 1 logger.info('------- test done --------') def update_role_in_sm_ui(self, role_name): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ############## update ############ logger.info( '------- update some privs in that role {}'.format(role_name)) body_raw = { 'name': role_name, 'privs_set': { 'methods_create': '1', 'methods_edit': '0', # 'methods_delete': '1', 'aa_create': '1', 'aa_edit': '0', # 'aa_delete': '0' } } body_encoded = json.dumps(body_raw).encode('utf-8') r = http.request(method='POST', url=url_sm_ui + 'roles/update_role', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status" ######### get/check ############### logger.info('------- get/check role -------') fields = { 'name': role_name, } r = http.request(method='GET', url=url_sm_ui + 'roles/get_role', fields=fields, retries=False, timeout=timeout) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) assert data['privs_get']['methods_create'] == 1 assert data['privs_get']['methods_edit'] == 0 assert data['privs_get']['methods_delete'] == 1 assert data['privs_get']['aa_create'] == 1 assert data['privs_get']['aa_edit'] == 0 assert data['privs_get']['aa_delete'] == 0 logger.info('------- test done --------') def create_user_in_sm_ui(self, username): timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ######### create ######################## # username = "******" + datetime.now().strftime('%y%m%d%H%M%S%f') role_name = 'Operator' self.logger.info('------- create user {} with role {}'.format( username, role_name)) letters = string.ascii_lowercase first = ''.join(random.choice(letters) for i in range(6)) middle = ''.join(random.choice(letters)) last = ''.join(random.choice(letters) for i in range(6)) email = uuid.uuid4().hex.upper()[0:6] + r'@rapidmicrobio.com' password = r'BlahBlah123@' phone = '123-456-7890' extension = '123' role = 'Operator' body_raw = { 'first': first, 'middle': middle, 'last': last, 'username': username, 'email': email, 'password': password, 'phone': phone, 'extension': extension, 'role_name': role_name } body_encoded = json.dumps(body_raw).encode('utf-8') r = http.request( method='POST', url=self.url_sm_ui + 'users/create_user', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout, ) assert r.status == 200, "response has bad status {} {}".format( r.status, r.data) ######### get/check user ############### self.logger.info('------- get/check user -------') fields = { 'user_name': username, } r = http.request( method='GET', url=self.url_sm_ui + 'users/get_user', fields=fields, retries=False, timeout=timeout, ) self.logger.info('response is type {}'.format(type(r))) self.logger.info('headers is type {}'.format(type(r.headers))) self.logger.info('status is type {}'.format(type(r.status))) self.logger.info('data is type {}'.format(type(r.data))) self.logger.info('r.headers = {}'.format(r.headers)) self.logger.info('r.status = {}'.format(r.status)) # logger.info('r.data = {}'.format(r.data)) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) self.logger.info('------- work with the response data --------') for key, value in data.items(): self.logger.info("{} {}".format(key, value)) self.logger.info('there are {}'.format(len(data))) assert data['first'] == first assert data['middle'] == middle assert data['last'] == last assert data['username'] == username assert data['email'] == email assert data['phone'] == phone assert data['extension'] == extension # zona not implemented assert data['role'] = role assert data['privs_get']['methods_create'] == 0 assert data['privs_get']['methods_edit'] == 0 assert data['privs_get']['methods_delete'] == 0 assert data['privs_get']['aa_create'] == 0 assert data['privs_get']['aa_edit'] == 0 assert data['privs_get']['aa_delete'] == 0 self.logger.info('------- test done --------') def verify_user_in_sm_ui(self, name): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ######### get user ############### logger.info('------- get user -------') # name = "Administrator" fields = { 'user_name': name, } r = http.request( method='GET', url=url_sm_ui + 'users/get_user', fields=fields, retries=False, timeout=timeout, ) logger.info('response is type {}'.format(type(r))) logger.info('headers is type {}'.format(type(r.headers))) logger.info('status is type {}'.format(type(r.status))) logger.info('data is type {}'.format(type(r.data))) logger.info('r.headers = {}'.format(r.headers)) logger.info('r.status = {}'.format(r.status)) logger.info('r.data = {}'.format(r.data)) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) logger.info('------- work with the response data --------') for key, value in data.items(): logger.info("{} {}".format(key, value)) logger.info('there are {}'.format(len(data))) assert data['privs_get']['methods_create'] == 1 assert data['privs_get']['methods_edit'] == 1 assert data['privs_get']['methods_delete'] == 1 assert data['privs_get']['aa_create'] == 1 assert data['privs_get']['aa_edit'] == 1 assert data['privs_get']['aa_delete'] == 1 logger.info('------- test done --------') def update_user_in_sm_ui(self, username): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ########### create ##################### # username = "******" + datetime.now().strftime('%y%m%d%H%M%S%f') role_name = 'Operator' logger.info('------- update user {} with role {}'.format( username, role_name)) letters = string.ascii_lowercase first = ''.join(random.choice(letters) for i in range(6)) middle = ''.join(random.choice(letters)) last = ''.join(random.choice(letters) for i in range(6)) email = uuid.uuid4().hex.upper()[0:6] + r'@rapidmicrobio.com' password = r'BlahBlah123@' phone = '123-456-7890' extension = '123' role = 'Operator' body_raw = { 'first': first, 'middle': middle, 'last': last, 'username': username, 'email': email, 'password': password, 'phone': phone, 'extension': extension, 'role_name': role_name } body_encoded = json.dumps(body_raw).encode('utf-8') r = http.request(method='POST', url=url_sm_ui + 'users/create_user', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status {} {}".format( r.status, r.data) ############ update ######################3 role_name = 'Administrator' logger.info('------- update user {} to role {}'.format( username, role_name)) letters = string.ascii_lowercase first = ''.join(random.choice(letters) for i in range(6)) middle = ''.join(random.choice(letters)) last = ''.join(random.choice(letters) for i in range(6)) email = uuid.uuid4().hex.upper()[0:6] + r'@rapidmicrobio.com' password = r'Foofoo123@' phone = '456-789-0123' extension = '456' body_raw = { 'first': first, 'middle': middle, 'last': last, 'username': username, 'email': email, 'password': password, 'phone': phone, 'extension': extension, 'role_name': role_name } body_encoded = json.dumps(body_raw).encode('utf-8') logger.info('------- issue the command -------') r = http.request(method='POST', url=url_sm_ui + 'users/update_user', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status {} {}".format( r.status, r.data) ######### get/check user ############### logger.info('------- get/check user -------') fields = { 'user_name': username, } r = http.request(method='GET', url=url_sm_ui + 'users/get_user', fields=fields, retries=False, timeout=timeout) logger.info('response is type {}'.format(type(r))) logger.info('headers is type {}'.format(type(r.headers))) logger.info('status is type {}'.format(type(r.status))) logger.info('data is type {}'.format(type(r.data))) logger.info('r.headers = {}'.format(r.headers)) logger.info('r.status = {}'.format(r.status)) # logger.info('r.data = {}'.format(r.data)) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) logger.info('------- work with the response data --------') for key, value in data.items(): logger.info("{} {}".format(key, value)) logger.info('there are {}'.format(len(data))) assert data['first'] == first assert data['middle'] == middle assert data['last'] == last assert data['username'] == username assert data['email'] == email assert data['phone'] == phone assert data['extension'] == extension # zona not implemented assert data['role'] = role assert data['privs_get']['methods_create'] == 1 assert data['privs_get']['methods_edit'] == 1 assert data['privs_get']['methods_delete'] == 1 assert data['privs_get']['aa_create'] == 1 assert data['privs_get']['aa_edit'] == 1 assert data['privs_get']['aa_delete'] == 1 logger.info('------- test done --------')
class roles: logger = LogGen.loggen() # links lnk_Roles_linktext = "Roles" #Buttons button_Add_xpath = "//*[text() ='Add']" button_AddRole_popup_Save_xpath = "//button[contains(text(),'Save')]" button_AddRole_popup_Delete_classname = "btn-danger btn btn-primary" button_DeleteAll_xpath = "//button[@class='btn btn-danger ml-2 searchClass']" button_EDIT_xpath = "//*[contains(text(),'Edit')]" button_Delete_xpath = "//*[text()='Delete']" button_deleteRole_popup_ok_xpath = "//*[text()='Ok']" button_closeSymbol_xpath = "//*[text()='×']" button_close_xpath = "//*[text()='Close']" button_edit_administrator_xpath = "//*[text() = 'Administrator']//following::button[1]" #tittle tittle_Admincentral_roleList_screen_xpath = "//*[text() = 'Admin Central - Role List']" tittle_AddRole_popup_xpath = "//*[text()='Add Role']" tittle_editRole_popup_xpath = "//*[text()='Edit Role']" tittle_deleteRole_popup_xpath = "//*[text()='Delete Role']" #Textbox textbox_userRoleName_ID = "userRoleName" #Checkbox checkbox_selectAll_ID = "selectAll" checkboxes_xpath = "//*[@class='form-check-label']" checkbox = "//label[contains(text(),'Create Method')]" #Dropdown option_none_xpath = "//option[contains(text(),'None')]" list_options_xpath = "//select[@name='systemIP']" system = ReadConfig.system() # dropdown_system_xpath = "//option[contains(text(),'"+system+"')]" dropdown_system_xpath = "option[contains(text(), 'E02215134')]" dropdown_not_selectable = "//*[@class = 'form-control userRoleNameDisabled' and @name='systemIP']" #Toast toastify_xpath = "//div[contains(text(),'Failed')]" success_failure_tostify_xpath = "//*[@class='Toastify__toast-body']" #Default administrator_xpath = " " fieldservice_xpath = "//*[text()='FieldService']" operator_xpath = "//*[text()='Operator']" #Errors error_xpath = "//div[contains(text(),'*Please enter')]" initial_username_error_xpath = "//*[contains(text(),'*Please enter your username.')]" username_error_xpath = "//*[contains(text(),'*Please enter alphabet characters only.')]" firstname_error_xpath = "//*[contains(text(),'*Please enter your first name.')]" middleinitial_error_xpath = "//*[contains(text(),'*Please enter your middle initial.')]" lastname_error_xpath = "//*[contains(text(),'*Please enter your last name.')]" email_error_xpath = "//*[contains(text(),'*Please enter valid email-ID.')]" telephone_error_xpath = "//*[contains(text(),'*Please enter valid mobile no.')]" password_error_xpath = "//*[@id='password']/following-sibling::div" confirmpassword_error_xpath = "//*[@id='confirmPassword']/following-sibling::div" #Other usernames_xpath = "//*[@class='userNameColumn']" logout_xpath = "//*[text()='Logout']" select_ok_xpath = "//*[text()='Ok']" all_add_role_cm_options_classname = "rolesDetails" elements_rolelist_xpath = "//div[@class='d-flex header']//input | //div[@class='d-flex header']//button" elements_header_menus_xpath = "//button[@class='toggle-button']|//img|//div[@class='toolbar_navigation-items']//a" all_links_xpath = "//*[@class='toolbar_navigation-items']//a" checkbox_system_Log_xpath = "//input[@id='sendSystemLogs']" table_header_name_xpath = "//*[text()='Name']" #Place Holder name_placeholder_xpath = "//*[@placeholder='roleName']" def __init__(self, driver): self.driver = driver def select_roles(self): wait = WebDriverWait(self.driver, 10) element = wait.until( EC.visibility_of_element_located((By.LINK_TEXT, "Roles"))) self.driver.find_element_by_link_text(self.lnk_Roles_linktext).click() print("Role button selected") self.logger.info( "**************** Roles button Selected ****************") # try: # time.sleep(2) # wait = WebDriverWait(self.driver, 10) # element = wait.until(EC.visibility_of_element_located((By.XPATH, "//*[contains(text(),'Edit')]"))) # self.driver.find_element_by_xpath(self.button_EDIT_xpath) # print("Users and roles are displayed") # self.logger.info("**************** Roles are displayed ****************") # except Exception: # print("Users and roles are not displayed") # self.capture_screenshot() # a = "abc" # assert a == "b" def verify_AdminCentral_RolesList_header(self): header = self.driver.find_element_by_xpath( self.tittle_Admincentral_roleList_screen_xpath).text assert header == 'Admin Central - Role List' print("adminCentral_RolesList_header validated") self.logger.info( "**************** adminCentral_RolesList_header validated ****************" ) def select_add_role_button(self): # try: # wait = WebDriverWait(self.driver, 10) # element = wait.until(EC.element_to_be_clickable((By.XPATH,"//*[contains(text(),'Edit')]" ))) # self.driver.find_element_by_xpath(self.button_EDIT_xpath) # except Exception: # print("Users and roles are not displayed") # print("Please verify SM machine is in ON state and connected") # self.logger.info("**************** Roles are not displayed ****************") # allure.attach(self.driver.get_screenshot_as_png(), name="", # attachment_type=AttachmentType.PNG) # self.capture_screenshot() # self.driver.quit() # status = 'fail' # assert status == 'Failed' self.driver.find_element_by_xpath(self.button_Add_xpath).click() addrole_header = self.driver.find_element_by_xpath( self.tittle_AddRole_popup_xpath).text assert addrole_header == "Add Role" print("add role button clicked") self.logger.info( "**************** add role button clicked ****************") def name_placeholder(self): placeholder = self.driver.find_element_by_xpath( self.name_placeholder_xpath).text assert placeholder == "roleName" def add_role_header(self): addrole_header = self.driver.find_element_by_xpath( self.tittle_AddRole_popup_xpath).text assert addrole_header == "Add Role" def verify_all_the_text_in_addrole_popup(self): entire_text = self.driver.find_element_by_class_name( "modal-content").text # print("Text from addrole popup is ::", entire_text) # my_file = open("./tests_admin/testCases/addRolePopupScreenText.txt", "w") # my_file.write(entire_text) # my_file = open("./tests_admin/testCases/addRolePopupScreenText.txt") # content = my_file.read() file = open("./tests_admin/testCases/addRolePopupScreenText.txt", 'r') body = file.readline() # print("Data from text file ::", body assert entire_text.__contains__(body) print("All the Text in 'add_role screen' is displayed as expected") def verify_all_the_text_in_editrole_popup(self): entire_text = self.driver.find_element_by_class_name( "modal-content").text # print("Text from addrole popup is ::", entire_text) # my_file = open("./tests_admin/testCases/EditRolePopupScreenText.txt", "w") # my_file.write(entire_text) # my_file = open("./tests_admin/testCases/addRolePopupScreenText.txt") # content = my_file.read() file = open("./tests_admin/testCases/EditRolePopupScreenText.txt", 'r') body = file.readline() # print("Data from text file ::", body assert entire_text.__contains__(body) print("All the Text in 'Edit_role screen' is displayed as expected") def total_checkboxes(self): checkboxes = self.driver.find_elements_by_xpath(self.checkboxes_xpath) list = [] for i in checkboxes: data = i.text list.append(data) print("Checkboxes are :::", list) def verify_default_status_of_checkboxes(self): checkboxes = self.driver.find_elements_by_xpath(self.checkboxes_xpath) for i in checkboxes: data = i.text if i.is_selected(): print(data, " :::: checkbox is selected/checked ") else: print(data, "::: check box is not selected/checked") def verify_checkbox_status(self, checkbox): option = '//label[contains(text(),"' + checkbox + '")]' print("Option is::", option) status = self.driver.find_element_by_xpath(option) if not status.is_selected(): print("checkbox is not selected/checked ") else: print("check box is selected/checked") def total_checkboxes_size(self): checkboxes = self.driver.find_elements_by_xpath(self.checkboxes_xpath) list = [] for i in checkboxes: data = i.text list.append(data) print("Checkboxes are :::", len(list)) return len(list) def select_single_checkbox_option_each_time(self): checkboxes = self.driver.find_elements_by_xpath(self.checkboxes_xpath) list = [] for i in checkboxes: data = i.text list.append(data) # print("All the options are ::", list) return list # list.append(data) # print("Checkboxes are :::", list) def send_Random_RoleName(self): from xeger import Xeger x = Xeger(limit=34) y = x.xeger("^[a-zA-Z]*$") if y == "": z = x.xeger("^[a-zA-Z]*$") time.sleep(1) self.driver.find_element_by_id( self.textbox_userRoleName_ID).send_keys(z) return z else: time.sleep(1) self.driver.find_element_by_id( self.textbox_userRoleName_ID).send_keys(y) print("Entered text in the 'Name' textbox is ::" + y) self.logger.info( "**************** Role name entered ****************") return y def send_existing_role_as_roleName(self): com = Common_role_api() headers = com.headers() url = ReadConfig.sm() cmurl = ReadConfig.cm_for_decryption() r = requests.get(url + "/getRoles", headers=headers) data = r.json() # print("Data from SM::\n", r.json()) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(data, indent=4)) roles = resp1.json() # print("Roles are ::", roles) # extracting data in json format list = [] for item in roles: userroles = item.get('userRoleName') list.append(userroles) a = random.choice(list) self.driver.find_element_by_id( self.textbox_userRoleName_ID).send_keys(a) print("Existing Role name entered") self.logger.info( "**************** Existing Role name entered ****************") def send_userrole_runtime(self, userrole): self.driver.find_element_by_id(self.textbox_userRoleName_ID).clear() self.driver.find_element_by_id( self.textbox_userRoleName_ID).send_keys(userrole) def select_default_roles(self): a = self.driver.find_element_by_xpath(self.administrator_xpath) b = self.driver.find_element_by_xpath(self.fieldservice_xpath) c = self.driver.find_element_by_xpath(self.operator_xpath) list = [a, b, c] b = random.choice(list) print("Selecting option ::", b) b.click() def select_system_from_dropdown(self): try: self.driver.find_element_by_xpath( self.dropdown_not_selectable).is_displayed() print("System selection - options not displayed") except Exception: self.driver.find_element_by_xpath( self.dropdown_system_xpath).click() print("System is selected from the dropdown") self.logger.info( "**************** system to be connected - is selected ****************" ) def system_options(self): try: option = self.driver.find_element_by_xpath( self.option_none_xpath).text assert option == "None" print("SM systems are not connected") except Exception: select_box = self.driver.find_element_by_name("systemIP") options = [ x for x in select_box.find_elements_by_tag_name("option") ] for element in options: print("systems connected is ::", element.get_attribute("value"), "-- Related Option is(system number)::", element.text) def select_Random_roles_checkboxes(self): # identifying the checkboxes with type attribute in a list checkboxes = self.driver.find_elements_by_class_name( 'form-check-label') list = random.sample(checkboxes, 5) rolesToUncheck = [] for i in list: data = i.text rolesToUncheck.append(data) print("Random options are ", rolesToUncheck) for checkbox in list: if not checkbox.is_selected(): checkbox.click() print("Random checkboxes selected") self.logger.info( "**************** Random checkboxes selected ****************") def selectAll_checkbox(self): checked = self.driver.execute_script( ("return document.getElementById('createActionAlertLevel').checked" )) if checked == False: self.driver.find_element_by_id(self.checkbox_selectAll_ID).click() print("SelectALL box - checked") self.logger.info( "**************** Checked Select_all checkbox ****************") def uncheck_selectAll_checkbox(self): checked = self.driver.execute_script( ("return document.getElementById('createActionAlertLevel').checked" )) if checked == True: self.driver.find_element_by_id(self.checkbox_selectAll_ID).click() print("SelectALL box - unchecked") def select_save_button(self): time.sleep(2) element = self.driver.find_element_by_xpath( "//button[contains(text(),'Save')]") print("Save button displayed") element.click() print("Save button selected") self.logger.info( "**************** Save button selected ****************") def get_error(self): errortext = self.driver.find_element_by_xpath(self.error_xpath).text print("Error is ", errortext) return errortext def select_closeSymbol_mark(self): self.driver.find_element_by_xpath( self.button_closeSymbol_xpath).click() print("CloseSymbol button clicked ") self.logger.info( "**************** closeSymbol button selected ****************") def select_close_button(self): self.driver.maximize_window() self.driver.find_element_by_xpath(self.button_close_xpath).click() element = self.driver.find_element_by_xpath(self.button_close_xpath) actions = ActionChains(self.driver) actions.move_to_element(element).perform() print("Close button clicked ") self.logger.info( "**************** close button selected ****************") def search_toastify_error(self): wait = WebDriverWait(self.driver, 3) element = wait.until( EC.element_to_be_clickable( (By.XPATH, "//div[contains(text(),'Error:')]"))) message = element.text print("error toast alert displayed\n", "Error ::::\n", message) self.logger.info( "**************** Error toast popup displayed ****************") return message def search_toastify(self, creating_role): time.sleep(3) try: role = self.driver.find_element_by_xpath("//*[contains(text(),'" + creating_role + "')]").text print("Received toast Pop_up is::", role) if role.__contains__('Success'): print("Role present in the CM UI") print(" :::success toast alert displayed ::::") self.logger.info( "**************** Success toast popup displayed ****************" ) else: allure.attach(self.driver.get_screenshot_as_png(), name="", attachment_type=AttachmentType.PNG) print(" :::Failure toast alert is dispalyed") except Exception: role_name_error = "//div[contains(text(),'*Please enter alphabet characters only.')]" error = self.driver.find_element_by_xpath(role_name_error).text print("Error displayed is ::", error) if error.__contains__('Please'): print(" ::::Error displayed ::::") allure.attach(self.driver.get_screenshot_as_png(), name="", attachment_type=AttachmentType.PNG) self.capture_screenshot() self.driver.quit() status = 'error' assert status == 'failed' def verify_username_error(self): role_name_error = "//div[contains(text(),'*Please enter alphabet characters only.')]" error = self.driver.find_element_by_xpath(role_name_error).text print("Error displayed is ::", error) if error.__contains__('Please'): print(" ::::Error displayed ::::") self.driver.quit() def verify_cm_ui_positive(self, creating_role): role_xpath = "//*[contains(text(),'" + creating_role + "')]" # Verifying toast popup role = self.driver.find_element_by_xpath(role_xpath).text print("Received toast Pop_up is::", role) if role.__contains__('Success'): print(" ::::success toast alert displayed ::::") self.logger.info( "**************** Success toast popup displayed ****************" ) else: print(" Failure toast alert displayed") allure.attach(self.driver.get_screenshot_as_png(), name="", attachment_type=AttachmentType.PNG) self.logger.info( "**************** Failure/Error toast popup displayed ****************" ) # print("Creating role is::::", creating_role) self.driver.close() time.sleep(10) # print("role_xpath is ::", role_xpath) # Verify role in CM UI role = self.driver.find_element_by_xpath(role_xpath).text print("Created role is ::", role) assert role.__contains__(creating_role) print("Role present in the CM UI") def verify_cm_ui_negative(self, creating_role): role_xpath = "//*[contains(text(),'" + creating_role + "')]" role = self.driver.find_element_by_xpath(role_xpath).text print("Received toast Pop_up is::", role) if role.__contains__('Success'): print(" ::::success toast alert displayed ::::") self.logger.info( "**************** Success toast popup displayed ****************" ) else: print(" Failure toast alert displayed") self.logger.info( "**************** Failure/Error toast popup displayed ****************" ) # print("Creating role is::::", creating_role) time.sleep(5) # print("role_xpath is ::", role_xpath) role = self.driver.find_element_by_xpath(role_xpath).text if role.__contains__(creating_role): print("Role not present in the CM UI") else: allure.attach(self.driver.get_screenshot_as_png(), name="", attachment_type=AttachmentType.PNG) print("Role not present in the CM UI") def search_toastify_edit_success(self): wait = WebDriverWait(self.driver, 3) element = wait.until( EC.element_to_be_clickable( (By.XPATH, "//div[contains(text(),'Edited')]"))) message = element.text print(" success toast alert displayed ::::", message) self.logger.info( "**************** Success toast popup displayed ****************" ) def select_deleteAll_button(self): self.driver.find_element_by_xpath(self.button_DeleteAll_xpath).click() print("DeleteAll button is selected") self.logger.info( "**************** Delete_all_button selected ****************") def select_edit_role_button(self): self.driver.find_element_by_xpath(self.button_EDIT_xpath).click() print("Edit button clicked") self.logger.info( "**************** Edit role button selected ****************") tittle_text = self.driver.find_element_by_xpath( self.tittle_editRole_popup_xpath).text assert tittle_text == "Edit Role" print("Edit role - tittle displayed ") print("Edit Role popup screen is displayed") self.logger.info( "**************** edit role popup displayed ****************") def select_only_administrator_edit_role_button(self): self.driver.find_element_by_xpath( self.button_edit_administrator_xpath).click() print("Administrator Edit button clicked") tittle_text = self.driver.find_element_by_xpath( self.tittle_editRole_popup_xpath).text assert tittle_text == "Edit Role" name = self.driver.find_element_by_id( self.textbox_userRoleName_ID).get_attribute('value') print("name ::", name) assert name == 'Administrator' return name def select_delete_role_button(self): time.sleep(2) delete_buttons = self.driver.find_elements_by_xpath( self.button_Delete_xpath) delete = random.choice(delete_buttons) delete.click() print("Delete role button selected") self.logger.info( "**************** Delete role button selected ****************") def select_ok_button_deleteRole_popup(self): self.driver.find_element_by_xpath( self.button_deleteRole_popup_ok_xpath).click() print("Delete role 'ok' button selected") self.logger.info( "**************** Delete role 'ok' button selected ****************" ) wait = WebDriverWait(self.driver, 3) element = wait.until( EC.element_to_be_clickable( (By.XPATH, "//*[@class='Toastify__toast-body']"))) message = element.text print("Toast alert displayed ::::", message) list = [ 'Failed to delete the Role Administrator Error', 'Failed to delete the Role Operator Error', 'Failed to delete the Role FieldService Error' ] if list.__contains__(message): print("Default roles can't be deleted") else: print("Role Deleted successfully") self.logger.info( "**************** Success toast popup displayed ****************" ) def capture_screenshot(self): now = datetime.now().strftime('%Y-%m-%d_%H-%M-%S') self.driver.save_screenshot('./Screenshots/screenshot-%s.png' % now) allure.attach(self.driver.get_screenshot_as_png(), name="", attachment_type=AttachmentType.PNG) self.logger.info( "**************** Screenshot captured ****************") print("Screenshot captured") def addRole_popup_tittle(self): popupscreen_tittle = self.driver.find_element_by_xpath( self.tittle_AddRole_popup_xpath).text return popupscreen_tittle def deleteAll_roles(self): url = ReadConfig.sm() r = requests.get(url + "/getRoles") # extracting data in json format list = [] for item in r.json(): userroles = item.get('userRoleName') list.append(userroles) print("Before deletion Roles are :::\n", list) for i in list: print("Deleting role :::", i) body = {'deletedBy': 1, 'userRoleName': i} url = ReadConfig.sm() r = requests.delete(url + "/deleteRole", data=json.dumps(body, indent=4)) url = ReadConfig.sm() r = requests.get(url + "/getRoles") # extracting data in json format list = [] for item in r.json(): userroles = item.get('userRoleName') list.append(userroles) print("After deletion Roles list :::", list) def verify_error(self): print("Verifying errors") # Testing UserName error try: self.driver.implicitly_wait(1) a = self.driver.find_element_by_xpath( self.initial_username_error_xpath).text print("Error Displayed :: a ") except Exception: pass try: b = self.driver.find_element_by_xpath( self.username_error_xpath).text print("UserName Error :: ", b) except Exception: pass # Testing firstName error try: c = self.driver.find_element_by_xpath( self.firstname_error_xpath).text print("FirstName Error :: ", c) except Exception: pass # Testing middleInitial try: d = self.driver.find_element_by_xpath( self.middleinitial_error_xpath).text print("MiddleInitial Error :: ", d) except Exception: pass # Testing lastName error try: e = self.driver.find_element_by_xpath( self.lastname_error_xpath).text print("lastname Error :: ", e) except Exception: pass # Testing email error try: f = self.driver.find_element_by_xpath(self.email_error_xpath).text print("Email Error :: ", f) except Exception: pass # Testing Telephone error try: g = self.driver.find_element_by_xpath( self.telephone_error_xpath).text print("telephone Error :: ", g) except Exception: pass # Testing Password error try: h = self.driver.find_element_by_xpath( self.password_error_xpath).text print("password Error :: ", h) except Exception: pass # Testing confirm_password try: i = self.driver.find_element_by_xpath( self.confirmpassword_error_xpath).text print("confirmPassword error ::", i) except Exception: pass def verify_Roles_in_SM(self): com = Common_role_api() headers = com.headers() url = ReadConfig.sm() cmurl = ReadConfig.cm_for_decryption() r = requests.get(url + "/getRoles", headers=headers) data = r.json() # print("Data from SM::\n", r.json()) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(data, indent=4)) roles = resp1.json() # print("Roles are ::", roles) # extracting data in json format list = [] for item in roles: userroles = item.get('userRoleName') list.append(userroles) # print("Roles are :::\n", list) return list def verify_roles_from_sm_UI(self, a): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() http = urllib3.PoolManager() ######### get role ############### logger.info('------- get role -------') name = "Administrator" fields = { 'name': name, } r = http.request( method='GET', url=url_sm_ui + 'roles/get_role', fields=fields, retries=False, timeout=120.0, ) logger.info('response is type {}'.format(type(r))) logger.info('headers is type {}'.format(type(r.headers))) logger.info('status is type {}'.format(type(r.status))) logger.info('data is type {}'.format(type(r.data))) logger.info('r.headers = {}'.format(r.headers)) logger.info('r.status = {}'.format(r.status)) logger.info('r.data = {}'.format(r.data)) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) logger.info('------- work with the response data --------') for key, value in data.items(): logger.info("{} {}".format(key, value)) logger.info('there are {}'.format(len(data))) assert data['methods_create'] == 1 assert data['methods_edit'] == 1 assert data['methods_delete'] == 1 assert data['aa_create'] == 1 assert data['aa_edit'] == 1 assert data['aa_delete'] == 1 logger.info('------- test done --------') def select_roles_with_keyboard_tab(self): self.driver.implicitly_wait(5) links = self.driver.find_elements_by_xpath(self.all_links_xpath) roles_link = self.driver.find_element_by_link_text( self.lnk_Roles_linktext).text time.sleep(2) header = self.driver.find_element_by_xpath( users.tittle_Admincentral_userList_screen_xpath) actions = ActionChains(self.driver) actions.move_to_element(header).click().perform() for element in range(len(links)): print(links[element].text) actions.send_keys(Keys.TAB) actions.perform() time.sleep(2) if links[element].text == roles_link: actions.send_keys(Keys.ENTER) actions.perform() break print("Roles link selected with keyboard ") self.logger.info( "**************** Roles link selected with keyboard ****************" ) def select_add_role_button_with_keyboard_tab(self): search_input = self.driver.find_element_by_id("search_input") elements = self.driver.find_elements_by_xpath( self.elements_rolelist_xpath) addbtn = self.driver.find_element_by_xpath(self.button_Add_xpath).text time.sleep(2) actions = ActionChains(self.driver) actions.move_to_element(search_input).click().perform() for element in range(len(elements))[1:]: print(elements[element].text) actions.send_keys(Keys.TAB) actions.perform() time.sleep(2) if elements[element].text == addbtn: actions.send_keys(Keys.ENTER) actions.perform() break print("Add Role button selected with keyboard ") self.logger.info( "**************** Add Role button selected with keyboard ****************" ) def select_total_checkboxes_with_KeyBoard_tab(self): checkboxes = self.driver.find_elements_by_class_name( 'form-check-input') for checkbox in checkboxes[1:]: checkbox.send_keys(Keys.TAB) if not checkbox.is_selected(): checkbox.send_keys(Keys.SPACE) def verify_roles_from_sm_with_api(self, roleName): com = Common_role_api() headers = com.headers() url = ReadConfig.sm() cmurl = ReadConfig.cm_for_decryption() r = requests.get(url + "/getRoles", headers=headers) data = r.json() # print("Data from SM::\n", r.json()) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(data, indent=4)) roles = resp1.json() # print("Roles are ::", roles) # extracting data in json format list = [] for item in roles: userroles = item.get('userRoleName') list.append(userroles) # print("Roles are :::\n", list) if list.__contains__(roleName): assert list.__contains__(roleName) == True print("\n Created Role present in the SM(checking with API) ::::", roleName) # logger.info("**************** Role present in the SM ****************") else: assert list.__contains__(roleName) != True print("\n Role not present in the SM(checking with API) ::::", roleName) # logger.info("**************** Role not present in the SM ****************") def verify_roleName_options(self, roleName): url = ReadConfig.sm() cmurl = ReadConfig.cm_for_decryption() com = common() headers = com.headers() # print("Verifying role :: ", roleName) # Generating Token body = {"userRoleName": roleName} encryption = requests.post(cmurl + '/encryptDecrypt/encrypt', headers=headers, data=json.dumps(body, indent=4)) encrypted_body = encryption.text b = json.loads(encrypted_body) resp = requests.post(url + '/getRole', headers=headers, data=json.dumps(b, indent=4)) resp_text = resp.text d = json.loads(resp_text) message = d["status_message"] msg = json.loads(message) decrypt = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(msg, indent=4)) decrypted_text = decrypt.text e = json.loads(decrypted_text) # print("\n Decrypted text is ::\n", e) # return e # list = [] # for key, value in e.items(): # print("assert ['", key,"'] == ",value) # # list.append(value) return e def select_roles_with_keyboard_shiftTab(self): self.driver.implicitly_wait(5) header_elements = self.driver.find_elements_by_xpath( self.elements_header_menus_xpath) roles_link = self.driver.find_element_by_link_text( self.lnk_Roles_linktext).text search_input = self.driver.find_element_by_id("search_input") time.sleep(2) actions = ActionChains(self.driver) actions.move_to_element(search_input).click().perform() i = len(header_elements) - 1 while i >= 0: if i > 3: actions.key_down(Keys.SHIFT).send_keys(Keys.TAB).key_up( Keys.SHIFT) if i <= 3: print(i) time.sleep(2) if header_elements[i].text == roles_link: actions.send_keys(Keys.ENTER).perform() break actions.key_down(Keys.SHIFT).send_keys(Keys.TAB).key_up( Keys.SHIFT) i -= 1 print("Roles link selected with keyboard shiftTab ") self.logger.info( "**************** Roles link selected with keyboard shiftTab ****************" ) def select_add_role_button_with_keyboard_shiftTab(self): table_header_name = self.driver.find_element_by_xpath( self.table_header_name_xpath) elements = self.driver.find_elements_by_xpath( self.elements_rolelist_xpath) addbtn = self.driver.find_element_by_xpath(self.button_Add_xpath).text time.sleep(2) actions = ActionChains(self.driver) actions.move_to_element(table_header_name).click().perform() i = 0 while i <= len(elements): actions.key_down(Keys.SHIFT).send_keys(Keys.TAB).key_up(Keys.SHIFT) time.sleep(2) if elements[i].text == addbtn: actions.send_keys(Keys.ENTER).perform() break i += 1 print("Add Role button selected with keyboard shiftTab") self.logger.info( "**************** Add Role button selected with keyboard shiftTab ****************" ) def select_total_checkboxes_with_KeyBoard_shiftTab(self): checkboxes = self.driver.find_elements_by_class_name( 'form-check-input') systemLog = self.driver.find_element_by_xpath( self.checkbox_system_Log_xpath) actions = ActionChains(self.driver) time.sleep(2) self.driver.execute_script("arguments[0].scrollIntoView();", systemLog) actions.move_to_element(systemLog).click().perform() i = 1 while i < len(checkboxes) - 1: print("i" + str(i)) actions.key_down(Keys.SHIFT).send_keys(Keys.TAB).perform() if not checkboxes[i].is_selected(): actions.send_keys(Keys.SPACE).perform() i += 1 save = self.driver.find_element_by_xpath( "//button[contains(text(),'Save')]") self.driver.execute_script("arguments[0].scrollIntoView();", save) print("New Role added successfully with keyboard shiftTab") self.logger.info( "**************** New Role added successfully with keyboard shiftTab ****************" ) def select_roles_after_zoom(self): time.sleep(2) roles_link = self.driver.find_element_by_link_text( self.lnk_Roles_linktext) self.driver.execute_script("document.body.style.zoom = '120%'") time.sleep(2) actions = ActionChains(self.driver) self.driver.execute_script("arguments[0].scrollIntoView();", roles_link) self.driver.execute_script("arguments[0].click();", roles_link) print("Roles link selected after applying zoom ") self.logger.info( "**************** Roles link Selected after applying zoom ****************" ) def select_add_role_button_after_zoom(self): time.sleep(2) addbtn = self.driver.find_element_by_xpath(self.button_Add_xpath) self.driver.execute_script("document.body.style.zoom = '80%'") time.sleep(2) self.driver.execute_script("arguments[0].scrollIntoView();", addbtn) self.driver.execute_script("arguments[0].click();", addbtn) print("Add button selected after applying zoom ") self.logger.info( "**************** Add button Selected after applying zoom ****************" ) def selectAll_checkbox_after_zoom(self): selectAll = self.driver.find_element_by_id(self.checkbox_selectAll_ID) time.sleep(2) self.driver.execute_script("arguments[0].scrollIntoView();", selectAll) if not selectAll.is_selected(): time.sleep(2) self.driver.execute_script("arguments[0].click();", selectAll) print("SelectAll checkbox selected ") self.logger.info( "**************** SelectAll checkbox selected ****************") def select_save_button_after_zoom(self): save = self.driver.find_element_by_xpath( self.button_AddRole_popup_Save_xpath) time.sleep(2) self.driver.execute_script("arguments[0].scrollIntoView();", save) self.driver.execute_script("arguments[0].click();", save) print("Save button selected ") self.logger.info( "**************** Save button selected ****************") def select_roles_with_mouse(self): time.sleep(2) roles_link = self.driver.find_element_by_link_text( self.lnk_Roles_linktext) actions = ActionChains(self.driver) actions.move_to_element(roles_link).click_and_hold( roles_link).perform() time.sleep(1) actions.release().perform() print("Roles link selected with mouse ") self.logger.info( "**************** Roles link selected with mouse ****************" ) def select_add_role_button_with_mouse(self): time.sleep(2) addbtn = self.driver.find_element_by_xpath(self.button_Add_xpath) actions = ActionChains(self.driver) actions.move_to_element(addbtn).click_and_hold(addbtn).perform() time.sleep(1) actions.release().perform() print("Add button selected with mouse ") self.logger.info( "**************** Add button selected with mouse ****************" )
class Test_039_create_multiple_roles_with_single_option_each_time: baseURL = ReadConfig.get_CM_UI_Roles() logger = LogGen.loggen() @pytest.mark.regression @pytest.mark.test_portal @pytest.mark.createrole def test_create_multiple_roles_with_single_option_each_time_039( self, setup): self.logger.info( "**************** Test_039 : Test CreateRole when user Click ADD button and create multiple roles with single option each time ****************" ) print( "In Description : Test_039 : Test CreateRole when user Click ADD button and create multiple roles with single option each time " ) self.logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164224?projectId=50" ) print( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164224?projectId=50" ) self.driver = setup self.driver.get(self.baseURL) self.login = admin_central_login(self.driver) self.login.admin_login() self.RolesList = roles(self.driver) self.RolesList.select_roles() time.sleep(2) self.RolesList.verify_AdminCentral_RolesList_header() self.RolesList.select_add_role_button() data = self.RolesList.select_single_checkbox_option_each_time() for j in data: role = self.RolesList.send_Random_RoleName() self.RolesList.select_system_from_dropdown() option = '//*[text()="' + j + '"]' print("Selecting Choice is ::", j) self.RolesList.driver.find_element_by_xpath(option).click() # print("Selected checkbox is ::", option) self.RolesList.select_save_button() # file = open("./tests_admin/role_options_status.txt", 'r') # body = file.readline() #Verifying from SM with API com = Common_role_api() e = com.verify_roleName_options(role) opt = "'" + j + "': True" print("Verifying option_status from SM with api ::", opt) try: if opt == "'Select All': True": file = open( "./tests_admin/testCases/role_options_status.txt", 'r') body = file.read() print("Data from SM ::", e) print("Existing body is ::", body) assert e.__contains__(body) print( "After selecting Select All - all the options become enable" ) else: assert e.__contains__(opt) print("Option verified successfully") except Exception: pass print(" **** Creating new role **** ") self.RolesList.select_add_role_button() self.driver.close()
class Test_001_CreateRole: baseURL = ReadConfig.get_CM_UI_Roles() logger = LogGen.loggen() @pytest.mark.regression @pytest.mark.test_portal @pytest.mark.createrole def test_createRole_001(self, setup): self.logger.info( "**************** Test_001 : Test CreateRole when user Click ADD button and add name then save role. ****************" ) print( "In Description : TestCase_001: Test CreateRole when user Click ADD button and add name then save role." ) self.logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164224?projectId=50" ) print( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164224?projectId=50" ) self.driver = setup self.driver.get(self.baseURL) self.login = admin_central_login(self.driver) self.login.admin_login() time.sleep(10) self.RolesList = roles(self.driver) self.RolesList.select_roles() time.sleep(2) self.RolesList.verify_AdminCentral_RolesList_header() self.RolesList.select_add_role_button() self.RolesList.select_system_from_dropdown() creating_role = self.RolesList.send_Random_RoleName() self.RolesList.selectAll_checkbox() self.RolesList.select_save_button() self.RolesList.search_toastify(creating_role) self.RolesList.verify_cm_ui_positive(creating_role) try: self.RolesList.select_add_role_button() except Exception: self.RolesList.capture_screenshot() self.RolesList.select_add_role_button() self.driver.quit() self.RolesList.verify_roles_from_sm_with_api(creating_role) e = self.RolesList.verify_roleName_options(creating_role) assert e['userRoleName'] == creating_role assert e['createMethod'] == True assert e['editMethod'] == True assert e['deleteMethod'] == True assert e['createActionAlertLevel'] == True assert e['editActionAlertLevel'] == True assert e['deleteActionAlertLevel'] == True assert e['createHandlingRule'] == True assert e['editHandlingRule'] == True assert e['deleteHandlingRule'] == True assert e['createSample'] == True assert e['editSample'] == True assert e['deleteSample'] == True assert e['createProduct'] == True assert e['editProduct'] == True assert e['deleteProduct'] == True assert e['createUser'] == True assert e['editUser'] == True assert e['deleteUser'] == True assert e['createUserRole'] == True assert e['editUserRole'] == True assert e['deleteUserRole'] == True assert e['cancelCassettes'] == True assert e['retrieveCassettes'] == True assert e['approveCassettes'] == True assert e['cleanupCassettes'] == True assert e['orderTests'] == True assert e['loadTests'] == True assert e['printProductLabels'] == True assert e['administerGD'] == True assert e['editSettings'] == True assert e['maintenance'] == True assert e['acknowledgeSystemAlarms'] == True assert e['acknowledgeSystemErrors'] == True assert e['acknowledgeSystemServiceIssues'] == True assert e['editAlarmNotifications'] == True assert e['emptyTrash'] == True assert e['service'] == True assert e['editITSettings'] == True assert e['editLimsSettings'] == True assert e['printLimsLabels'] == True assert e['modifyLimsRequest'] == True assert e['editLimsTestResultsFields'] == True assert e['sendSystemLogs'] == True print("All the options are verified and match with the request")
def test_getRole_API_001(): logger = LogGen.loggen() url = ReadConfig.sm() com = common() logger.info( "**************** Test_001: Test getRole when user sends - Valid Request ****************" ) logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164278?projectId=50" ) print( "**************** Test_001: Test getRole when user sends - Valid Request ****************" ) print( "Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164278?projectId=50" ) headers = com.headers() role = com.getRolesList() get_role = random.choice(role) print("\n Getting role :: ", get_role) body = {"userRoleName": get_role} b = com.encrypt(body) resp = requests.post(url + '/getRole', headers=headers, data=json.dumps(b, indent=4)) resp_text = resp.text d = json.loads(resp_text) message = d["status_message"] msg = json.loads(message) e = com.decrypt(msg) # print("value is ::", e ) assert e['createMethod'] == True assert e['editMethod'] == True assert e['deleteMethod'] == True assert e['createActionAlertLevel'] == True assert e['editActionAlertLevel'] == True assert e['deleteActionAlertLevel'] == True assert e['createHandlingRule'] == True assert e['editHandlingRule'] == True assert e['deleteHandlingRule'] == True assert e['createSample'] == False assert e['editSample'] == False assert e['deleteSample'] == False assert e['createProduct'] == False assert e['editProduct'] == False assert e['deleteProduct'] == False assert e['createUser'] == False assert e['editUser'] == False assert e['deleteUser'] == False assert e['createUserRole'] == False assert e['editUserRole'] == False assert e['deleteUserRole'] == False assert e['cancelCassettes'] == True assert e['retrieveCassettes'] == True assert e['approveCassettes'] == True assert e['cleanupCassettes'] == True assert e['orderTests'] == True assert e['loadTests'] == True assert e['printProductLabels'] == True assert e['administerGD'] == False assert e['editSettings'] == False assert e['maintenance'] == False assert e['acknowledgeSystemAlarms'] == True assert e['acknowledgeSystemErrors'] == True assert e['acknowledgeSystemServiceIssues'] == True assert e['editAlarmNotifications'] == False assert e['emptyTrash'] == True assert e['service'] == False assert e['editITSettings'] == False assert e['editLimsSettings'] == False assert e['printLimsLabels'] == False assert e['modifyLimsRequest'] == False assert e['editLimsTestResultsFields'] == False assert e['sendSystemLogs'] == True
class Common_Aws_Methods(): logger = LogGen.loggen() # Inputs input_username_id = 'username' input_password_id = 'password' input_resolving_input_id = 'resolving_input' input_account_id = 'account' # Buttons button_next_id = 'next_button' button_signin_id = 'signin_button' button_iam_user_radio_button_id = 'iam_user_radio_button' # Frame frame_id = 'compute-react-frame' button_instance_state_xpath = "//span[normalize-space()='Instance state']" text_instance_state_xpath = "//div[contains(text(),'Instance state')]//following-sibling::div" dropdown_instance_states_xpath = "//ul[@class='awsui-button-dropdown-items']//li" dropdown_instance_state_startInstance_xpath = "//li[@aria-label='Start instance']" dropdown_instance_state_stopInstance_xpath = "//li[@aria-label='Stop instance']" popup_xpath = "//div[@class='awsui-modal-content awsui-util-container']" button_popup_stop_instance_xpath = "//span[normalize-space()='Stop']" def __init__(self, driver): self.driver = driver def aws_login(self): account_id = ReadConfig.get_AWS_AccountID() username = ReadConfig.get_AWS_IAMUsername() password = ReadConfig.get_AWS_password() self.driver.find_element_by_id( self.button_iam_user_radio_button_id).click() self.driver.find_element_by_id( self.input_resolving_input_id).send_keys(account_id) self.driver.find_element_by_id(self.button_next_id).click() print("Next button clicked") self.driver.find_element_by_id(self.input_account_id).clear() self.driver.find_element_by_id( self.input_account_id).send_keys(account_id) self.driver.find_element_by_id( self.input_username_id).send_keys(username) self.driver.find_element_by_id( self.input_password_id).send_keys(password) self.driver.find_element_by_id(self.button_signin_id).click() def startInstance(self): self.driver.implicitly_wait(3) frame_id = self.driver.find_element_by_id(self.frame_id) self.driver.switch_to.frame(frame_id) status = self.driver.find_element_by_xpath( self.text_instance_state_xpath).text print("Instance Status : " + status) if status in "Running": print("AWS Instance is already on running state") self.logger.info( "**************** AWS Instance is already on running state ****************" ) else: instanceState = self.driver.find_element_by_xpath( self.button_instance_state_xpath) instanceState.click() time.sleep(2) elements = self.driver.find_elements_by_xpath( self.dropdown_instance_states_xpath) #print("length" + str(len(elements))) startInstance = self.driver.find_element_by_xpath( self.dropdown_instance_state_startInstance_xpath).text for element in range(len(elements)): #print("Instance State ::", elements[element].text) if elements[element].text == startInstance: if elements[element].is_enabled(): time.sleep(2) elements[element].click() wait = WebDriverWait(self.driver, 10) successMessage = wait.until( EC.visibility_of_element_located(( By.XPATH, "//span[contains(text(),'Successfully started')]" ))) if successMessage: print("Successfully starting AWS instance") self.logger.info( "**************** Successfully starting AWS instance ****************" ) wait = WebDriverWait(self.driver, 30) wait.until( EC.visibility_of_element_located(( By.XPATH, "//*[contains(text(),'Instance state')]//following-sibling::div[contains(normalize-space(),'Pending')]" ))) wait = WebDriverWait(self.driver, 60) wait.until( EC.visibility_of_element_located(( By.XPATH, "//*[contains(text(),'Instance state')]//following-sibling::div[contains(normalize-space(),'Running')]" ))) self.driver.switch_to.default_content() print("Instance Status : Running") print("AWS instance is up and on running state") self.logger.info( "**************** AWS instance is up and on running state ****************" ) break def stopInstance(self): self.driver.implicitly_wait(10) frame_id = self.driver.find_element_by_id(self.frame_id) self.driver.switch_to.frame(frame_id) status = self.driver.find_element_by_xpath( self.text_instance_state_xpath).text print("Instance Status : " + status) if status in "Stopped": print("AWS Instance is already on Stop state") self.logger.info( "**************** AWS Instance is already on Stop state ****************" ) else: instanceState = self.driver.find_element_by_xpath( self.button_instance_state_xpath) instanceState.click() time.sleep(2) elements = self.driver.find_elements_by_xpath( self.dropdown_instance_states_xpath) print("length" + str(len(elements))) stopInstance = self.driver.find_element_by_xpath( self.dropdown_instance_state_stopInstance_xpath).text for element in range(len(elements)): print("Instance State ::", elements[element].text) if elements[element].text == stopInstance: print(elements[element].is_enabled()) if elements[element].is_enabled(): time.sleep(2) elements[element].click() time.sleep(3) stopButton = self.driver.find_element_by_xpath( self.button_popup_stop_instance_xpath) stopButton.click() wait = WebDriverWait(self.driver, 10) successMessage = wait.until( EC.visibility_of_element_located(( By.XPATH, "//span[contains(text(),'Successfully stopped')]" ))) if successMessage: print("Successfully stopping AWS instance") self.logger.info( "**************** Successfully stopping AWS instance ****************" ) wait = WebDriverWait(self.driver, 30) wait.until( EC.visibility_of_element_located(( By.XPATH, "//*[contains(text(),'Instance state')]//following-sibling::div[contains(normalize-space(),'Stopping')]" ))) wait = WebDriverWait(self.driver, 60) wait.until( EC.visibility_of_element_located(( By.XPATH, "//*[contains(text(),'Instance state')]//following-sibling::div[contains(normalize-space(),'Stopped')]" ))) self.driver.switch_to.default_content() print("Instance Status : Stopped") print("AWS instance is down and on stop state") self.logger.info( "**************** AWS instance is down and on stop state ****************" ) break
class users: logger = LogGen.loggen() tittle_Admincentral_userList_screen_xpath = "//*[text() = 'Admin Central - User List']" #Buttons button_add_xpath = "//*[contains(text(),'Add')]" button_closeSymbol_xpath = "//*[text()='×']" button_save_xpath = "//*[contains(text(),'Save')]" button_close_xpath = "//button[contains(text(),'Close')]" button_DeactivateAll_xpath = "//*[contains(text(),'Deactivate All')]" button_EDIT_xpath = "//*[contains(text(),'Edit')]" button_Activate_xpath = "//*[contains(text(),'Activate')]" button_Deactivate_xpath = "//*[contains(text(),'Deactivate')]" button_ok_xpath = "//button[contains(text(),'Ok')]" #TextBoxes textbox_Username_ID = "userName" textbox_firstname_ID = "firstName" textbox_MiddleInitial_ID = "middleInitial" textbox_lastname_ID = "lastName" textbox_emailAddress_ID = "emailAddress" textbox_telephoneNumber_ID = "telephoneNumber" textbox_extension_ID="extension" textbox_password_ID="password" textbox_confirmPassword_ID="confirmPassword" #Dropdown dropdown_system_xpath="//option[contains(text(),'E12345678')]" dropdown_userRoleName_xpath="//*[@id='userRoleName']" #Links lnk_Users_linktext = "Users" lnk_logout_linktext = "Logout" #Default users default_user_administrator_xpath="//*[ contains(@class, 'userNameColumn') and contains(text(),'Administrator')]" default_user_FieldService_xpath="//*[ contains(@class, 'userNameColumn') and contains(text(),'FieldService')]" default_user_Operator_xpath="//*[ contains(@class, 'userNameColumn') and contains(text(),'Operator')]" #Errors initial_username_error_xpath = "//*[contains(text(),'*Please enter your username.')]" username_error_xpath = "//*[contains(text(),'*Please enter alphabet characters only.')]" firstname_error_xpath = "//*[contains(text(),'*Please enter your first name.')]" middleinitial_error_xpath = "//*[contains(text(),'*Please enter your middle initial.')]" lastname_error_xpath = "//*[contains(text(),'*Please enter your last name.')]" email_error_xpath = "//*[contains(text(),'*Please enter valid email-ID.')]" telephone_error_xpath = "//*[contains(text(),'*Please enter valid mobile no.')]" password_error_xpath = "//*[@id='password']/following-sibling::div" confirmpassword_error_xpath = "//*[@id='confirmPassword']/following-sibling::div" usernames_xpath = "//*[@class='userNameColumn']" logout_xpath = "//*[text()='Logout']" # button_ok_xpath = "//button[contains(text(),'Ok')]" # # button_deactivate_xpath = "//*[@class='btn btn-danger' and contains(text(),'Deactivate')]" # # button_activate_xpath = "//*[@class='btn btn-danger' and contains(text(),'Activate')]" #Place Holders placeholder_username_xpath = "//*[@placeholder = 'UserName']" placeholder_firstname_xpath = "//*[@placeholder = 'FirstName']" placeholder_middleInitial_xpath = "//*[@placeholder = 'Middle Initial']" placeholder_lastname_xpath = "//*[@placeholder = 'Last Name']" placeholder_emailId_xpath = "//*[@placeholder = 'Email Id']" placeholder_telephone_xpath = "//*[@placeholder = 'Telephone']" placeholder_extension_xpath = "//*[@placeholder = 'Extension']" placeholder_password_xpath = "//*[@placeholder = 'Password']" placeholder_confirmPassword_xpath = "//*[@placeholder = 'Confirm Password']" #Other Xpaths close_x_xpath = "//*[contains(text(),'×')]" addUser_popup_text_classname = "modal-content" all_links_xpath = "//*[@class='toolbar_navigation-items']//a" elements_rolelist_xpath = "//div[@class='d-flex header']//input | //div[@class='d-flex header']//button" elements_header_menus_xpath = "//button[@class='toggle-button']|//img|//div[@class='toolbar_navigation-items']//a" table_header_name_xpath = "//*[text()='UserName']" def __init__(self, driver): self.driver = driver def select_users_Link(self): self.driver.implicitly_wait(5) self.driver.find_element_by_link_text(self.lnk_Users_linktext).click() try: self.driver.find_element_by_xpath(self.button_EDIT_xpath) print("Users and roles are displayed") except Exception: self.driver.refresh() self.driver.find_element_by_xpath(self.lnk_logout_linktext).click() self.login = admin_central_login(self.driver) self.login.admin_login() self.driver.find_element_by_link_text(self.lnk_Users_linktext).click() self.driver.find_element_by_xpath(self.button_EDIT_xpath) print("Users and roles are not displayed") def select_add_button(self): try: time.sleep(10) self.driver.implicitly_wait(10) self.driver.find_element_by_xpath(self.button_add_xpath).click() time.sleep(10) except Exception: pass def send_username_textbox(self): userName = self.driver.find_element_by_id(self.textbox_Username_ID).text if(len(userName) == 0): print("UserName field is empty") x = Xeger(limit=34) y = x.xeger("^[a-zA-Z0-9]+$") self.driver.find_element_by_id(self.textbox_Username_ID).clear() self.driver.find_element_by_id(self.textbox_Username_ID).send_keys(y) print("Entering 'UserName' ::" + y) self.logger.info("**************** UserName entered ****************") return y else: userid_null = self.driver.find_element_by_id(self.textbox_Username_ID).text print("Username field value is :::", userName) self.driver.find_element_by_id(self.textbox_Username_ID).clear() x = Xeger(limit=34) y = x.xeger("^[a-zA-Z0-9]+$") self.driver.find_element_by_id(self.textbox_Username_ID).send_keys(y) print("Updated 'UserName' is ::" + y) self.logger.info("**************** UserName entered ****************") return y def send_existing_username_textbox(self): url = ReadConfig.sm() headers = {'Content-Type': 'application/json'} a = {"userName": "******", "password": "******"} resp = requests.post(url + '/getSMToken', headers=headers, data=json.dumps(a, indent=4)) token = resp.text d = json.loads(token) message = d["status_message"] e = json.loads(message) accesstoken = "Bearer " + e["accessToken"] headerss = {'Content-Type': 'application/json', 'Authorization': accesstoken} r = requests.get(url + "/getUsers", headers=headerss) # print("Data from SM::\n", r.json()) # extracting data in json format list = [] for item in r.json(): usernames = item.get('userName') list.append(usernames) print("Users are :::\n", list) a = random.choice(list) print("Sending User Name ::", a) self.driver.find_element_by_id(self.textbox_Username_ID).send_keys(a) def send_firstname_textbox(self): firstName = self.driver.find_element_by_id(self.textbox_firstname_ID) firstname_value = firstName.get_attribute("value") if (len(firstname_value) == 0): print("\n First Name field is empty") x = Xeger(limit=50) y = x.xeger("^([a-zA-Z '-]+)$") self.driver.find_element_by_id(self.textbox_firstname_ID).clear() self.driver.find_element_by_id(self.textbox_firstname_ID).send_keys(y) print("Entered text in the 'FirstName' textbox is ::" + y) self.logger.info("**************** FirstName entered ****************") return y else: firstName = self.driver.find_element_by_id(self.textbox_firstname_ID) firstname_value = firstName.get_attribute("value") print("\n Existing Firstname is :::", firstname_value) x = Xeger(limit=50) y = x.xeger("^([a-zA-Z '-]+)$") self.driver.find_element_by_id(self.textbox_Username_ID).clear() self.driver.find_element_by_id(self.textbox_firstname_ID).send_keys(y) print("Entered text in the 'FirstName' textbox is ::" + y) self.logger.info("**************** FirstName entered ****************") return y def send_middleinitial_textbox(self): middleinitial = self.driver.find_element_by_id(self.textbox_MiddleInitial_ID) middleinitial_value = middleinitial.get_attribute("value") if (len(middleinitial_value) == 0): print("\n MiddleInitial field is empty") x = Xeger(limit=1) y = x.xeger("^([a-zA-Z]+)$") self.driver.find_element_by_id(self.textbox_MiddleInitial_ID).clear() self.driver.find_element_by_id(self.textbox_MiddleInitial_ID).send_keys(y) print(" Entered text in the 'middleinitial' textbox is ::" + y) self.logger.info("**************** middleinitial entered ****************") return y else: middleinitial = self.driver.find_element_by_id(self.textbox_MiddleInitial_ID) middleinitial_value = middleinitial.get_attribute("value") print("\n Existing middleInitial is :::", middleinitial_value) x = Xeger(limit=1) y = x.xeger("^([a-zA-Z]+)$") self.driver.find_element_by_id(self.textbox_MiddleInitial_ID).clear() self.driver.find_element_by_id(self.textbox_MiddleInitial_ID).send_keys(y) print("Entered text in the 'Middle Initial' textbox is ::" + y) self.logger.info("**************** Middle Initial entered ****************") return y def send_lastname_textbox(self): lastname = self.driver.find_element_by_id(self.textbox_lastname_ID) lastname_value = lastname.get_attribute("value") if (len(lastname_value) == 0): print("\n lastname Name field is empty") x = Xeger(limit=50) y = x.xeger("^([a-zA-Z '-]+)$") self.driver.find_element_by_id(self.textbox_lastname_ID).clear() self.driver.find_element_by_id(self.textbox_lastname_ID).send_keys(y) print(" Entered text in the 'lastname' textbox is ::" + y) self.logger.info("**************** lastname entered ****************") return y else: lastname = self.driver.find_element_by_id(self.textbox_MiddleInitial_ID) lastname_value = lastname.get_attribute("value") print("\n Existing lastname is :::", lastname_value) x = Xeger(limit=50) y = x.xeger("^([a-zA-Z '-]+)$") self.driver.find_element_by_id(self.textbox_lastname_ID).clear() self.driver.find_element_by_id(self.textbox_lastname_ID).send_keys(y) print("\n Entered text in the 'lastname' textbox is ::" + y) self.logger.info("**************** lastname entered ****************") return y def send_emailaddress_textbox(self): self.driver.implicitly_wait(100) self.driver.find_element_by_id(self.textbox_emailAddress_ID).clear() self.driver.find_element_by_id(self.textbox_emailAddress_ID).send_keys("*****@*****.**") # x = Xeger(limit=34) # y = x.xeger("^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$") # self.driver.find_element_by_id(self.textbox_emailAddress_ID).send_keys(y) # print("Entered text in the 'email' textbox is ::" + y) # self.logger.info("**************** email entered ****************") # return y def send_telephonenumber_textbox(self): self.driver.find_element_by_id(self.textbox_telephoneNumber_ID).clear() self.driver.find_element_by_id(self.textbox_telephoneNumber_ID).send_keys('9030852544') # telephone = self.driver.find_element_by_id(self.textbox_telephoneNumber_ID) # telephone_value = telephone.get_attribute("value") # if (len(telephone_value) == 0): # print("\n telephone Name field is empty") # x = Xeger(limit=34) # y = x.xeger("^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$") # self.driver.find_element_by_id(self.textbox_telephoneNumber_ID).clear() # self.driver.find_element_by_id(self.textbox_telephoneNumber_ID).send_keys(y) # # # self.driver.find_element_by_id(self.textbox_telephoneNumber_ID).send_keys('(603) 595-6822') # # print(" Entered text in the 'telephone' textbox is ::" + y) # self.logger.info("**************** telephone entered ****************") # return y # else: # telephone = self.driver.find_element_by_id(self.textbox_telephoneNumber_ID) # telephone_value = telephone.get_attribute("value") # print("\n Existing telephone is :::", telephone_value) # x = Xeger(limit=34) # y = x.xeger("^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$") # self.driver.find_element_by_id(self.textbox_telephoneNumber_ID).clear() # self.driver.find_element_by_id(self.textbox_telephoneNumber_ID).send_keys(y) # # print(" Entered text in the 'telephone' textbox is ::" + y) # self.logger.info("**************** Telephone entered ****************") # return y def send_extension_textbox(self): self.driver.find_element_by_id(self.textbox_extension_ID).clear() self.driver.find_element_by_id(self.textbox_extension_ID).send_keys('1234') def send_password_textbox(self): password = self.driver.find_element_by_id(self.textbox_password_ID) password_value = password.get_attribute("value") if (len(password_value) == 0): print("\n password Name field is empty") x = Xeger(limit=50) y = x.xeger("^(?=.*[0-9])(?=.*[A-Z]).{8,32}$") self.driver.find_element_by_id(self.textbox_password_ID).send_keys(y) print("Entered text in the 'password' textbox is ::" + y) self.logger.info("**************** password entered ****************") return y else: password = self.driver.find_element_by_id(self.textbox_password_ID) password_value = password.get_attribute("value") print("\n Existing extension is :::", password_value) x = Xeger(limit=50) y = x.xeger("^(?=.*[0-9])(?=.*[A-Z]).{8,32}$") self.driver.find_element_by_id(self.textbox_password_ID).send_keys(y) print("Entered text in the 'password' textbox is ::" + y) self.logger.info("**************** password entered ****************") return y def send_confirmPassword_textbox(self): confirmPassword = self.driver.find_element_by_id(self.textbox_confirmPassword_ID) confirmPassword_value = confirmPassword.get_attribute("value") if (len(confirmPassword_value) == 0): print("\n password Name field is empty") x = Xeger(limit=50) y = x.xeger("^(?=.*[0-9])(?=.*[A-Z]).{8,32}$") self.driver.find_element_by_id(self.textbox_confirmPassword_ID).send_keys(y) print("Entered text in the 'confirmpassword' textbox is ::" + y) self.logger.info("**************** confirmpassword entered ****************") return y else: confirmPassword = self.driver.find_element_by_id(self.textbox_confirmPassword_ID) confirmPassword_value = confirmPassword.get_attribute("value") print("\n Existing confirm_password is :::", confirmPassword_value) x = Xeger(limit=50) y = x.xeger("^(?=.*[0-9])(?=.*[A-Z]).{8,32}$") self.driver.find_element_by_id(self.textbox_confirmPassword_ID).send_keys(y) print("Entered text in the 'confirmpassword' textbox is ::" + y) self.logger.info("**************** confirmpassword entered ****************") return y def send_same_password_and_confirmPassword(self): password = self.driver.find_element_by_id(self.textbox_password_ID) password_value = password.get_attribute("value") confirmPassword = self.driver.find_element_by_id(self.textbox_confirmPassword_ID) confirmPassword_value = confirmPassword.get_attribute("value") if (len(password_value) == 0): print("\n password Name field is empty") x = Xeger(limit=50) y = x.xeger("^(?=.*[0-9])(?=.*[A-Z]).{8,32}$") self.driver.find_element_by_id(self.textbox_password_ID).send_keys(y) print("Entered text in the 'password' textbox is ::" + y) self.logger.info("**************** password entered ****************") self.driver.find_element_by_id(self.textbox_confirmPassword_ID).send_keys(y) print("Entered text in the 'confirmpassword' textbox is ::" + y) self.logger.info("**************** confirmpassword entered ****************") return y else: password = self.driver.find_element_by_id(self.textbox_password_ID) password_value = password.get_attribute("value") print("\n Existing confirmpassword is :::", password_value) confirmPassword = self.driver.find_element_by_id(self.textbox_confirmPassword_ID) confirmPassword_value = confirmPassword.get_attribute("value") print("\n Existing confirm_password is :::", confirmPassword_value) x = Xeger(limit=50) y = x.xeger("^(?=.*[0-9])(?=.*[A-Z]).{8,32}$") self.driver.find_element_by_id(self.textbox_password_ID).send_keys(y) print("Entered text in the 'password' textbox is ::" + y) self.logger.info("**************** password entered ****************") self.driver.find_element_by_id(self.textbox_confirmPassword_ID).send_keys(y) print("Entered text in the 'confirmpassword' textbox is ::" + y) self.logger.info("**************** confirmpassword entered ****************") return y def select_system_dropdown(self): self.driver.find_element_by_xpath(self.dropdown_system_xpath).click() def select_Role_dropdown(self): roleslist=Select(self.driver.find_element_by_xpath(self.dropdown_userRoleName_xpath)) roles_list= self.driver.find_element_by_xpath(self.dropdown_userRoleName_xpath).text print("Roles list from dropdown ", roles_list) roleslist.select_by_index(1) def select_save_button(self): self.driver.find_element_by_xpath(self.button_save_xpath).click() def select_close_button(self): self.driver.maximize_window() time.sleep(2) self.driver.find_element_by_xpath(self.button_close_xpath).click() def select_close_x(self): self.driver.find_element_by_xpath(self.close_x_xpath).click() def select_ok_button(self): self.driver.find_element_by_xpath(self.button_ok_xpath).click() def select_edit_button(self): ids = self.driver.find_elements_by_xpath(self.button_EDIT_xpath) abc = random.choice(ids) abc.click() def close(self): self.driver.find_element_by_xpath(self.button_close_xpath).click() def select_default_user(self): a = self.driver.find_element_by_xpath(self.default_user_administrator_xpath) b = self.driver.find_element_by_xpath(self.default_user_FieldService_xpath) c = self.driver.find_element_by_xpath(self.default_user_Operator_xpath) list = [a, b, c] randon_default_user = random.choice(list) return randon_default_user def select_default_role(self): sel = Select(self.driver.find_element_by_xpath(self.dropdown_userRoleName_xpath)) a=sel.select_by_visible_text('Administrator') b=sel.select_by_visible_text('FieldService') c=sel.select_by_visible_text('Operator') list=[a, b, c] randon_default_role = random.choice(list) return randon_default_role def send_userName_update(self): self.driver.find_element_by_id(self.textbox_Username_ID).click() self.driver.find_element_by_id(self.textbox_Username_ID).send_keys('abc') def send_userName_runtime(self, username): self.driver.find_element_by_id(self.textbox_Username_ID).click() self.driver.find_element_by_id(self.textbox_Username_ID).send_keys(username) def send_firstName_empty(self): self.driver.find_element_by_id(self.textbox_firstname_ID).clear() def send_lastName_empty(self): self.driver.find_element_by_id(self.textbox_lastname_ID).clear() def send_middleInitial_empty(self): self.driver.find_element_by_id(self.textbox_MiddleInitial_ID).clear() def send_emailID_empty(self): self.driver.find_element_by_id(self.textbox_emailAddress_ID).clear() def send_telephone_empty(self): self.driver.find_element_by_id(self.textbox_telephoneNumber_ID).clear() def send_password_empty(self): self.driver.find_element_by_id(self.textbox_password_ID).clear() def send_confirmPassword_empty(self): self.driver.find_element_by_id(self.textbox_confirmPassword_ID).clear() def userName_RegEx(self): userName = "******" return userName def editedBy_RegEx(self): editedBy = "^[a-zA-Z0-9]+$" return editedBy def firstName_RegEx(self): firstName = "^([a-zA-Z '-]+)$" return firstName def middleInitial_RegEx(self): self.driver.find_element_by_id(self.textbox_MiddleInitial_ID).clear() middleInitial = "^([a-zA-Z]+)$" return middleInitial def lastName_RegEx(self): lastName = "^([a-zA-Z '-]+)$" return lastName def emailId_RegEx(self): first="^([a-zA-Z0-9_\-\.]+)$" last="^(\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|([a-zA-Z0-9.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$" # emailId = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$" x = Xeger(limit=64) before = x.xeger(first) y=Xeger(limit=256) after=y.xeger(last) emailId=before+"@"+after return emailId def telephone_RegEx(self): telephone = "^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$" return telephone def password_RegEx(self): password = "******" return password def confirmPassword_RegEx(self): confirmPassword = "******" return confirmPassword def capture_screenshot(self): now = datetime.now().strftime('%Y-%m-%d_%H-%M-%S') self.driver.save_screenshot('./tests_admin/Screenshots/screenshot-%s.png' % now) self.logger.info("**************** Screenshot captured ****************") print("Screenshot captured") def username_error(self): # a = self.driver.find_element_by_xpath(self.initial_username_error_xpath) # b = self.driver.find_element_by_xpath(self.username_error_xpath) if self.driver.find_element_by_xpath(self.initial_username_error_xpath).is_displayed(): print("Error Displayed :: *Please enter your username ") elif self.driver.find_element_by_xpath(self.username_error_xpath).is_displayed(): print("Error Displayed :: *Please enter alphabet characters only. ") else: print("") def firstname_error(self): a=self.driver.find_element_by_xpath(self.firstname_error_xpath).text return a def middleInitial_error(self): a = self.driver.find_element_by_xpath(self.middleinitial_error_xpath).text return a def lastname_error(self): a = self.driver.find_element_by_xpath(self.lastname_error_xpath).text return a def emailid_error(self): a = self.driver.find_element_by_xpath(self.email_error_xpath).text return a def telephone_error(self): a = self.driver.find_element_by_xpath(self.telephone_error_xpath).text return a def password_error(self): a = self.driver.find_element_by_xpath(self.password_error_xpath).text return a def confirmpassword_error(self): a = self.driver.find_element_by_xpath(self.confirmpassword_error_xpath).text return a def verify_error(self): print("Verifyting errors") # Testing UserName error try: self.driver.implicitly_wait(1) a = self.driver.find_element_by_xpath(self.initial_username_error_xpath).text print("Error Displayed :: a ") except Exception: pass try: b = self.driver.find_element_by_xpath(self.username_error_xpath).text print("UserName Error :: ", b) except Exception: pass # Testing firstName error try: c = self.driver.find_element_by_xpath(self.firstname_error_xpath).text print("FirstName Error :: ", c) except Exception: pass # Testing middleInitial try: d = self.driver.find_element_by_xpath(self.middleinitial_error_xpath).text print("MiddleInitial Error :: ", d) except Exception: pass # Testing lastName error try: e = self.driver.find_element_by_xpath(self.lastname_error_xpath).text print("lastname Error :: ", e) except Exception: pass # Testing email error try: f = self.driver.find_element_by_xpath(self.email_error_xpath).text print("Email Error :: ", f) except Exception: pass # Testing Telephone error try: g = self.driver.find_element_by_xpath(self.telephone_error_xpath).text print("telephone Error :: ", g) except Exception: pass # Testing Password error try: h = self.driver.find_element_by_xpath(self.password_error_xpath).text print("password Error :: ", h) except Exception: pass # Testing confirm_password try: i = self.driver.find_element_by_xpath(self.confirmpassword_error_xpath).text print("confirmPassword error ::", i) except Exception: pass def select_edit_randomly(self): ids = self.driver.find_elements_by_xpath(self.button_EDIT_xpath) abc = random.choice(ids) abc.click() def select_activate_button(self): ids = self.driver.find_elements_by_xpath(self.button_Activate_xpath) abc = random.choice(ids) abc.click() def select_deactivate_button(self): ids = self.driver.find_elements_by_xpath(self.button_Deactivate_xpath) abc = random.choice(ids) abc.click() def select_deactivateAll_button(self): self.driver.find_element_by_xpath(self.button_DeactivateAll_xpath).click() def select_users_with_keyboard_tab(self): self.driver.implicitly_wait(5) links = self.driver.find_elements_by_xpath(self.all_links_xpath) users_link = self.driver.find_element_by_link_text(self.lnk_Users_linktext).text header = self.driver.find_element_by_xpath(self.tittle_Admincentral_userList_screen_xpath) actions = ActionChains(self.driver) actions.move_to_element(header).click().perform() time.sleep(2) for element in range(len(links)): print(links[element].text) actions.send_keys(Keys.TAB) actions.perform() time.sleep(2) if links[element].text == users_link: actions.send_keys(Keys.ENTER) actions.perform() break print("Users link selected with keyboard ") self.logger.info("**************** Users link selected with keyboard ****************") def select_add_user_button_with_keyboard_tab(self): search_input = self.driver.find_element_by_id("search_input") elements = self.driver.find_elements_by_xpath(self.elements_rolelist_xpath) addbtn = self.driver.find_element_by_xpath(self.button_add_xpath).text time.sleep(2) actions = ActionChains(self.driver) actions.move_to_element(search_input).click().perform() for element in range(len(elements))[1:]: print(elements[element].text) actions.send_keys(Keys.TAB) actions.perform() time.sleep(2) if elements[element].text == addbtn: actions.send_keys(Keys.ENTER) actions.perform() break print("Add User button selected with keyboard ") self.logger.info("**************** Add User button selected with keyboard ****************") def select_users_with_keyboard_shiftTab(self): self.driver.implicitly_wait(5) header_elements = self.driver.find_elements_by_xpath(self.elements_header_menus_xpath) users_link = self.driver.find_element_by_link_text(self.lnk_Users_linktext).text search_input = self.driver.find_element_by_id("search_input") time.sleep(2) actions = ActionChains(self.driver) actions.move_to_element(search_input).click().perform() i = len(header_elements) - 1 while i >= 0: if i > 3: actions.key_down(Keys.SHIFT).send_keys(Keys.TAB).key_up(Keys.SHIFT) if i <= 3: print(i) time.sleep(2) if header_elements[i].text == users_link: actions.send_keys(Keys.ENTER).perform() break actions.key_down(Keys.SHIFT).send_keys(Keys.TAB).key_up(Keys.SHIFT) i -= 1 print("Users link selected with keyboard shiftTab ") self.logger.info("**************** Users link selected with keyboard shiftTab ****************") def select_add_user_button_with_keyboard_shiftTab(self): table_header_name = self.driver.find_element_by_xpath(self.table_header_name_xpath) elements = self.driver.find_elements_by_xpath(self.elements_rolelist_xpath) addbtn = self.driver.find_element_by_xpath(self.button_add_xpath).text time.sleep(2) actions = ActionChains(self.driver) actions.move_to_element(table_header_name).click().perform() i = 0 while i <= len(elements): actions.key_down(Keys.SHIFT).send_keys(Keys.TAB).key_up(Keys.SHIFT) time.sleep(2) if elements[i].text == addbtn: actions.send_keys(Keys.ENTER).perform() break i += 1 print("Add User button selected with keyboard shiftTab") self.logger.info("**************** Add User button selected with keyboard shiftTab ****************") def username_placeholder(self): placeholder = self.driver.find_element_by_xpath(self.placeholder_username_xpath).text assert placeholder == "UserName" def firstname_placeholder(self): placeholder = self.driver.find_element_by_xpath(self.placeholder_firstname_xpath).text assert placeholder == "FirstName" def middleInitial_placeholder(self): placeholder = self.driver.find_element_by_xpath(self.placeholder_middleInitial_xpath).text assert placeholder == "Middle Initial" def lastname_placeholder(self): placeholder = self.driver.find_element_by_xpath(self.placeholder_lastname_xpath).text assert placeholder == "Last Name" def emailId_placeholder(self): placeholder = self.driver.find_element_by_xpath(self.placeholder_emailId_xpath).text assert placeholder == "Email Id" def telephone_placeholder(self): placeholder = self.driver.find_element_by_xpath(self.placeholder_telephone_xpath).text assert placeholder == "Telephone" def extension_placeholder(self): placeholder = self.driver.find_element_by_xpath(self.placeholder_extension_xpath).text assert placeholder == "Extension" def password_placeholder(self): placeholder = self.driver.find_element_by_xpath(self.placeholder_password_xpath).text assert placeholder == "Password" def confirmpassword_placeholder(self): placeholder = self.driver.find_element_by_xpath(self.placeholder_confirmPassword_xpath).text assert placeholder == "Confirm Password" def verify_placeholders(self): self.username_placeholder() self.firstname_placeholder() self.middleInitial_placeholder() self.lastname_placeholder() self.emailId_placeholder() self.telephone_placeholder() self.extension_placeholder() self.password_placeholder() self.confirmpassword_placeholder() def verify_addUser_popup_text(self): print("") entire_text = self.driver.find_element_by_class_name("modal-content").text # print("Text from addrole popup is ::", entire_text) # my_file = open("./tests_admin/testCases/addUserPopupScreenText.txt", "w") # my_file.write(entire_text) # my_file = open("./tests_admin/testCases/addUserPopupScreenText.txt") # content = my_file.read() file = open("./tests_admin/testCases/addUserPopupScreenText.txt", 'r') body = file.readline() # print("Data from text file ::", body) assert entire_text.__contains__(body) print("All the Text in 'add_user screen' is displayed as expected") def verify_editUser_popup_text(self): entire_text = self.driver.find_element_by_class_name("modal-content").text # print("Text from addrole popup is ::", entire_text) # my_file = open("./tests_admin/testCases/editUserPopupScreenText.txt", "w") # my_file.write(entire_text) file = open("./tests_admin/testCases/editUserPopupScreenText.txt", 'r') body = file.readline() # print("Data from text file ::", body) assert entire_text.__contains__(body) print("All the Text in 'edit_user screen' is displayed as expected") def select_add_button_after_zoom(self): time.sleep(2) addbtn = self.driver.find_element_by_xpath(self.button_add_xpath) self.driver.execute_script("document.body.style.zoom = '120%'"); time.sleep(2) self.driver.execute_script("arguments[0].scrollIntoView();", addbtn) self.driver.execute_script("arguments[0].click();", addbtn) print("Add button selected after applying zoom ") self.logger.info("**************** Add button Selected after applying zoom ****************") def select_users_Link_after_zoom(self): time.sleep(2) users = self.driver.find_element_by_link_text(self.lnk_Users_linktext) self.driver.execute_script("document.body.style.zoom = '80%'"); time.sleep(2) self.driver.execute_script("arguments[0].scrollIntoView();", users) self.driver.execute_script("arguments[0].click();", users) print("Users link selected after applying zoom ") self.logger.info("**************** Users link Selected after applying zoom ****************") def select_users_Link_with_mouse(self): time.sleep(5) users_link = self.driver.find_element_by_link_text(self.lnk_Users_linktext) actions = ActionChains(self.driver) actions.move_to_element(users_link).click_and_hold(users_link).perform() time.sleep(1) actions.release().perform() print("Users link selected with mouse ") self.logger.info("**************** Users link selected with mouse ****************") def select_add_button_with_mouse(self): time.sleep(3) addbtn = self.driver.find_element_by_xpath(self.button_add_xpath) actions = ActionChains(self.driver) actions.move_to_element(addbtn).click_and_hold(addbtn).perform() time.sleep(1) actions.release().perform() print("Add button selected with mouse ") self.logger.info("**************** Add button selected with mouse ****************")
class Common_role_portal(): logger = LogGen.loggen() def headers(self): smurl = ReadConfig.sm_for_encryption() cmurl = ReadConfig.cm_for_decryption() # print("\n Sm_URL is ::", smurl) # print("\n CM URL is ::", cmurl) headers = {'Content-Type': 'application/json'} body = { "userName": "******", "password": "******" } encryption = requests.post(cmurl + '/encryptDecrypt/encrypt', headers=headers, data=json.dumps(body, indent=4)) encrypted_body = encryption.text a = json.loads(encrypted_body) # print("\n Encrypted_body is ::", a) resp = requests.post(smurl + '/getSMToken', headers=headers, data=json.dumps(a, indent=4)) encrypted_text = resp.text d = json.loads(encrypted_text) message = d["status_message"] # print("\n encrypted_text-->status_message is ::", message) msg = json.loads(message) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(msg, indent=4)) token1 = resp1.text # print(" \n Full Token is ::", token1) e = json.loads(token1) accesstoken = "Bearer " + e["accessToken"] # print("\n AccessToken :::\n", accesstoken) headers = { 'Content-Type': 'application/json', 'Authorization': accesstoken } return headers def verify_roles_from_sm_with_api(self, roleName): com = Common_role_api() headers = com.headers() url = ReadConfig.sm() cmurl = ReadConfig.cm_for_decryption() r = requests.get(url + "/getRoles", headers=headers) data = r.json() # print("Data from SM::\n", r.json()) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(data, indent=4)) roles = resp1.json() # print("Roles are ::", roles) # extracting data in json format list = [] for item in roles: userroles = item.get('userRoleName') list.append(userroles) # print("Roles are :::\n", list) if list.__contains__(roleName): assert list.__contains__(roleName) == True print("\n Created Role present in the SM(checking with API) ::::", roleName) # logger.info("**************** Role present in the SM ****************") else: assert list.__contains__(roleName) != True print("\n Role not present in the SM(checking with API) ::::", roleName)
def test(): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ######### create role ############### role_name = "test_" + datetime.now().strftime('%y%m%d%H%M%S%f') logger.info('------- create role with default privs {}'.format(role_name)) body_raw = { 'name': role_name, 'privs_set': { 'methods_create': '1', 'methods_edit': '1', 'methods_delete': '1', 'aa_create': '0', 'aa_edit': '0', 'aa_delete': '0' } } body_encoded = json.dumps(body_raw).encode('utf-8') r = http.request(method='POST', url=url_sm_ui + 'roles/create_role', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) ############## update ############ logger.info('------- update some privs in that role {}'.format(role_name)) body_raw = { 'name': role_name, 'privs_set': { 'methods_create': '1', 'methods_edit': '0', #'methods_delete': '1', 'aa_create': '1', 'aa_edit': '0', #'aa_delete': '0' } } body_encoded = json.dumps(body_raw).encode('utf-8') r = http.request(method='POST', url=url_sm_ui + 'roles/update_role', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status" ######### get/check ############### logger.info('------- get/check role -------') fields = { 'name': role_name, } r = http.request(method='GET', url=url_sm_ui + 'roles/get_role', fields=fields, retries=False, timeout=timeout) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) assert data['privs_get']['methods_create'] == 1 assert data['privs_get']['methods_edit'] == 0 assert data['privs_get']['methods_delete'] == 1 assert data['privs_get']['aa_create'] == 1 assert data['privs_get']['aa_edit'] == 0 assert data['privs_get']['aa_delete'] == 0 logger.info('------- test done --------')
def test_updateRole_editBy_with50Characters_004(): logger = LogGen.loggen() com = Common_role_api() logger.info( "**************** Test_004: Test updateRole when user sends - editBy with 50 characters ****************" ) logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164302?projectId=50" ) print( "**************** Test_004: Test updateRole when user sends - editBy with 50 characters ****************" ) print( "Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164302?projectId=50" ) list = com.getRolesList() roleName = random.choice(list) print("\n Updating Role ::", roleName) file = open("./tests_admin/testCases/update_role_api.json", 'r') body = json.loads(file.read()) body['editedBy'] = 'abcde12345abcde12345abcde12345abcde12345abcde12345' body['userRoleName'] = "vijay" com.update_role_positive(body, roleName) com.verify_updated_role_from_sm_with_api(roleName) e = com.verify_update_roleName_options(roleName) assert e['createMethod'] == True assert e['editMethod'] == True assert e['deleteMethod'] == True assert e['createActionAlertLevel'] == True assert e['editActionAlertLevel'] == True assert e['deleteActionAlertLevel'] == True assert e['createHandlingRule'] == True assert e['editHandlingRule'] == True assert e['deleteHandlingRule'] == True assert e['createSample'] == False assert e['editSample'] == False assert e['deleteSample'] == False assert e['createProduct'] == False assert e['editProduct'] == False assert e['deleteProduct'] == False assert e['createUser'] == False assert e['editUser'] == False assert e['deleteUser'] == False assert e['createUserRole'] == False assert e['editUserRole'] == False assert e['deleteUserRole'] == False assert e['cancelCassettes'] == True assert e['retrieveCassettes'] == True assert e['approveCassettes'] == True assert e['cleanupCassettes'] == True assert e['orderTests'] == True assert e['loadTests'] == True assert e['printProductLabels'] == True assert e['administerGD'] == False assert e['editSettings'] == False assert e['maintenance'] == False assert e['acknowledgeSystemAlarms'] == True assert e['acknowledgeSystemErrors'] == True assert e['acknowledgeSystemServiceIssues'] == True assert e['editAlarmNotifications'] == False assert e['emptyTrash'] == True assert e['service'] == False assert e['editITSettings'] == False assert e['editLimsSettings'] == False assert e['printLimsLabels'] == False assert e['modifyLimsRequest'] == False assert e['editLimsTestResultsFields'] == False assert e['sendSystemLogs'] == True
class dashboard_viewer(): logger = LogGen.loggen() # Header & menus title_header_xpath = "//*[@class='toolbar__title']" lnk_Users_linktext = "Users" lnk_Roles_linktext = "Roles" lnk_Viewer_linktext = "Viewer" lnk_Logout_linktext = "Logout" # Site & Instrument No option_site_xpath = "(//*[text()='Site :']/following-sibling::h5)[1]" numberOfInstruments_xpath = "//*[normalize-space()='Number of Instruments :']//following-sibling::h5" # Day Option dropdown_dayOptionClick_xpath = "(//button[contains(@class,'dropdown-toggle')])[1]" dropdown_daySelect_xpath = "//div[@class='dropdown-menu show']//button" # Custom Search dropdown_customSearchClick_xpath = "(//button[contains(@class,'dropdown-toggle')])[2]" dropdown_customSearchSelect_xpath = "//div[@class='dropdown-menu show']//button" textbox_customSearch_dateFrom_xpath = "(//div[contains(@class,'datepicker')]//input)[1]" textbox_customSearch_dateTo_xpath = "(//div[contains(@class,'datepicker')]//input)[2]" textbox_customSearch_SerialNo_SampleID_LIMSID_xpath = "(//div//input)[3]" button_Search_xpath = "//button[@id='srch']//img" # Site Summary table_siteInstrumentName_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//a" table_siteInstrumentID_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//div" table_siteLoaded_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//div" table_siteCompleted_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//div" table_siteApproved_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}//div" table_siteFailed_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//div" table_siteActive_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//div" table_siteOrdered_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//div" table_siteLastTestDate_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//div" link_pagination_xpath = "//a[@class='page-link']" # Instrument Summary table_instrumentInstName_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]" table_instrumentInstID_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]" table_instrumentSampleID_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]" table_instrumentLIMSID_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]" table_instrumentSerialNo_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//a" table_instrumentLotID_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]" table_instrumentLoaded_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//div" table_instrumentLoadedBy_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]" table_instrumentStatus_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]" table_instrumentCFU_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]" table_instrumentCompleted_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//div" table_instrumentApproved_xpath = "//th[@title='{}']/ancestor::div//div[@class='react-bs-container-body']//td[{}]//div" def __init__(self, driver): self.driver = driver def select_viewer(self): viewerButton = self.driver.find_element_by_link_text( self.lnk_Viewer_linktext) if viewerButton.is_displayed() & viewerButton.is_enabled(): viewerButton.click() print("Viewer button selected") self.logger.info( "**************** Viewer button Selected ****************") title = self.driver.find_element_by_xpath( self.title_header_xpath).text if "Site" in title: print("Site summary screen is displayed") self.logger.info( "**************** Site summary screen is displayed ****************" ) else: print("Site summary screen is not displayed") self.logger.info( "**************** Site summary screen is not displayed ****************" ) else: print("Viewer button not displayed or not selected") self.logger.info( "**************** Viewer button not displayed or not selected ****************" ) raise Exception("FAILED") def verify_dashboard_header(self): header = self.driver.find_element_by_xpath( self.title_header_xpath).text if (len(header)) > 0: if header == 'Growth Direct - Site Summary': print("Dashboard header is displayed correctly") self.logger.info( "**************** Dashboard header is displayed correctly ****************" ) else: print("Incorrect Dashboard header") self.logger.info( "**************** Incorrect Dashboard header ****************" ) else: print("Dashboard header is not displayed") self.logger.info( "**************** Dashboard header is not displayed ****************" ) raise Exception("FAILED") def verify_optionsite(self): option = self.driver.find_element_by_xpath(self.option_site_xpath).text print("value" + option) if (len(option)) > 0: if option == 'Lowell': print("Dashboard: Default option site value is validated") self.logger.info( "**************** Dashboard: Default option site value is validated ****************" ) else: print("Dashboard: Incorrect default option site value") self.logger.info( "**************** Dashboard: Incorrect default option site value ****************" ) else: print("Dashboard: Default option site is not displayed") self.logger.info( "**************** Dashboard: Default option site is not displayed ****************" ) raise Exception("FAILED") def verify_numberOfInstrument(self): number = self.driver.find_element_by_xpath( self.numberOfInstruments_xpath).text if (len(number)) >= 0: if number.isnumeric(): print("Dashboard: Number of Instrument value displayed is " + number) self.logger.info( "**************** Dashboard: Number of Instrument value is " + number + " ****************") else: print("Dashboard: Incorrect Instrument value") self.logger.info( "**************** Dashboard: Incorrect Instrument value ****************" ) else: print("Dashboard: CM address is not configured in SM") self.logger.info( "**************** Dashboard: CM address is not configured in SM ****************" ) def click_dayOption_dropdown(self): self.driver.find_element_by_xpath( self.dropdown_dayOptionClick_xpath).click() def verify_dayOption_dropdown(self): dropdownlst = self.driver.find_elements_by_xpath( self.dropdown_daySelect_xpath) print(len(dropdownlst)) if (len(dropdownlst)) > 0: for i in range(len(dropdownlst)): print('{}. {}'.format(i + 1, dropdownlst[i].text)) if i + 1 == len(dropdownlst): print("Dashboard: Day dropdown options is validated") self.logger.info( "**************** Dashboard: Day dropdown options is validated ***************" ) else: print("Dashboard: Day dropdown options is not validated") self.logger.info( "**************** Dashboard: Day dropdown options is not validated ***************" ) else: print("Dashboard: Day dropdown options is not displayed") self.logger.info( "**************** Dashboard: Day dropdown options is not displayed ***************" ) raise Exception("FAIL") def select_dayOption_dropdown(self, value): dropdownlst = self.driver.find_elements_by_xpath( self.dropdown_daySelect_xpath) print(len(dropdownlst)) flag = 0 if (len(dropdownlst)) > 0: for i in range(len(dropdownlst)): if value in dropdownlst[i].text: dropdownlst[i].click() flag = 1 print(flag) break if flag != 0: print("Dashboard: " + value + " option is selected") self.logger.info("**************** Dashboard: " + value + " option is selected ***************") else: print("Dashboard: " + value + " is not displayed in the day option dropdown") self.logger.info( "**************** Dashboard: " + value + " is not displayed in the day option dropdown ***************" ) raise Exception("FAILED") def click_customSearch_dropdown(self): self.driver.find_element_by_xpath( self.dropdown_customSearchClick_xpath).click() def verify_customSearch_dropdown(self): dropdownlst = self.driver.find_elements_by_xpath( self.dropdown_customSearchSelect_xpath) print(len(dropdownlst)) if (len(dropdownlst)) > 0: for i in range(len(dropdownlst)): print('{}. {}'.format(i + 1, dropdownlst[i].text)) if i + 1 == len(dropdownlst): print("Dashboard: Custom search options is validated") self.logger.info( "**************** Dashboard: Custom search options is validated ***************" ) else: print("Dashboard: Custom search options is not validated") self.logger.info( "**************** Dashboard: Custom search options is not validated ***************" ) else: print("Dashboard: Custom search dropdown options is not displayed") self.logger.info( "**************** Dashboard: Custom search dropdown options is not displayed ***************" ) raise Exception("FAIL") def select_customSearch_dropdown(self, value): dropdownlst = self.driver.find_elements_by_xpath( self.dropdown_customSearchSelect_xpath) print(len(dropdownlst)) flag = 0 if (len(dropdownlst)) > 0: for i in range(len(dropdownlst)): if value in dropdownlst[i].text: dropdownlst[i].click() flag = 1 print(flag) break if flag != 0: print("Dashboard: " + value + " option is selected") self.logger.info("**************** Dashboard: " + value + " option is selected ***************") if (value == "Date Range"): self.driver.find_element_by_xpath( self.textbox_customSearch_dateFrom_xpath).send_keys( Keys.CONTROL, 'a' + Keys.NULL, '12/31/2011') time.sleep(2) self.driver.find_element_by_xpath( self.textbox_customSearch_dateTo_xpath).send_keys( Keys.CONTROL, 'a' + Keys.NULL, '12/31/2013') time.sleep(2) self.driver.find_element_by_xpath( self.button_Search_xpath).click() print("Dashboard: " + value + " is searched successfully") self.logger.info( "**************** Dashboard: " + value + " is searched successfully ****************") else: self.driver.find_element_by_xpath( self. textbox_customSearch_SerialNo_SampleID_LIMSID_xpath ).send_keys("test123") time.sleep(2) self.driver.find_element_by_xpath( self.button_Search_xpath).click() print("Dashboard: " + value + " is searched successfully") self.logger.info( "**************** Dashboard: " + value + " is searched successfully ****************") else: print("Dashboard: " + value + " is not displayed in the custom search dropdown") self.logger.info( "**************** Dashboard: " + value + " is not displayed in the custom search dropdown ***************" ) raise Exception("FAILED") def table_verifyColumn(self, columnName, columnNo): tableList = self.table_siteInstrumentName_xpath.format( columnName, columnNo) print(len(tableList)) if (len(tableList)) > 0: for i in range(len(tableList)): print('{}. {}'.format(i + 1, tableList[i].text)) if i + 1 == len(tableList): print("Dashboard Site Summary: " + columnName + " column is displayed") self.logger.info("**************** Dashboard Site Summary: " + columnName + " column is displayed ***************") else: print("Dashboard Site Summary: " + columnName + " column is not displayed") self.logger.info("**************** Dashboard Site Summary: " + columnName + " column is not displayed ***************") else: print("Dashboard: Custom search dropdown options is not displayed") self.logger.info( "**************** Dashboard: Custom search dropdown options is not displayed ***************" ) raise Exception("FAIL") def table_selectColumn(self, columnName, columnNo): tableList = self.table_siteInstrumentName_xpath.format( columnName, columnNo) print("value" + tableList.text()) if columnName == "Instrument Name": print("colname" + columnName) for i in range(len(tableList)): print("for") if columnName in tableList[i].text: print("success") tableList[i].click() for element in tableList: print("success") print(element.text) #self.driver.find_element_by_xpath(self.table_siteInstrumentName_xpath.format(columnName, columnNo)).click() print("Dashboard Viewer - Site Summary " + columnName + " is displayed") self.logger.info( "**************** Dashboard Viewer - Site Summary " + columnName + " is displayed ****************")
def test(): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ############# get/count users #################### logger.info('------- get list of users -------') r = http.request(method='GET', url=url_sm_ui + 'users/get_list', fields={}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status" jdata = json.loads(r.data.decode('utf-8')) count_before_total = len(jdata) count_before_enabled = sum(value['enabled'] == 'Yes' for value in jdata.values()) count_before_disabled = sum(value['enabled'] == 'No' for value in jdata.values()) logger.info( 'count_total = {} count_enabled = {} count_disabled = {}'.format( count_before_total, count_before_enabled, count_before_disabled)) ############# create #################### username = "******" + datetime.now().strftime('%y%m%d%H%M%S%f') role_name = 'Operator' logger.info('------- create user {} with role {}'.format( username, role_name)) letters = string.ascii_lowercase first = ''.join(random.choice(letters) for i in range(6)) middle = ''.join(random.choice(letters)) last = ''.join(random.choice(letters) for i in range(6)) email = uuid.uuid4().hex.upper()[0:6] + r'@rapidmicrobio.com' password = r'BlahBlah123@' phone = '123-456-7890' extension = '123' role = 'Operator' body_raw = { 'first': first, 'middle': middle, 'last': last, 'username': username, 'email': email, 'password': password, 'phone': phone, 'extension': extension, 'role_name': role_name } body_encoded = json.dumps(body_raw).encode('utf-8') r = http.request(method='POST', url=url_sm_ui + 'users/create_user', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status {} {}".format( r.status, r.data) ############# get/check #################### logger.info( '------- get list of users, check enabled/disabled count -------') r = http.request(method='GET', url=url_sm_ui + 'users/get_list', fields={}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status" jdata = json.loads(r.data.decode('utf-8')) count_after_total = len(jdata) count_after_enabled = sum(value['enabled'] == 'Yes' for value in jdata.values()) count_after_disabled = sum(value['enabled'] == 'No' for value in jdata.values()) logger.info( 'count_total = {} count_enabled = {} count_disabled = {}'.format( count_after_total, count_after_enabled, count_after_disabled)) assert count_after_total == count_before_total + 1 assert count_after_enabled == count_before_enabled + 1 assert count_after_disabled == count_before_disabled ############# disable #################### logger.info('------- disable user -------') body_raw = { 'username': username, } body_encoded = json.dumps(body_raw).encode('utf-8') r = http.request(method='POST', url=url_sm_ui + 'users/disable_user', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status" ############# get/check #################### logger.info( '------- get list of users, check enabled/disabled count -------') r = http.request(method='GET', url=url_sm_ui + 'users/get_list', fields={}, retries=False, timeout=timeout) assert r.status == 200, "response has bad status" jdata = json.loads(r.data.decode('utf-8')) count_after_total = len(jdata) count_after_enabled = sum(value['enabled'] == 'Yes' for value in jdata.values()) count_after_disabled = sum(value['enabled'] == 'No' for value in jdata.values()) logger.info( 'count_total = {} count_enabled = {} count_disabled = {}'.format( count_after_total, count_after_enabled, count_after_disabled)) assert count_after_total == count_before_total + 1, "counts before/after = {} {}".format( count_after_total, count_before_total) assert count_after_enabled == count_before_enabled assert count_after_disabled == count_before_disabled + 1 logger.info('------- test done --------')
def test_updateRole_without_roleName_012(): logger = LogGen.loggen() com = Common_role_api() logger.info( "**************** Test_012: Test updateRole when user sends - Request without RoleName in JSON ****************" ) logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164302?projectId=50" ) print( "**************** Test_012: Test updateRole when user sends - Request without RoleName in JSON ****************" ) print( "Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164302?projectId=50" ) url = ReadConfig.sm() # Additional headers. headers = com.headers() # Body a = { 'editedBy': 'admin', 'createMethod': 'true', 'editMethod': 'true', 'deleteMethod': 'true', 'createActionAlertLevel': 'true', 'editActionAlertLevel': 'true', 'deleteActionAlertLevel': 'true', 'createHandlingRule': 'true', 'editHandlingRule': 'true', 'deleteHandlingRule': 'true', 'createSample': 'false', 'editSample': 'false', 'deleteSample': 'false', 'createProduct': 'false', 'editProduct': 'false', 'deleteProduct': 'false', 'createUser': '******', 'editUser': '******', 'deleteUser': '******', 'createUserRole': 'false', 'editUserRole': 'false', 'deleteUserRole': 'false', 'cancelCassettes': 'true', 'retrieveCassettes': 'true', 'approveCassettes': 'true', 'cleanupCassettes': 'true', 'orderTests': 'true', 'loadTests': 'true', 'printProductLabels': 'true', 'administerGD': 'false', 'editSettings': 'false', 'maintenance': 'false', 'acknowledgeSystemAlarms': 'true', 'acknowledgeSystemErrors': 'true', 'acknowledgeSystemServiceIssues': 'true', 'editAlarmNotifications': 'false', 'emptyTrash': 'true', 'service': 'false', 'editITSettings': 'false', 'editLimsSettings': 'false', 'printLimsLabels': 'false', 'modifyLimsRequest': 'false', 'editLimsTestResultsFields': 'false', 'sendSystemLogs': 'true' } # convert dict to json string by json.dumps() for body data. resp = requests.post(url + '/updateRole', headers=headers, data=json.dumps(a, indent=4)) print("\nResponse is :::\n", resp.text) assert resp.status_code != 200 logger.info("**************** Role not Updated ****************") print(" Role not updated")
class cm_userlist(): logger = LogGen.loggen() # Header title_header_xpath = "//*[@class='toolbar__title']" title_addUser_popup_xpath = "//*[text()='Add CM User']" title_editUser_popup_xpath = "//*[text()='Edit CM User']" title_activateUser_popup_xpath = "//*[text()='Activate CM User']" title_deactivateUser_popup_xpath = "//*[text()='DeActivate CM User']" # Links lnk_CMUsers_linktext = "CM Users" lnk_Logout_linktext = "Logout" # Buttons button_add_xpath = "//*[contains(text(),'Add')]" button_closeSymbol_xpath = "//*[text()='×']" button_save_xpath = "//*[contains(text(),'Save')]" button_close_xpath = "//button[contains(text(),'Close')]" button_DeactivateAll_xpath = "//*[contains(text(),'Deactivate All')]" button_EDIT_xpath = "//*[contains(text(),'Edit')]" button_Activate_xpath = "//*[contains(text(),'Activate')]" button_Deactivate_xpath = "//*[contains(text(),'Deactivate')]" button_ok_xpath = "//button[contains(text(),'Ok')]" # table table_header_Username_xpath = "//div[@id = 'column-username']//div" table_header_Roles_xpath = "//div[@id = 'column-roleNames']//div" table_header_Active_xpath = "//div[@id = 'column-active']//div" table_column_SortIcon_Username_xpath = "//div[@id = 'column-username']//span" table_column_SortIcon_Roles_xpath = "//div[@id = 'column-roleNames']//span" table_column_SortIcon_Active_xpath = "//div[@id = 'column-active']//span" table_columnValues_Username_xpath = "//div[contains(@class,'rdt_TableRow')]//div[2]//div" table_columnValues_Roles_xpath = "//div[contains(@class,'rdt_TableRow')]//div[3]//div" table_columnValues_Active_xpath = "//div[contains(@class,'rdt_TableRow')]//div[4]//span" table_columnValues_Edit_xpath = "//div[contains(@class,'rdt_TableRow')]//div[5]//button" table_columnValues_Activate_Deactivate_xpath = "//div[contains(@class,'rdt_TableRow')]//div[6]//button" table_cellvalue_Username_xpath = "//div[text()='{}']" table_cellvalue_Roles_xpath = "(//div[contains(text(),'{}')]//parent::div)[1]//parent::div//div[3]//div" table_cellvalue_Active_xpath = "(//div[contains(text(),'{}')]//parent::div)[1]//parent::div//div[4]//span" table_cellvalue_Edit_xpath = "(//div[contains(text(),'{}')]//parent::div)[1]//parent::div//button[contains(text(),'Edit')]" table_cellvalue_Activate_Deactivate_xpath = "(//div[contains(text(),'{}')]//parent::div)[1]//parent::div//button[contains(text(),'Activate')] " \ "| (//div[contains(text(),'{}')]//parent::div)[1]//parent::div//button[contains(text(),'Deactivate')]" # Pagination select_rowsPerPageOptionsList_xpath = "//*[contains(text(),'Rows per page')]//following-sibling::div//select//option" select_rowsPerPage_xpath = "//*[contains(text(),'Rows per page')]//following-sibling::div//select" text_rowsDisplayed_xpath = "//*[contains(text(),'Rows per page')]//following-sibling::span" button_firstPage_xpath = "//button[@id='pagination-first-page']" button_previousPage_xpath = "//button[@id='pagination-previous-page']" button_nextPage_xpath = "//button[@id='pagination-next-page']" button_lastPage_xpath = "//button[@id='pagination-last-page']" # Add/Edit Form textbox_username_ID = "username" textbox_password_ID = "password" checkbox_activate_ID = "active" select_role_xpath = "//select[@id='role']" select_role_list_options_xpath = "//select[@id='role']//option" # Errors initial_username_error_xpath = "//*[contains(text(),'*Please enter your username.')]" username_error_xpath = "//*[contains(text(),'*Please enter alphabet characters only.')]" password_error_xpath = "//*[@id='password']/following-sibling::div" role_error_xpath = "//*[@id='role']/following-sibling::div" # Others text_Activate_DeActivate_popup_xpath = "//p" def __init__(self, driver): self.driver = driver def select_CM_users_Link(self): wait = WebDriverWait(self.driver, 10) wait.until(EC.visibility_of_element_located( (By.LINK_TEXT, "CM Users"))) self.driver.find_element_by_link_text( self.lnk_CMUsers_linktext).click() print("CM Users link selected") self.logger.info( "**************** CM Users button Selected ****************") title = self.driver.find_element_by_xpath(self.title_header_xpath).text if "Central Manager" in title: print("CM UserList page is displayed") self.logger.info( "**************** CM UserList page is displayed ****************" ) else: print("CM UserList page is not displayed") self.logger.info( "**************** CM UserList page is not displayed ****************" ) try: wait = WebDriverWait(self.driver, 10) wait.until( EC.visibility_of_element_located( (By.XPATH, "//*[contains(text(),'Edit')]"))) self.driver.find_element_by_xpath(self.button_EDIT_xpath) print("CM Userlist displayed") self.logger.info( "**************** CM Userlist are displayed ****************" ) except Exception: print("CM Userlist is not displayed") self.capture_screenshot() raise Exception("FAILED") def verify_CM_users_header(self): header = self.driver.find_element_by_xpath( self.title_header_xpath).text print("CM Users Page Header :: " + header) if (len(header)) > 0: if header == 'Central Manager - User List': print("CM Users header is displayed correctly") self.logger.info( "**************** CM Users header is displayed correctly ****************" ) else: print("Incorrect CM Users header") self.logger.info( "**************** Incorrect CM Users header ****************" ) else: print("CM Users header is not displayed") self.logger.info( "**************** CM Users header is not displayed ****************" ) raise Exception("FAILED") def select_add_button(self): try: wait = WebDriverWait(self.driver, 10) wait.until( EC.visibility_of_element_located( (By.XPATH, "//*[contains(text(),'Add')]"))) self.driver.find_element_by_xpath(self.button_add_xpath).click() time.sleep(3) print("Add button clicked") self.logger.info( "**************** Add button clicked ****************") except Exception: raise Exception("Add button is not clicked") def verify_add_CM_user_popup_header(self): wait = WebDriverWait(self.driver, 10) wait.until( EC.visibility_of_element_located( (By.XPATH, "//*[text()='Add CM User']"))) add_header = self.driver.find_element_by_xpath( self.title_addUser_popup_xpath).text print("CM User Add popup header :: " + add_header) if (len(add_header)) > 0: if add_header == 'Add CM User': print("CM Users Add popup header is displayed correctly") self.logger.info( "**************** CM Users Add popup header is displayed correctly ****************" ) else: print("Incorrect CM Users Add popup header") self.logger.info( "**************** Incorrect CM Users Add popup header ****************" ) else: print("CM Users Add popup header is not displayed") self.logger.info( "**************** CM Users Add popup header is not displayed ****************" ) raise Exception("FAILED") def send_username_textbox(self): username = self.driver.find_element_by_id( self.textbox_username_ID).text if (len(username) == 0): print("Username field is empty") x = Xeger(limit=50) y = x.xeger("^[0-9A-Z]{1,50}$") self.driver.find_element_by_id(self.textbox_username_ID).clear() self.driver.find_element_by_id( self.textbox_username_ID).send_keys(y) print("Entering 'Username' ::" + y) self.logger.info( "**************** Username entered ****************") return y else: print("Username field value is :::", username) self.driver.find_element_by_id(self.textbox_username_ID).clear() x = Xeger(limit=50) y = x.xeger("^[a-zA-Z0-9]+$") self.driver.find_element_by_id( self.textbox_username_ID).send_keys(y) print("Updated 'Username' is ::" + y) self.logger.info( "**************** Username entered ****************") return y def send_password_textbox(self): password = self.driver.find_element_by_id(self.textbox_password_ID) password_value = password.get_attribute("value") if (len(password_value) == 0): print("\n password Name field is empty") x = Xeger(limit=50) # y = x.xeger("^(?=.{8,32}$)(?=.*[A-Z])(?=.*[0-9]).*") # y=x.xeger("^[A-Z][0-9]*.{8,32}$") y = x.xeger("^[0-9A-Z]{8,32}$") print(y) # y = x.xeger("^(?=.*[0-9])(?=.*[A-Z]).{8,32}$") # x.xeger("^[a-zA-Z0-9]+$") self.driver.find_element_by_id(self.textbox_password_ID).clear() self.driver.find_element_by_id( self.textbox_password_ID).send_keys(y) print("Entered text in the 'password' textbox is ::" + y) self.logger.info( "**************** password entered ****************") return y else: print("\n Existing extension is :::", password_value) x = Xeger(limit=50) y = x.xeger("^[0-9A-Z]{8,32}$") self.driver.find_element_by_id(self.textbox_password_ID).clear() self.driver.find_element_by_id( self.textbox_password_ID).send_keys(y) print("Entered text in the 'password' textbox is ::" + y) self.logger.info( "**************** password entered ****************") return y def check_activate_checkbox(self): checked = self.driver.execute_script( "return document.getElementById('active').checked") if not checked: self.driver.find_element_by_id(self.checkbox_activate_ID).click() print("Activate box - checked") self.logger.info( "**************** Checked Activate checkbox ****************") def uncheck_activate_checkbox(self): checked = self.driver.execute_script( "return document.getElementById('active').checked") if checked: self.driver.find_element_by_id(self.checkbox_activate_ID).click() print("Activate box - unchecked") self.logger.info( "**************** Unchecked Activate checkbox ****************") def get_all_roles(self): select_roles = Select( self.driver.find_element_by_xpath(self.select_role_xpath)) for option in select_roles.options: print("Role Options : " + option.text) def select_all_role(self): select_roles = Select( self.driver.find_element_by_xpath(self.select_role_xpath)) select_roles.select_by_index(0) time.sleep(2) actions = ActionChains(self.driver) # for option in select_roles.options: # print("Role Options : "+option.text) # actions.move_to_element(option).click_and_hold(option).perform() # time.sleep(1) actions.key_down(Keys.CONTROL).send_keys("a").key_up( Keys.CONTROL).perform() print("All Roles selected ") self.logger.info( "**************** All Roles selected ****************") def select_single_role_runtime(self, value): Role_lst = Select( self.driver.find_element_by_xpath(self.select_role_xpath)) print(len(Role_lst.options)) flag = 0 if (len(Role_lst.options)) > 0: for i in range(len(Role_lst.options)): print(Role_lst.options[i].text) time.sleep(1) actions = ActionChains(self.driver) self.driver.execute_script("arguments[0].scrollIntoView();", Role_lst.options[i]) if value in Role_lst.options[i].text: print(value + " option is present in the role dropdown") Role_lst.options[i].click() flag = 1 print(flag) break if flag != 0: print("CM Add User: "******" role is selected") self.logger.info("**************** CM Add User: "******" role is selected ***************") else: print("CM Add User: "******" is not displayed in the role dropdown") self.logger.info( "**************** CM Add User: "******" is not displayed in the role dropdown ***************") raise Exception("FAILED") def select_Random_roles_options(self): Role_lst = Select( self.driver.find_element_by_xpath(self.select_role_xpath)) list = random.sample(Role_lst.options, 3) rolesToSelect = [] for i in list: data = i.text rolesToSelect.append(data) print("Random options are ", rolesToSelect) for role in list: actions = ActionChains(self.driver) if not role.is_selected(): actions.key_down(Keys.CONTROL).move_to_element( role).click_and_hold(role).release().perform() time.sleep(1) print("Random roles selected") self.logger.info( "**************** Random roles selected ****************") def select_save_button(self): time.sleep(2) save = self.driver.find_element_by_xpath(self.button_save_xpath) print("Save button displayed") save.click() print("Save button selected") self.logger.info( "**************** Save button selected ****************") def select_close_button(self): self.driver.maximize_window() self.driver.find_element_by_xpath(self.button_close_xpath).click() close = self.driver.find_element_by_xpath(self.button_close_xpath) actions = ActionChains(self.driver) actions.move_to_element(close).perform() print("Close button clicked ") self.logger.info( "**************** close button selected ****************") def select_edit_user_button(self, username): self.driver.find_element_by_xpath( self.table_cellvalue_Edit_xpath.format(username)).click() print("Edit button clicked") self.logger.info( "**************** Edit button selected ****************") title_text = self.driver.find_element_by_xpath( self.title_editUser_popup_xpath).text assert title_text == "Edit CM User" print("Edit CM User - title displayed ") print("Edit CM User popup screen is displayed") self.logger.info( "**************** Edit CM User popup displayed ****************") def select_activate_user(self, username): time.sleep(2) element = self.driver.find_element_by_xpath( self.table_cellvalue_Activate_Deactivate_xpath.format( username, username)) print("value" + element.text) if element.text == "Activate": element.click() print("Activate button selected") self.logger.info( "**************** Activate button selected ****************") title_text = self.driver.find_element_by_xpath( self.title_activateUser_popup_xpath).text assert title_text == "Activate CM User" print("Activate CM User popup displayed") self.logger.info( "**************** Activate CM User popup displayed ****************" ) message = self.driver.find_element_by_xpath( self.text_Activate_DeActivate_popup_xpath) if username in message.text: self.driver.find_element_by_xpath(self.button_ok_xpath).click() print("Activating CM User Successfully") self.logger.info( "**************** Activating CM User Successfully ****************" ) else: self.driver.find_element_by_xpath( self.button_close_xpath).click() print("Closed Activate CM User Popup") self.logger.info( "**************** Closed Activate CM User Popup ****************" ) else: assert element.text == "Deactivate" print("CM User " + username + " is already in active state") self.logger.info("**************** CM User " + username + " is already in active state ****************") def check_status_on_user_activation(self, username): time.sleep(2) element = self.driver.find_element_by_xpath( self.table_cellvalue_Activate_Deactivate_xpath.format( username, username)) if element.text == "Deactivate": print(username + " user is in Activated State") self.logger.info("**************** " + username + " user is in Activated State ****************") else: print(username + " user is not activated successfully") self.logger.info( "**************** " + username + " user is not activated successfully ****************") def select_Deactivate_user(self, username): time.sleep(2) element = self.driver.find_element_by_xpath( self.table_cellvalue_Activate_Deactivate_xpath.format( username, username)) print("value" + element.text) if element.text == "Deactivate": element.click() print("Deactivate button selected") self.logger.info( "**************** Deactivate button selected ****************" ) title_text = self.driver.find_element_by_xpath( self.title_deactivateUser_popup_xpath).text assert title_text == "DeActivate CM User" print("Deactivate CM User popup displayed") self.logger.info( "**************** Deactivate CM User popup displayed ****************" ) message = self.driver.find_element_by_xpath( self.text_Activate_DeActivate_popup_xpath) if username in message.text: self.driver.find_element_by_xpath(self.button_ok_xpath).click() print("DeActivated CM User Successfully") self.logger.info( "**************** DeActivated CM User Successfully ****************" ) else: self.driver.find_element_by_xpath( self.button_close_xpath).click() print("Closed Deactivate CM User Popup") self.logger.info( "**************** Closed Deactivate CM User Popup ****************" ) else: assert element == "Activate" print("CM User " + username + " is already in deactive state") self.logger.info("**************** CM User " + username + " is already in deactive state ****************") def check_status_on_user_deactivation(self, username): time.sleep(2) element = self.driver.find_element_by_xpath( self.table_cellvalue_Activate_Deactivate_xpath.format( username, username)) if element.text == "Activate": print(username + " user is in Deactivated State") self.logger.info("**************** " + username + " user is in Deactivated State ****************") else: print(username + " user is not deactivated successfully") self.logger.info( "**************** " + username + " user is not deactivated successfully ****************") def search_toastify(self, creating_user): wait = WebDriverWait(self.driver, 10) wait.until( EC.visibility_of_element_located( (By.XPATH, "//div[@class='Toastify__toast-body']"))) message = self.driver.find_element_by_xpath( "//div[@class='Toastify__toast-body']") self.driver.execute_script("arguments[0].scrollIntoView();", message) # self.driver.execute_script("arguments[0].click();", roles_link) print("Received toast Pop_up is::", message.text) if "Success" in message.text and creating_user in message.text: print(" ::::success toast alert displayed ::::") self.logger.info( "**************** Success toast popup displayed ****************" ) else: print("Failure toast alert displayed") self.logger.info( "**************** Failure/Error toast popup displayed ****************" ) allure.attach(self.driver.get_screenshot_as_png(), name="", attachment_type=AttachmentType.PNG) self.capture_screenshot() self.driver.quit() raise Exception("FAILED") time.sleep(5) print("Created user is ::", creating_user) def username_error(self): try: self.driver.implicitly_wait(1) err = self.driver.find_element_by_xpath( self.initial_username_error_xpath).text print("Error Displayed :: ", err) except Exception: pass try: err = self.driver.find_element_by_xpath( self.username_error_xpath).text print("UserName Error :: " + err) except Exception: pass def password_error(self): try: err = self.driver.find_element_by_xpath( self.password_error_xpath).text print("password Error :: " + err) except Exception: pass def role_error(self): try: h = self.driver.find_element_by_xpath(self.role_error_xpath).text print("Role Error :: " + h) except Exception: pass def verify_error(self): print("Verifying errors") # Testing UserName error try: self.driver.implicitly_wait(1) a = self.driver.find_element_by_xpath( self.initial_username_error_xpath).text print("Error Displayed :: a ") except Exception: pass try: b = self.driver.find_element_by_xpath( self.username_error_xpath).text print("UserName Error :: ", b) except Exception: pass # Testing Password error try: h = self.driver.find_element_by_xpath( self.password_error_xpath).text print("password Error :: ", h) except Exception: pass # Testing Role error try: h = self.driver.find_element_by_xpath(self.role_error_xpath).text print("Role Error :: ", h) except Exception: pass def verify_users_from_sm_with_api(self, roleName): com = common_createUser_api() headers = com.headers() url = ReadConfig.sm() cmurl = ReadConfig.cm_for_decryption() r = requests.get(url + "/getCMUsersList", headers=headers) data = r.json() # print("Data from SM::\n", r.json()) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(data, indent=4)) roles = resp1.json() # print("Roles are ::", roles) # extracting data in json format list = [] for item in roles: userroles = item.get('username') list.append(userroles) # print("Roles are :::\n", list) if list.__contains__(roleName): assert list.__contains__(roleName) == True print("\n Created User present in the SM(checking with API) ::::", roleName) # logger.info("**************** Role present in the SM ****************") else: assert list.__contains__(roleName) != True print("\n User not present in the SM(checking with API) ::::", roleName) # logger.info("**************** Role not present in the SM ****************") def send_existing_CM_username_textbox(self): url = ReadConfig.sm() headers = {'Content-Type': 'application/json'} a = { "userName": "******", "password": "******" } resp = requests.post(url + '/getSMToken', headers=headers, data=json.dumps(a, indent=4)) token = resp.text d = json.loads(token) message = d["status_message"] e = json.loads(message) accesstoken = "Bearer " + e["accessToken"] headerss = { 'Content-Type': 'application/json', 'Authorization': accesstoken } r = requests.get(url + "/getCMUsersList", headers=headerss) print("Data from SM::\n", r.json()) # extracting data in json format list = [] for item in r.json(): usernames = item.get('username') list.append(usernames) print("Users are :::\n", list) a = random.choice(list) print("Sending User Name ::", a) self.driver.find_element_by_id(self.textbox_username_ID).send_keys(a) def check_default_rows_per_page(self): rows_lst = Select( self.driver.find_element_by_xpath(self.select_rowsPerPage_xpath)) row_value = rows_lst.first_selected_option.text print("Rows per page displayed is " + row_value) if row_value == "5": print("Default Row value is validated") else: print("Default Row value is not 5") raise Exception("FAILED") def select_rows_per_page(self, value): self.driver.find_element_by_xpath( self.select_rowsPerPage_xpath).click() time.sleep(2) rows_lst = Select( self.driver.find_element_by_xpath(self.select_rowsPerPage_xpath)) print(len(rows_lst.options)) flag = 0 if (len(rows_lst.options)) > 0: for i in range(len(rows_lst.options)): print(rows_lst.options[i].text) time.sleep(1) actions = ActionChains(self.driver) #self.driver.execute_script("arguments[0].scrollIntoView();", rows_lst.options[i]) if value in rows_lst.options[i].text: print(value + " option is present in the role dropdown") rows_lst.options[i].click() flag = 1 print(flag) break if flag != 0: print("Rows per page: " + value + " is selected") self.logger.info("**************** Rows per page: " + value + " is selected ***************") time.sleep(2) row_value = rows_lst.first_selected_option.text time.sleep(2) if row_value == value: print("User list is displayed as per the rows selected") else: print( "User list is not displayed as per the rows selected") raise Exception("FAILED") else: print("Rows per page: " + value + " is not displayed in the dropdown") self.logger.info( "**************** Rows per page: " + value + " is not displayed in the dropdown ***************") raise Exception("FAILED") def capture_screenshot(self): now = datetime.now().strftime('%Y-%m-%d_%H-%M-%S') self.driver.save_screenshot('./Screenshots/screenshot-%s.png' % now) allure.attach(self.driver.get_screenshot_as_png(), name="", attachment_type=AttachmentType.PNG) self.logger.info( "**************** Screenshot captured ****************") print("Screenshot captured")
def test_updateRole_with_Max_JSONBody_010(): logger = LogGen.loggen() com = Common_role_api() logger.info( "**************** Test_010: Test updateRole when user sends - request with maximum fileds in JSON body ****************" ) logger.info( "https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164302?projectId=50" ) print( "**************** Test_010: Test updateRole when user sends - request with maximum fileds in JSON body ****************" ) print( "Jama link is ::https://rapidmicrobiosystems.jamacloud.com/perspective.req#/testCases/164302?projectId=50" ) # Body list = com.getRolesList() roleName = random.choice(list) print("\n Updating Role ::", roleName) body = { 'editedBy': 'admin', 'userRoleName': roleName, 'createMethod': 'true', 'editMethod': 'true', 'deleteMethod': 'true', 'createActionAlertLevel': 'true', 'editActionAlertLevel': 'true', 'deleteActionAlertLevel': 'true', 'createHandlingRule': 'true', 'editHandlingRule': 'true', 'deleteHandlingRule': 'true', 'createSample': 'false', 'editSample': 'false', 'deleteSample': 'false', 'createProduct': 'false', 'editProduct': 'false', 'deleteProduct': 'false', 'createUser': '******', 'editUser': '******', 'deleteUser': '******', 'createUserRole': 'false', 'editUserRole': 'false', 'deleteUserRole': 'false', 'cancelCassettes': 'true', 'retrieveCassettes': 'true', 'approveCassettes': 'true', 'cleanupCassettes': 'true', 'orderTests': 'true', 'loadTests': 'true', 'printProductLabels': 'true', 'administerGD': 'false', 'editSettings': 'false', 'maintenance': 'false', 'acknowledgeSystemAlarms': 'true', 'acknowledgeSystemErrors': 'true', 'acknowledgeSystemServiceIssues': 'true', 'editAlarmNotifications': 'false', 'emptyTrash': 'true', 'service': 'false', 'editITSettings': 'false', 'editLimsSettings': 'false', 'printLimsLabels': 'false', 'modifyLimsRequest': 'false', 'editLimsTestResultsFields': 'false', 'sendSystemLogs': 'true' } com.update_role_positive(body, roleName) com.verify_updated_role_from_sm_with_api(roleName) e = com.verify_update_roleName_options(roleName) assert e['createMethod'] == True assert e['editMethod'] == True assert e['deleteMethod'] == True assert e['createActionAlertLevel'] == True assert e['editActionAlertLevel'] == True assert e['deleteActionAlertLevel'] == True assert e['createHandlingRule'] == True assert e['editHandlingRule'] == True assert e['deleteHandlingRule'] == True assert e['createSample'] == False assert e['editSample'] == False assert e['deleteSample'] == False assert e['createProduct'] == False assert e['editProduct'] == False assert e['deleteProduct'] == False assert e['createUser'] == False assert e['editUser'] == False assert e['deleteUser'] == False assert e['createUserRole'] == False assert e['editUserRole'] == False assert e['deleteUserRole'] == False assert e['cancelCassettes'] == True assert e['retrieveCassettes'] == True assert e['approveCassettes'] == True assert e['cleanupCassettes'] == True assert e['orderTests'] == True assert e['loadTests'] == True assert e['printProductLabels'] == True assert e['administerGD'] == False assert e['editSettings'] == False assert e['maintenance'] == False assert e['acknowledgeSystemAlarms'] == True assert e['acknowledgeSystemErrors'] == True assert e['acknowledgeSystemServiceIssues'] == True assert e['editAlarmNotifications'] == False assert e['emptyTrash'] == True assert e['service'] == False assert e['editITSettings'] == False assert e['editLimsSettings'] == False assert e['printLimsLabels'] == False assert e['modifyLimsRequest'] == False assert e['editLimsTestResultsFields'] == False assert e['sendSystemLogs'] == True
class Common_role_api(): logger = LogGen.loggen() def body_file(self): file = open("./tests_admin/testCases/create_role_body.json", 'r') body = json.loads(file.read()) return body def headers(self): smurl = ReadConfig.sm_for_encryption() cmurl = ReadConfig.cm_for_decryption() # print("\n Sm_URL is ::", smurl) # print("\n CM URL is ::", cmurl) headers = {'Content-Type': 'application/json'} body = {"userName": "******", "password": "******"} encryption = requests.post(cmurl + '/encryptDecrypt/encrypt', headers=headers, data=json.dumps(body, indent=4)) encrypted_body = encryption.text a = json.loads(encrypted_body) # print("\n Encrypted_body is ::", a) resp = requests.post(smurl + '/getSMToken', headers=headers, data=json.dumps(a, indent=4)) encrypted_text = resp.text d = json.loads(encrypted_text) message = d["status_message"] # print("\n encrypted_text-->status_message is ::", message) msg = json.loads(message) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(msg, indent=4)) token1 = resp1.text # print(" \n Full Token is ::", token1) e = json.loads(token1) accesstoken = "Bearer " + e["accessToken"] # print("\n AccessToken :::\n", accesstoken) headers = {'Content-Type': 'application/json', 'Authorization': accesstoken} return headers def create_role_positive(self, body, roleName): smurl = ReadConfig.sm_for_encryption() cmurl = ReadConfig.cm_for_decryption() url = ReadConfig.sm() # print("\n Sm_URL is ::", smurl) # print("\n CM URL is ::", cmurl) # Generating Token headers = {'Content-Type': 'application/json'} CMUIserver_body = {"userName": "******", "password": "******"} encryption = requests.post(cmurl + '/encryptDecrypt/encrypt', headers=headers, data=json.dumps(CMUIserver_body, indent=4)) encrypted_body = encryption.text a = json.loads(encrypted_body) # print("\n Encrypted_body is ::", a) resp = requests.post(smurl + '/getSMToken', headers=headers, data=json.dumps(a, indent=4)) encrypted_text = resp.text d = json.loads(encrypted_text) message = d["status_message"] # print("\n encrypted_text-->status_message is ::", message) msg = json.loads(message) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(msg, indent=4)) token1 = resp1.text # print(" \n Full Token is ::", token1) e = json.loads(token1) accesstoken = "Bearer " + e["accessToken"] # print("\n AccessToken :::\n", accesstoken) headers = {'Content-Type': 'application/json', 'Authorization': accesstoken} # Encrypting the request # print("Encrypting request ") encryption = requests.post(cmurl + '/encryptDecrypt/encrypt', headers=headers, data=json.dumps(body, indent=4)) encrypted_body = encryption.text b = json.loads(encrypted_body) # print("Request Body after encryption ::", b) # Creating role with encrypted body. #print("Now sending Encrypted Json as a Post request ") resp = requests.post(url + '/createRole', headers=headers, data=json.dumps(b, indent=4)) resp_text = resp.text # print("\n Response is :::\n", resp_text) d = json.loads(resp_text) message = d["status_message"] # print("\n Received 'status_message' from the encrypted request ::", message) msg = json.loads(message) # print("Value in msg is ::", msg) # print("Trying to decrypt the Response body") decrypt = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(msg, indent=4)) decrypted_text = decrypt.text e = json.loads(decrypted_text) # print("Decrypted text is ::", e) assert resp.status_code == 200 print("\n Created Role is ::", roleName) def create_role_negative(self, body, roleName): smurl = ReadConfig.sm_for_encryption() cmurl = ReadConfig.cm_for_decryption() url = ReadConfig.sm() # print("\n Sm_URL is ::", smurl) # print("\n CM URL is ::", cmurl) # Generating Token headers = {'Content-Type': 'application/json'} CMUIserver_body = {"userName": "******", "password": "******"} encryption = requests.post(cmurl + '/encryptDecrypt/encrypt', headers=headers, data=json.dumps(CMUIserver_body, indent=4)) encrypted_body = encryption.text a = json.loads(encrypted_body) # print("\n Encrypted_body is ::", a) resp = requests.post(smurl + '/getSMToken', headers=headers, data=json.dumps(a, indent=4)) encrypted_text = resp.text d = json.loads(encrypted_text) message = d["status_message"] # print("\n encrypted_text-->status_message is ::", message) msg = json.loads(message) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(msg, indent=4)) token1 = resp1.text # print(" \n Full Token is ::", token1) e = json.loads(token1) accesstoken = "Bearer " + e["accessToken"] # print("\n AccessToken :::\n", accesstoken) headers = {'Content-Type': 'application/json', 'Authorization': accesstoken} # Encrypting the request # print("Encrypting request ") encryption = requests.post(cmurl + '/encryptDecrypt/encrypt', headers=headers, data=json.dumps(body, indent=4)) encrypted_body = encryption.text b = json.loads(encrypted_body) # print("Request Body after encryption ::", b) # Creating role with encrypted body. # print("Now sending Encrypted Json as a Post request ") resp = requests.post(url + '/createRole', headers=headers, data=json.dumps(b, indent=4)) resp_text = resp.text # print("\n Response is :::\n", resp_text) d = json.loads(resp_text) message = d["status_message"] # print("Received 'status_message' from the encrypted request ::", message) msg = json.loads(message) # print("Value in msg is ::", msg) # print("Trying to decrypt the Response body") # decrypt = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(msg, indent=4)) # decrypted_text = decrypt.text # e = json.loads(decrypted_text) # print("Decrypted text is ::", e) assert resp.status_code != 200 print("\n Role Not Created ::::", roleName) def verify_roles_from_sm_with_api(self,roleName): com = Common_role_api() headers = com.headers() url = ReadConfig.sm() cmurl = ReadConfig.cm_for_decryption() r = requests.get(url + "/getRoles", headers=headers) data = r.json() # print("Data from SM::\n", r.json()) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(data, indent=4)) roles = resp1.json() # print("Roles are ::", roles) # extracting data in json format list = [] for item in roles: userroles = item.get('userRoleName') list.append(userroles) # print("Roles are :::\n", list) if list.__contains__(roleName): assert list.__contains__(roleName) == True print("\n Created Role present in the SM(checking with API) ::::", roleName) # logger.info("**************** Role present in the SM ****************") else: assert list.__contains__(roleName) != True print("\n Role not present in the SM(checking with API) ::::", roleName) # logger.info("**************** Role not present in the SM ****************") def verify_roles_from_sm_UI(self, roleName): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ######### get list ############### logger.info('------- get list -------') r = http.request( method='GET', url=url_sm_ui + 'roles/get_list', fields={}, retries=False, timeout=timeout) logger.info('response is type {}'.format(type(r))) logger.info('headers is type {}'.format(type(r.headers))) logger.info('status is type {}'.format(type(r.status))) logger.info('data is type {}'.format(type(r.data))) logger.info('r.headers = {}'.format(r.headers)) logger.info('r.status = {}'.format(r.status)) logger.info('r.data = {}'.format(r.data)) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) # print("Values from SM_UI ::", data) logger.info('------- work with the response data --------') list = [] for key, value in data.items(): logger.info("{} {}".format(key, value)) list.append(key) logger.info('there are {}'.format(len(data))) assert list.__contains__(roleName) == True print("\n Created Role present in the SM(checking from SM_UI) ::::", roleName) logger.info('------- test done --------') def create_role_in_sm_ui(self): logger = LogGen.loggen() url_sm_ui = ReadConfig.sm_user_interface() timeout = ReadConfig.timeout_sm() http = urllib3.PoolManager() ######### create role ############### role_name = "test_" + datetime.now().strftime('%y%m%d%H%M%S%f') print("Creating Role from SM GDSystem UI is ::", role_name ) logger.info('------- create role with privs alternating one/zero {}'.format(role_name)) body_raw = { 'name': role_name, 'privs_set': { 'methods_create': '1', 'methods_edit': '0', 'methods_delete': '1', 'aa_create': '0', 'aa_edit': '1', 'aa_delete': '0'}} body_encoded = json.dumps(body_raw).encode('utf-8') r = http.request( method='POST', url=url_sm_ui + 'roles/create_role', body=body_encoded, headers={'Content-Type': 'application/json'}, retries=False, timeout=timeout) ######### get/check ############### logger.info('------- get/check role -------') name = "Administrator" fields = { 'name': role_name, } r = http.request( method='GET', url=url_sm_ui + 'roles/get_role', fields=fields, retries=False, timeout=timeout) assert r.status == 200, "response has bad status" data = json.loads(r.data.decode('utf-8')) assert data['privs_get']['methods_create'] == 1 assert data['privs_get']['methods_edit'] == 0 assert data['privs_get']['methods_delete'] == 1 assert data['privs_get']['aa_create'] == 0 assert data['privs_get']['aa_edit'] == 1 assert data['privs_get']['aa_delete'] == 0 logger.info('------- test done --------') def getRolesList(self): com = Common_role_api() headers = com.headers() url = ReadConfig.sm() cmurl = ReadConfig.cm_for_decryption() r = requests.get(url + "/getRoles", headers=headers) data = r.json() # print("Data from SM::\n", r.json()) resp1 = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(data, indent=4)) roles = resp1.json() # print("Roles are ::", roles) # extracting data in json format list = [] for item in roles: userroles = item.get('userRoleName') list.append(userroles) return list def verify_roleName_options(self, roleName): url = ReadConfig.sm() cmurl = ReadConfig.cm_for_decryption() com = common() headers = com.headers() # print("Verifying role :: ", roleName) # Generating Token body = { "userRoleName": roleName } encryption = requests.post(cmurl + '/encryptDecrypt/encrypt', headers=headers, data=json.dumps(body, indent=4)) encrypted_body = encryption.text b = json.loads(encrypted_body) resp = requests.post(url + '/getRole', headers=headers, data=json.dumps(b, indent=4)) resp_text = resp.text d = json.loads(resp_text) message = d["status_message"] msg = json.loads(message) decrypt = requests.post(cmurl + '/encryptDecrypt/decrypt', headers=headers, data=json.dumps(msg, indent=4)) decrypted_text = decrypt.text e = json.loads(decrypted_text) # print("\n Decrypted text is ::\n", e) # return e # list = [] # for key, value in e.items(): # print("assert ['", key,"'] == ",value) # # list.append(value) return e def deleteRolesList(self): url = ReadConfig.sm() headers = {'Content-Type': 'application/json'} a = {"userName": "******", "password": "******"} resp = requests.post(url + '/getSMToken', headers=headers, data=json.dumps(a, indent=4)) token = resp.text d = json.loads(token) message = d["status_message"] e = json.loads(message) accesstoken = "Bearer " + e["accessToken"] headerss = {'Content-Type': 'application/json', 'Authorization': accesstoken} r = requests.get(url + "/getRoles", headers=headerss ) # print("Data from SM::\n", r.json()) # extracting data in json format list = [] for item in r.json(): userroles = item.get('userRoleName') list.append(userroles) print("Before deletion Roles are :::\n", list) for i in list: print("Deleting role :::", i) headerss = {'Content-Type': 'application/json', 'Authorization': accesstoken} body = {'deletedBy': 1, 'userRoleName': i} url = ReadConfig.sm() r = requests.delete(url + "/deleteRole", data=json.dumps(body, indent=4), headers=headerss) # print("Deletion URL::",r) def userRoleName_RegEx(self): userRoleName = "^[a-zA-Z0-9\-_()'.#\\+ ]*$" return userRoleName