Exemplo n.º 1
0
    def test_4_account_lists_columns(self):
        print(
            colored('Running: test_4_account_lists_columns - estimate: 48s',
                    'yellow'))
        list_headers = get_table_headers()
        account_lists = browser.find_elements_by_xpath(
            '//tbody[@class="MuiTableBody-root"]')

        for account_list in account_lists:
            for i in range(2):
                print(colored('\trandom account ' + str(i + 1), 'magenta'))
                account_cols = get_random_account_data(account_list)

                for col in list_headers:
                    col_data = account_cols[list_headers.index(
                        col)].get_attribute('innerHTML')
                    has_data = (col == 'Full Name' or col == 'Username' or col == 'Email') and \
                               len(col_data) > 0 or len(col_data) >= 0

                    print(
                        colored(
                            '\ttest_4_account_lists_columns: ' +
                            (i == 0 and 'active' or 'inactive') +
                            ' accounts data - asserting...', 'blue'))
                    self.assertTrue(has_data)

        print(colored('\ttest_4_account_lists_columns: passed.', 'cyan'))
    def test_3_device_model(self):
        print(colored('Running: test_3_device_model - estimate: 57s',
                      'yellow'))

        for i in range(3):
            print(colored('\trandom gateway ' + str(i + 1), 'magenta'))
            updated_imei = get_random_gateway()
            gateway_detail_form = browser.find_element_by_xpath(
                '//div[@class="MuiFormControl-root"]')
            device_model_dropdown = gateway_detail_form.find_element_by_id(
                'device-model')
            device_model_dropdown.send_keys(Keys.ENTER)
            sleep(SLEEP_INTERVAL)
            device_model_items = browser.find_elements_by_xpath(
                '//ul[@class="MuiList-root MuiMenu-list '
                'MuiList-padding"]/li')
            random_device_model = get_random_dropdown_item(device_model_items)
            random_device_model.click()
            click_update_button()

            print(
                colored('\ttest_3_device_model: confirm update - asserting...',
                        'blue'))
            assert "The selected gateway with IMEI " + updated_imei + " has been updated successfully." in browser.page_source

            get_back_previously_updated_gateway(updated_imei)
            close_modal()

        print(colored('\ttest_3_device_model: passed.', 'cyan'))
Exemplo n.º 3
0
    def test_3_account_lists_display(self):
        print(
            colored('Running: test_3_account_lists_display - estimate: 2s',
                    'yellow'))
        pagination_labels = browser.find_elements_by_xpath(
            '//tfoot[@class="MuiTableFooter-root"]/tr/td/div/div/span['
            '@class="MuiTypography-root MuiTypography-caption"]')

        active_accounts_count = int(
            pagination_labels[0].get_attribute('innerHTML').split(' ')[2])
        print(
            colored(
                '\ttest_3_account_lists_display: active accounts count - asserting...',
                'blue'))
        self.assertGreater(active_accounts_count, 0)

        if len(pagination_labels) > 1:
            inactive_accounts_count = int(
                pagination_labels[1].get_attribute('innerHTML').split(' ')[2])
            print(
                colored(
                    '\ttest_3_account_lists_display: inactive accounts count - asserting...',
                    'blue'))
            self.assertGreater(inactive_accounts_count, 0)

        print(colored('\ttest_3_account_lists_display: passed.', 'cyan'))
    def test_3_delete_confirm_success(self):
        print(colored('Running: test_3_delete_confirm_success - estimate: 15s', 'yellow'))

        for i in range(3):
            print(colored('\trandom meter ' + str(i + 1), 'magenta'))
            deleted_serial = get_random_meter_and_delete()

            browser.switch_to_alert().accept()
            sleep(2*SLEEP_INTERVAL)

            print(colored('\ttest_3_delete_confirm_success: confirm delete - asserting...', 'blue'))
            assert "The Meter with Serial No. " + deleted_serial + " has been deleted successfully." in browser.page_source

            print(colored('\ttest_3_delete_confirm_success: check modal - asserting...', 'blue'))
            self.assertFalse(check_existence('//div[@class="MuiFormControl-root"]', is_id=False))

            meter_table_headers = get_table_headers()
            rows = browser.find_elements_by_xpath('//tbody[@class="MuiTableBody-root"]/tr')
            serials = []
            for row in rows:
                serials.append(row.find_elements_by_tag_name('td')[meter_table_headers.index('Serial No.')]
                               .get_attribute('innerHTML'))

            print(colored('\ttest_3_delete_confirm_success: check deleted serial - asserting...', 'blue'))
            assert deleted_serial not in serials

        print(colored('\ttest_3_delete_confirm_success: passed.', 'cyan'))
