コード例 #1
0
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()
コード例 #2
0
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)
コード例 #3
0
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()
コード例 #4
0
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)
コード例 #6
0
ファイル: .py プロジェクト: vijaymandava/rmb
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")
コード例 #7
0
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()
コード例 #8
0
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()
コード例 #9
0
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)
コード例 #10
0
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 --------')
コード例 #11
0
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()
コード例 #12
0
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()
コード例 #13
0
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")
コード例 #14
0
    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 --------')
コード例 #15
0
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 --------')
コード例 #16
0
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()
コード例 #18
0
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")
コード例 #19
0
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
コード例 #20
0
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
コード例 #21
0
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  ****************")
コード例 #22
0
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)
コード例 #23
0
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 --------')
コード例 #24
0
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
コード例 #25
0
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  ****************")
コード例 #26
0
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 --------')
コード例 #27
0
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")
コード例 #28
0
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")
コード例 #29
0
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
コード例 #30
0
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