Exemplo n.º 5
0
def get_back_previously_updated_command(cmd):
    command_table_headers = get_table_headers()
    rows = browser.find_elements_by_xpath(
        '//tbody[@class="MuiTableBody-root"]/tr')
    for row in rows:
        cols = row.find_elements_by_tag_name('td')
        if len(cols) > 0 and cmd == cols[command_table_headers.index(
                'Command')].get_attribute('innerHTML'):
            click_action_button(cols)
            break
Exemplo n.º 6
0
def get_back_previously_updated_node(hex):
    node_table_headers = get_table_headers()
    rows = browser.find_elements_by_xpath(
        '//tbody[@class="MuiTableBody-root"]/tr')
    for row in rows:
        cols = row.find_elements_by_tag_name('td')
        if hex == cols[node_table_headers.index('Hex. Address')].get_attribute(
                'innerHTML'):
            click_action_button(cols)
            break
Exemplo n.º 7
0
def get_back_previously_updated_meter(serial):
    meter_table_headers = get_table_headers()
    rows = browser.find_elements_by_xpath(
        '//tbody[@class="MuiTableBody-root"]/tr')
    for row in rows:
        cols = row.find_elements_by_tag_name('td')
        if serial == cols[meter_table_headers.index(
                'Serial No.')].get_attribute('innerHTML'):
            click_action_button(cols)
            break
Exemplo n.º 8
0
def get_back_previously_updated_gateway(imei):
    gateway_table_headers = get_table_headers()
    rows = browser.find_elements_by_xpath(
        '//tbody[@class="MuiTableBody-root"]/tr')
    for row in rows:
        cols = row.find_elements_by_tag_name('td')
        if imei == cols[gateway_table_headers.index('Imei')].get_attribute(
                'innerHTML'):
            click_action_button(cols)
            break
Exemplo n.º 9
0
def get_random_row_in_account_table(active=True):
    user_tables = browser.find_elements_by_xpath(
        '//tbody[@class="MuiTableBody-root"]')
    rows = user_tables[0].find_elements_by_tag_name('tr')

    if not active:
        rows = user_tables[1].find_elements_by_tag_name('tr')

    users = [
        row for row in rows if len(row.find_elements_by_tag_name('td')) > 0
    ]
    return random.choice(users)
Exemplo n.º 10
0
    def test_3_delete_confirm_success(self):
        print(
            colored('Running: test_3_delete_confirm_success - estimate: 15s',
                    'yellow'))

        for i in range(3):
            print(colored('\trandom gateway ' + str(i + 1), 'magenta'))
            deleted_imei = get_random_gateway()
            click_delete_button()

            browser.switch_to_alert().accept()
            sleep(2 * SLEEP_INTERVAL)

            print(
                colored(
                    '\ttest_3_delete_confirm_success: confirm delete - asserting...',
                    'blue'))
            assert "The selected gateway with IMEI " + deleted_imei + " has been deleted successfully." in browser.page_source

            print(
                colored(
                    '\ttest_3_delete_confirm_success: check modal - asserting...',
                    'blue'))
            self.assertFalse(
                check_existence('//div[@class="MuiFormControl-root"]',
                                is_id=False))

            gateway_table_headers = get_table_headers()
            rows = browser.find_elements_by_xpath(
                '//tbody[@class="MuiTableBody-root"]/tr')
            imeis = []
            for row in rows:
                imeis.append(
                    row.find_elements_by_tag_name('td')[
                        gateway_table_headers.index('Imei')].get_attribute(
                            'innerHTML'))

            print(
                colored(
                    '\ttest_3_delete_confirm_success: check deleted imei - asserting...',
                    'blue'))
            assert deleted_imei not in imeis

        print(colored('\ttest_3_delete_confirm_success: passed.', 'cyan'))
    def test_4_create_success():
        print(
            colored('Running: test_4_create_success - estimate: 27s',
                    'yellow'))

        for i in range(3):
            print(colored('\tnew gateway ' + str(i + 1), 'magenta'))
            click_fab_button()

            imei = str(int(datetime.now().timestamp())) + "-" + str(i + 1)
            browser.find_element_by_id('gateway-imei').send_keys(imei)
            browser.find_element_by_id('gateway-name').send_keys('test name')
            browser.find_element_by_id('phone-number').send_keys('test phone')
            browser.find_element_by_id('hex-address').send_keys('hex address')
            browser.find_element_by_id('dec-address').send_keys('dec address')
            browser.find_element_by_id('ip-address').send_keys('ip address')
            browser.find_element_by_id('software-version').send_keys(
                'sw version')
            browser.find_element_by_id('firmware-version').send_keys(
                'fw version')
            browser.find_element_by_id('sim-serial').send_keys('sim serial')
            browser.find_element_by_id('sim-puk').send_keys('sim puk')

            gateway_detail_form = browser.find_element_by_xpath(
                '//div[@class="MuiFormControl-root"]')
            device_model_dropdown = gateway_detail_form.find_element_by_id(
                'device-model')
            device_model_dropdown.send_keys(Keys.ENTER)
            sleep(SLEEP_INTERVAL)
            device_model_items = browser.find_elements_by_xpath(
                '//ul[@class="MuiList-root MuiMenu-list '
                'MuiList-padding"]/li')
            random_device_model = get_random_dropdown_item(device_model_items)
            random_device_model.click()

            click_save_button()

            print(
                colored(
                    '\ttest_4_create_success: alert message - asserting...',
                    'blue'))
            assert "New gateway has been created successfully with IMEI " + imei in browser.page_source

        print(colored('\ttest_4_create_success: passed.', 'cyan'))
Exemplo n.º 12
0
    def test_3_device_model_dropdown(self):
        print(
            colored('Running: test_3_device_model_dropdown - estimate: 39s',
                    'yellow'))

        for i in range(3):
            print(colored('\trandom meter ' + str(i + 1), 'magenta'))

            meter_row = get_random_table_row()
            meter_cols = meter_row.find_elements_by_tag_name('td')
            click_action_button(meter_cols)

            meter_detail_form = browser.find_element_by_xpath(
                '//div[@class="MuiFormControl-root"]')
            device_model_dropdown = meter_detail_form.find_element_by_id(
                'device-model')
            device_model_dropdown.send_keys(Keys.ENTER)
            sleep(SLEEP_INTERVAL)

            device_model_items = browser.find_elements_by_xpath(
                '//ul[@class="MuiList-root MuiMenu-list '
                'MuiList-padding"]/div')
            print(
                colored(
                    '\ttest_3_device_model_dropdown: device models count - asserting...',
                    'blue'))
            self.assertGreaterEqual(len(device_model_items), 1)

            random_device_model = get_random_dropdown_item(device_model_items)
            random_model_value = random_device_model.find_element_by_xpath(
                '//span/div/div').get_attribute('innerHTML')
            random_device_model.click()

            sleep(SLEEP_INTERVAL)
            random_model_selected = random_model_value  # browser.find_element_by_id('device-model').get_attribute('innerHTML')
            print(
                colored(
                    '\ttest_3_device_model_dropdown: device models selected - asserting...',
                    'blue'))
            self.assertEqual(random_model_value, random_model_selected)

            close_modal()

        print(colored('\ttest_3_device_model_dropdown: passed.', 'cyan'))
    def test_5_clashed_primary_key():
        print(
            colored('Running: test_5_clashed_primary_key - estimate: 27s',
                    'yellow'))

        imei = get_random_table_data('Imei')
        click_fab_button()

        browser.find_element_by_id('gateway-imei').send_keys(imei)
        browser.find_element_by_id('gateway-name').send_keys('test name')
        browser.find_element_by_id('phone-number').send_keys('test phone')
        browser.find_element_by_id('hex-address').send_keys('hex address')
        browser.find_element_by_id('dec-address').send_keys('dec address')
        browser.find_element_by_id('ip-address').send_keys('ip address')
        browser.find_element_by_id('software-version').send_keys('sw version')
        browser.find_element_by_id('firmware-version').send_keys('fw version')
        browser.find_element_by_id('sim-serial').send_keys('sim serial')
        browser.find_element_by_id('sim-puk').send_keys('sim puk')

        gateway_detail_form = browser.find_element_by_xpath(
            '//div[@class="MuiFormControl-root"]')
        device_model_dropdown = gateway_detail_form.find_element_by_id(
            'device-model')
        device_model_dropdown.send_keys(Keys.ENTER)
        sleep(SLEEP_INTERVAL)
        device_model_items = browser.find_elements_by_xpath(
            '//ul[@class="MuiList-root MuiMenu-list '
            'MuiList-padding"]/li')
        random_device_model = get_random_dropdown_item(device_model_items)
        random_device_model.click()

        click_save_button()
        confirmation = browser.switch_to_alert()

        print(
            colored(
                '\ttest_5_clashed_serial: confirmation dialog - asserting...',
                'blue'))
        assert "Error occurred while saving gateway" in confirmation.text

        confirmation.accept()
        close_modal()
        sleep(2 * SLEEP_INTERVAL)
    def test_3_form_dropdown(self):
        print(colored('Running: test_3_form_dropdown - estimate: 5s', 'yellow'))
        org_dropdown = browser.find_element_by_id('organization')
        org_dropdown.send_keys(Keys.ENTER)
        sleep(SLEEP_INTERVAL)

        org_items = browser.find_elements_by_xpath('//ul[@class="MuiList-root MuiMenu-list '
                                                   'MuiList-padding"]/div')
        print(colored('\ttest_3_form_dropdown: org dropdown count - asserting...', 'blue'))
        self.assertGreaterEqual(len(org_items), 1)

        random_org = get_random_dropdown_item(org_items)
        selected_item = random_org.find_element_by_xpath('//span/div/div').get_attribute('innerHTML')
        random_org.click()

        sleep(SLEEP_INTERVAL)
        selected_org = selected_item  # browser.find_element_by_id('organization').get_attribute('innerHTML')
        print(colored('\ttest_3_form_dropdown: selected org - asserting...', 'blue'))
        self.assertEqual(selected_org, selected_item)

        print(colored('\ttest_3_form_dropdown: passed.', 'cyan'))
    def test_3_search_success(self):
        print(
            colored('Running: test_3_search_success - estimate: 13s',
                    'yellow'))
        search_form = SearchForm()
        search_form.form_clear_button.send_keys(Keys.ENTER)
        gateway_table_headers = get_table_headers()

        keyword = ''
        for i in range(5):
            random_row = get_random_table_row()
            cols = random_row.find_elements_by_tag_name('td')
            keyword += (cols[gateway_table_headers.index(
                'Imei')].get_attribute('innerHTML') + ",")

        keyword = keyword[:-1]

        search_form.keyword_input.send_keys(keyword)
        browser.execute_script('arguments[0].click()',
                               search_form.search_fields[0])

        search_form.search_button.send_keys(Keys.ENTER)

        sleep(2 * SLEEP_INTERVAL)
        results = browser.find_elements_by_xpath(
            '//tbody[@class="MuiTableBody-root"]/tr')
        result_imeis = []
        for result in results:
            cols = result.find_elements_by_tag_name('td')
            if len(cols) != 0:
                result_imeis.append(cols[gateway_table_headers.index(
                    'Imei')].get_attribute('innerHTML'))

        keyword_imeis = keyword.split(',')
        print(
            colored('\ttest_3_search_success: matching results - asserting...',
                    'blue'))
        self.assertEqual(keyword_imeis.sort(), result_imeis.sort())

        print(colored('\ttest_3_search_success: passed.', 'cyan'))
Exemplo n.º 16
0
    def test_3_confirm_success():
        print(
            colored('Running: test_2_confirm_no_network - estimate: 20s',
                    'yellow'))
        account_table_headers = get_table_headers()

        for i in range(2):
            print(colored('\trandom account ' + str(i + 1), 'magenta'))
            active_user_row = get_random_row_in_account_table()
            active_user_cols = active_user_row.find_elements_by_tag_name('td')
            click_action_button(active_user_cols)

            browser.find_element_by_id('delete-button').send_keys(Keys.ENTER)
            sleep(SLEEP_INTERVAL)
            browser.switch_to_alert().accept()
            sleep(2 * SLEEP_INTERVAL)

            active_users_table = browser.find_element_by_xpath(
                '//tbody[@class="MuiTableBody-root"]')
            active_users_rows = active_users_table.find_elements_by_tag_name(
                'tr')
            active_users = [
                row for row in active_users_rows
                if len(row.find_elements_by_tag_name('td')) > 0
            ]

            user_names = []
            for user in active_users:
                user_names.append(
                    user.find_elements_by_tag_name('td')
                    [account_table_headers.index('Full Name')].get_attribute(
                        'innerHTML'))

            print(
                colored('\ttest_1_unconfirmed: active users - asserting...',
                        'blue'))
            assert active_user_cols[account_table_headers.index(
                'Full Name')] not in user_names

            if len(
                    browser.find_elements_by_xpath(
                        '//tbody[@class="MuiTableBody-root"]')) > 1:
                inactive_users_table = browser.find_elements_by_xpath(
                    '//tbody[@class="MuiTableBody-root"]')[1]
                inactive_users_rows = inactive_users_table.find_elements_by_tag_name(
                    'tr')
                inactive_users = [
                    row for row in inactive_users_rows
                    if len(row.find_elements_by_tag_name('td')) > 0
                ]

                in_user_names = []
                for user in inactive_users:
                    in_user_names.append(
                        user.find_elements_by_tag_name('td')[
                            account_table_headers.index(
                                'Full Name')].get_attribute('innerHTML'))

                print(
                    colored(
                        '\ttest_1_unconfirmed: inactive users - asserting...',
                        'blue'))
                assert active_user_cols[account_table_headers.index(
                    'Full Name')] in in_user_names

            print(colored('\ttest_1_unconfirmed: passed.', 'cyan'))
Exemplo n.º 17
0
    def test_1_unconfirmed(self):
        print(colored('Running: test_1_unconfirmed - estimate: 3s', 'yellow'))
        account_table_headers = get_table_headers()

        active_user_row = get_random_row_in_account_table()
        active_user_cols = active_user_row.find_elements_by_tag_name('td')
        click_action_button(active_user_cols)

        browser.find_element_by_id('delete-button').send_keys(Keys.ENTER)
        sleep(SLEEP_INTERVAL)

        confirmation = browser.switch_to_alert()
        print(
            colored('\ttest_1_unconfirmed: cancel deletion - asserting...',
                    'blue'))
        self.assertEqual(
            confirmation.text, 'Delete the account ' +
            active_user_cols[account_table_headers.index('Full Name')] +
            '. Continue?')

        active_users_table = browser.find_element_by_xpath(
            '//tbody[@class="MuiTableBody-root"]')
        active_users_rows = active_users_table.find_elements_by_tag_name('tr')
        active_users = [
            row for row in active_users_rows
            if len(row.find_elements_by_tag_name('td')) > 0
        ]

        user_names = []
        for user in active_users:
            user_names.append(
                user.find_elements_by_tag_name('td')[
                    account_table_headers.index('Full Name')].get_attribute(
                        'innerHTML'))

        print(
            colored('\ttest_1_unconfirmed: active users - asserting...',
                    'blue'))
        assert active_user_cols[account_table_headers.index(
            'Full Name')] in user_names

        if len(
                browser.find_elements_by_xpath(
                    '//tbody[@class="MuiTableBody-root"]')) > 1:
            inactive_users_table = browser.find_elements_by_xpath(
                '//tbody[@class="MuiTableBody-root"]')[1]
            inactive_users_rows = inactive_users_table.find_elements_by_tag_name(
                'tr')
            inactive_users = [
                row for row in inactive_users_rows
                if len(row.find_elements_by_tag_name('td')) > 0
            ]

            in_user_names = []
            for user in inactive_users:
                in_user_names.append(
                    user.find_elements_by_tag_name('td')
                    [account_table_headers.index('Full Name')].get_attribute(
                        'innerHTML'))

            print(
                colored('\ttest_1_unconfirmed: inactive users - asserting...',
                        'blue'))
            assert active_user_cols[account_table_headers.index(
                'Full Name')] not in in_user_names

        print(colored('\ttest_1_unconfirmed: passed.', 'cyan'))