def test_crear_blacklist(self): try: # Crear nueva blacklist login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) blacklist = 'blacklist' + uuid.uuid4().hex[:5] csv_path = "/home/{0}/ominicontacto/test/planilla-ejemplo-0.csv".format( USER) crear_blacklist(self.browser, csv_path, blacklist) self.assertTrue( self.browser.find_elements( By.XPATH, '//td[contains(text(), \'{0}\')]'.format(blacklist))) print('--Se pudo crear un Blacklist.--') except Exception as e: print('--ERROR: No se pudo crear un Blacklist.--\n{0}'.format(e)) raise e # Verificacion que solo muestra la ultima Blacklist subida try: nueva_blacklist = 'blacklist' + uuid.uuid4().hex[:5] csv_nueva = "/home/{0}/ominicontacto/test/planilla-ejemplo-0.csv".format( USER) crear_blacklist(self.browser, csv_nueva, nueva_blacklist) self.assertFalse( self.browser.find_elements( By.XPATH, '//td[contains(text(), \'{0}\')]'.format(blacklist))) self.assertTrue( self.browser.find_elements( By.XPATH, '//td[contains(text(), \'{0}\')]'.format(nueva_blacklist))) print('--Se verifico que solo muestra la ultima Blacklist.--') except Exception as e: print('--ERROR: No se pudo verificar que solo se' 'muestra la ultima Blacklist.--\n{0}'.format(e)) raise e
def test_crear_eliminar_grupo_sin_Autounpause(self): try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) group_name = 'grupo' + uuid.uuid4().hex[:5] crear_grupo(self.browser, group_name) self.browser.find_elements_by_xpath('//td[text()=\'{0}\']'.format(group_name)) print('--Se pudo crear un grupo sin autounpause.--') except Exception as e: print('--ERROR: No se pudo crear un grupo sin autounpause.--\n{0}'.format(e)) raise e # Eliminar grupo try: group_list = '//a[contains(@href,"/grupo/list/")]' get_href(self.browser, group_list) link_delete = "//tr[@id=\'{0}\']/td/div//a[contains(@href,'/grupo/delete')]".format( group_name) get_href(self.browser, link_delete) self.browser.find_element_by_xpath(( "//button[@type='submit']")).click() sleep(1) self.assertFalse(self.browser.find_elements_by_xpath('//td[text()=\'{0}\']'.format( group_name))) print('--Se pudo eliminar un grupo.--') except Exception as e: print('--ERROR: No se pudo eliminar un grupo.--\n{0}'.format(e)) raise e
def test_delete_calificaciones(self): # Eliminar la calificacion: "No se encuentra". try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) calificacion = 'No se encuentra' lista_calificaciones = [calificacion] for items in lista_calificaciones: crear_calificacion(self.browser, items) self.assertTrue(self.browser.find_elements_by_xpath('//td[text()=\'{0}\']' .format(items))) self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight);') link_delete = self.browser.find_element_by_xpath( '//tr[@id = \'{0}\']//a[contains(@href, "/delete/")]' .format(calificacion)) href_delete = link_delete.get_attribute('href') self.browser.get(href_delete) self.browser.find_element_by_xpath("//button[@type='submit']").click() sleep(1) self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight);') self.assertFalse(self.browser.find_elements_by_xpath('//td[text()=\'{0}\']'.format( calificacion))) print('--Se pudo eliminar con exito la calificacion "No se encuentra".--') except Exception as e: print('--ERROR: No se pudo eliminar una calificacion.-- \n{0}' .format(e)) raise e
def test_bloqueo_y_desbloqueo_de_un_usuario(self): try: clave_erronea = 'test' # Intento loguearme 12 veces para bloquear la cuenta del usuario intentos = LOGIN_FAILURE_LIMIT + 2 for i in range(intentos): login(self.browser, AGENTE_USERNAME, clave_erronea) texto_error = self.browser.find_element_by_xpath('//div/p').text self.assertEqual(texto_error[0:24], 'Haz tratado de loguearte') print('--Se pudo bloquear un usuario.--') except Exception as e: print('--ERROR: No se pudo bloquear un usuario.--\n{0}'.format(e)) raise e try: # Vamos al Admin de django para desbloquear este usuario self.browser.get( 'https://{0}/admin'.format(TESTS_INTEGRACION_HOSTNAME)) self.browser.find_element_by_name('username').send_keys( ADMIN_USERNAME) # Prueba con la password reseteada try: self.browser.find_element_by_name('password').send_keys( ADMIN_PASSWORD_RESET) self.browser.find_element_by_xpath( '//div/input[@type="submit"]').click() sleep(2) except Exception: pass # Prueba con la password por defecto del admin try: self.browser.find_element_by_name('password').send_keys( ADMIN_PASSWORD) self.browser.find_element_by_xpath( '//div/input[@type="submit"]').click() sleep(2) except Exception: pass defender = '//a[contains(@href, "/admin/defender/")]' get_href(self.browser, defender) bloqued_user = '******' get_href(self.browser, bloqued_user) self.browser.find_element_by_xpath( '//form[@action="/admin/defender/blocks/username/{0}/unblock"]/' 'input[@type="submit"]'.format(AGENTE_USERNAME)).click() sleep(2) # Deslogueo como admin self.browser.get('https://{0}/'.format(TESTS_INTEGRACION_HOSTNAME)) deslogueo = '//a[contains(@href, "/accounts/logout/")]' get_href(self.browser, deslogueo) # Compruebo que el usuario esta desbloqueado login(self.browser, AGENTE_USERNAME, AGENTE_PASSWORD) self.assertTrue( self.browser.find_element_by_xpath( '//div/a[contains(@href, "/agente/logout/")]')) print('--Se pudo desbloquear con exito un usuario.--') except Exception as e: print( '--ERROR: No se pudo desbloquear con exito un usuario.--\n{0}'. format(e)) raise e
def test_agente_puede_realizar_llamada_saliente_campana_sin_identificar_contacto( self): # asume al menos una campana asignada al agente try: numero_externo = '351111111' login(self.browser, AGENTE_USERNAME, AGENTE_PASSWORD) self.browser.find_element_by_id('numberToCall').send_keys( numero_externo) self.browser.find_element_by_id('call').click() sleep(1) self.browser.find_element_by_id('SelectCamp').click() webdriver.ActionChains(self.browser).send_keys( Keys.ESCAPE).perform() self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') self.browser.switch_to.frame( self.browser.find_element_by_tag_name('iframe')) sleep(1) self.browser.find_element_by_id('id_btn_no_identificar').click() sleep(1) self.browser.switch_to.default_content() self.assertEqual( self.browser.find_element_by_id('dial_status').text, 'Connected to {0}'.format(numero_externo)) print( '--Se pudo realizar una llamada saliente sin identificar contacto con exito.--' ) except Exception as e: print('--ERROR: No se pudo realizar una llamada saliente ' 'sin identificar contacto.--\n{0}'.format(e)) raise e
def test_crear_elimina_lista_rapida(self): try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) csv_path = "/home/{0}/ominicontacto/ominicontacto_app/static/ominicontacto"\ "/ejemplo_lista_rapida.csv".format(USER) Lista_rapida = 'listaRapida' + uuid.uuid4().hex[:5] crear_lista_rapida(self.browser, csv_path, Lista_rapida) self.browser.find_element_by_xpath( '//label/input[@value = "Telefono"]').click() self.browser.find_element(By.CSS_SELECTOR, ".btn-success").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( '//td[contains(text(), \'{0}\')]'.format(Lista_rapida))) print('--Se pudo crear una lista rapida. --') except Exception as e: print('--ERROR: No se pudo crear una Lista Rapida. --\n{0}'.format( e)) raise e # eliminar lista rapida try: eliminar_lista = '//tr[@id=\'{0}\']//td//a[contains(@href, "/eliminar/")]'.format( Lista_rapida) get_href(self.browser, eliminar_lista) self.browser.find_element(By.CSS_SELECTOR, ".btn-danger").click() sleep(1) self.assertFalse( self.browser.find_elements_by_xpath( '//td[contains(text(), \'{0}\')]'.format(Lista_rapida))) print('--Se pudo eliminar la lista rapida.--') except Exception as e: print('--ERROR: No se pudo eliminar una lista rapida. --\n{0}'. format(e)) raise e
def setUpClass(cls): # super(IntegrationTests, cls).setUpClass() cls.setUp() login(cls.browser, ADMIN_USERNAME, ADMIN_PASSWORD) group_name = 'group' + uuid.uuid4().hex[:5] crear_grupo(cls.browser, group_name) tipo_usuario = 'Agente' crear_user(cls.browser, AGENTE_USERNAME, AGENTE_PASSWORD, tipo_usuario) cls.tearDown()
def test_sitio_externo_automatico_post(self): try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) url = 'www.test' + uuid.uuid4().hex[:5] + '.com' # Metodo Post formato = ['multipart', 'urlencoded', 'text', 'json'] for items in formato: sitio_post = 'sitio' + uuid.uuid4().hex[:5] sitio_externo(self.browser, sitio_post, url) self.browser.find_elements_by_xpath( '//select[@id=\'id_disparador\']/option')[1].click() self.browser.find_elements_by_xpath( '//select[@id=\'id_metodo\']/option')[1].click() formato_sitio(self.browser, items) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') self.assertTrue( self.browser.find_element_by_xpath( '//tr[@id=\'{0}\']'.format(sitio_post))) print( '--Se pudo crear un Sitio externo para el disparador Automatico, metodo POST--' ) except Exception as e: print( '--ERROR: No se pudo crear un Sitio ' 'Externo con disparador automatico, metodo POST--\n{0}'.format( e)) raise e try: # Ocultar y mostrar Sitio Externo ocultar_sitio = '//tr[@id=\'{0}\']//a[contains(@href, "/ocultar/")]'.format( sitio_post) get_href(self.browser, ocultar_sitio) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') self.assertFalse( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(sitio_post))) self.browser.execute_script('window.scrollTo(0, 0);') self.browser.find_element(By.LINK_TEXT, "Show Hidden").click() sleep(1) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') desocultar = '//tr[@id=\'{0}\']//td//a[contains(@href, "/desocultar/")]'.format( sitio_post) get_href(self.browser, desocultar) self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(sitio_post))) print('--Se pudo ocultar y mostrar un Sitio externo.--') except Exception as e: print( '--ERROR: No se pudo ocultar y mostrar un Sitio externo.--\n{0}' .format(e)) raise e
def test_acceso_web_agente_acceso_exitoso(self): try: login(self.browser, AGENTE_USERNAME, AGENTE_PASSWORD) self.assertTrue( self.browser.find_element_by_xpath( '//a[contains(@href, "/agente/logout/")]')) print('--Acceso web agente: Acceso exitoso.--') except Exception as e: print( '--ERROR: Acceso web agente: Acceso NO exitoso.--\n{0}'.format( e)) raise e
def test_agente_se_registra_correctamente(self): try: login(self.browser, AGENTE_USERNAME, AGENTE_PASSWORD) self.assertEqual( self.browser.find_element_by_id('dial_status').text, 'Agent connected to asterisk') print('--Se pudo registrar correctamente un agente.--') except Exception as e: print( '--ERROR: No se pudo registrar correctamente un agente.--\n{0}' .format(e)) raise e
def setUpClass(cls): # super(IntegrationTests, cls).setUpClass() cls.setUp() login(cls.browser, ADMIN_USERNAME, ADMIN_PASSWORD) group_name = 'group' + uuid.uuid4().hex[:5] crear_grupo(cls.browser, group_name) tipo_usuario = 'Agente' crear_user(cls.browser, AGENTE_USERNAME, AGENTE_PASSWORD, tipo_usuario) if BROWSER_REAL == 'True': asignar_agente_campana_manual(cls.browser, AGENTE_USERNAME) cls.tearDown()
def test_acceso_web_agente_acceso_denegado(self): try: clave_erronea = "test" login(self.browser, AGENTE_USERNAME, clave_erronea) self.assertEqual( self.browser.find_element_by_xpath( '//div[@class="alert alert-danger"]/p').text, 'Invalid Username/Password, please try again') print('--Acceso web agente: Acceso denegado.--') except Exception as e: print('--ERROR: Acceso web agente: Acceso NO denegado.--\n{0}'. format(e)) raise e
def test_sistema_externo(self): # Crear Sistema Externo try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) nuevo_sistema = '//a[contains(@href, "/sistema_externo/nuevo/")]' get_href(self.browser, nuevo_sistema) sistema_externo = 'sistema' + uuid.uuid4().hex[:5] id_externo = 'id' + uuid.uuid4().hex[:5] self.browser.find_element_by_id('id_nombre').send_keys(sistema_externo) self.browser.find_elements_by_xpath( '//select[@id=\'id_agente_en_sistema-0-agente\']/option')[1].click() self.browser.find_element_by_id( 'id_agente_en_sistema-0-id_externo_agente').send_keys(id_externo) self.browser.find_element_by_xpath("//button[@type='submit']").click() sleep(1) self.assertTrue(self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(sistema_externo))) print('--Se pudo crear un Sistema Externo.--') except Exception as e: print('--ERROR: No se pudo crear un Sistema Externo.-- \n{0}'. format(e)) raise e # Modificar Sistema Externo try: group_name = 'group' + uuid.uuid4().hex[:5] crear_grupo(self.browser, group_name) tipo_usuario = 'Agente' agente = 'agente' + uuid.uuid4().hex[:5] crear_user(self.browser, agente, AGENTE_PASSWORD, tipo_usuario) lista_sistema = '//li/a[contains(@href, "/sistema_externo/list/")]' get_href(self.browser, lista_sistema) update_sistema = '//tr[@id=\'{0}\']//a[contains(@href, "/update/")]'.format( sistema_externo) get_href(self.browser, update_sistema) nuevo_id = 'id' + uuid.uuid4().hex[:5] self.browser.find_elements_by_xpath( '//select[@id=\'id_agente_en_sistema-1-agente\']/option')[2].click() self.browser.find_element_by_id( 'id_agente_en_sistema-1-id_externo_agente').send_keys(nuevo_id) self.browser.find_element_by_xpath("//button[@type='submit']").click() sleep(1) get_href(self.browser, update_sistema) self.assertTrue(self.browser.find_elements_by_xpath( '//input[@value=\'{0}\']'.format(nuevo_id))) print('--Se pudo modificar un Sistema Externo.--') except Exception as e: print('--ERROR: No se pudo modificar el Sistema Externo--\n{0}'.format(e)) raise e
def test_no_permite_crear_lista_rapida_sin_formato_adecuado(self): try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) lista_erronea = 'lista_error' csv_path = "/home/{0}/ominicontacto/test/planilla-ejemplo-0.csv".format( USER) crear_lista_rapida(self.browser, csv_path, lista_erronea) texto_error = self.browser.find_element_by_xpath('//div/p').text error = 'Rows does not have 2 columns' self.assertEqual(texto_error, error) print( '--No se creo una lista rapida que no tenga las columnas Nombre y Telefono --' ) except Exception as e: print('--ERROR: Se pudo crear una lista rapida erronea. --\n{0}'. format(e)) raise e
def test_modificar_eliminar_agente(self): # modificar grupo del agente. try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) agente_username = '******' + uuid.uuid4().hex[:5] agente_password = AGENTE_PASSWORD tipo_usuario = 'Agente' crear_user(self.browser, agente_username, agente_password, tipo_usuario) group_name = 'grupo' + uuid.uuid4().hex[:5] crear_grupo(self.browser, group_name) user_list = '//a[contains(@href,"/user/list/1/")]' get_href(self.browser, user_list) link_update = '//tr[@id=\'{0}\']/td/a[@name="edit_agent_profile"]'.format( agente_username) get_href(self.browser, link_update) self.browser.find_element_by_xpath("//select[@id='id_grupo']/option[text()=\'{0}\']" .format(group_name)).click() sleep(1) self.browser.find_element_by_xpath(( "//button[@type='submit' and @id='id_registrar']")).click() sleep(1) get_href(self.browser, user_list) get_href(self.browser, link_update) self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight);') self.assertTrue(self.browser.find_element_by_xpath( "//select[@id=\'id_grupo\']/option[text()=\'{0}\']".format(group_name))) print('--Se pudo modificar el grupo de un agente.--') except Exception as e: print('--ERROR: No se pudo modificar el grupo de un agente.--\n{0}'.format(e)) raise e # Eliminar agente try: get_href(self.browser, user_list) link_delete = '//tr[@id=\'{0}\']/td/div//a[@name="delete_user"]'.format(agente_username) get_href(self.browser, link_delete) self.browser.find_element_by_xpath(( "//button[@type='submit']")).click() sleep(1) self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight);') self.assertFalse(self.browser.find_elements_by_xpath('//td[text()=\'{0}\']'.format( agente_username))) print('--Se pudo eliminar un agente.--') except Exception as e: print('--ERROR: No se pudo eliminar un agente.--\n{0}'.format(e)) raise e
def test_crear_update_sitio_externo_automatico_get(self): try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) sitio_get = 'sitio' + uuid.uuid4().hex[:5] url = 'www.test' + uuid.uuid4().hex[:5] + '.com' # Metodo Get sitio_externo(self.browser, sitio_get, url) self.browser.find_elements_by_xpath( '//select[@id=\'id_disparador\']/option')[1].click() self.browser.find_elements_by_xpath( '//select[@id=\'id_metodo\']/option')[0].click() self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(sitio_get))) print( '--Se pudo crear un Sitio externo para el disparador Automatico, metodo GET.--' ) except Exception as e: print('--ERROR: No se pudo crear Sitio Externo con disparador ' 'Automatico, metodo GET.--\n{0}'.format(e)) raise e try: # Modificar a Disparador Servidor update_servidor = '//tr[@id=\'{0}\']//a[contains(@href, "/update/")]'.format( sitio_get) get_href(self.browser, update_servidor) self.browser.find_elements_by_xpath( '//select[@id=\'id_disparador\']/option')[2].click() self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']//td[@id = "Server"]'.format(sitio_get))) print( '--Se pudo modificar el sitio Externo a disparador servidor.--' ) except Exception as e: print( '--ERROR: No se pudo modificar el sitio externo a disparador ' 'Servidor.--\n{0}'.format(e)) raise e
def test_crear_delete_sitio_externo_agente_get(self): try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) sitio_get = 'sitio' + uuid.uuid4().hex[:5] url = 'www.test' + uuid.uuid4().hex[:5] + '.com' # Metodo Get sitio_externo(self.browser, sitio_get, url) self.browser.find_elements_by_xpath( '//select[@id=\'id_disparador\']/option')[0].click() self.browser.find_elements_by_xpath( '//select[@id=\'id_metodo\']/option')[0].click() self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(sitio_get))) print( '--Se pudo crear un Sitio externo para el disparador agente, metodo GET.--' ) except Exception as e: print( '--ERROR: No se pudo crear Sitio Externo con disparador Agente, ' 'metodo GET.--\n{0}'.format(e)) raise e try: # Eliminar Sitio Externo delete_sitio = '//tr[@id=\'{0}\']//a[contains(@href, "/delete/")]'.format( sitio_get) get_href(self.browser, delete_sitio) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertFalse( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(sitio_get))) print( '--Se puede eliminar un Sitio Externo con disparador agente, metodo GET.--' ) except Exception as e: print( '--ERROR: No se pudo eliminar un Sitio ' 'Externo con disparador agente, metodo GET.--\n{0}'.format(e)) raise e
def test_crear_update_sitio_externo_agente_post(self): try: # Metodo Post login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) url = 'www.test' + uuid.uuid4().hex[:5] + '.com' formato = ['multipart', 'urlencoded', 'text', 'json'] for items in formato: sitio_post = 'sitio' + uuid.uuid4().hex[:5] sitio_externo(self.browser, sitio_post, url) self.browser.find_elements_by_xpath( '//select[@id=\'id_disparador\']/option')[0].click() self.browser.find_elements_by_xpath( '//select[@id=\'id_metodo\']/option')[1].click() formato_sitio(self.browser, items) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') self.assertTrue( self.browser.find_element_by_xpath( '//tr[@id=\'{0}\']'.format(sitio_post))) # Modificar a Disparador Servidor update_servidor = '//tr[@id=\'{0}\']//a[contains(@href, "/update/")]'.format( sitio_post) get_href(self.browser, update_servidor) self.browser.find_elements_by_xpath( '//select[@id=\'id_disparador\']/option')[2].click() self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']//td[@id = "Server"]'.format( sitio_post))) print( '--Se pudo crear un Sitio externo para el disparador agente, metodo POST.--' ) print( '--Se pudo modificar el sitio Externo a disparador servidor.--' ) except Exception as e: print( '--ERROR: No se pudo crear Sitio Externo con disparador Agente, ' 'metodo POST y luego modificarlos a disparador Servidor.--\n{0}' .format(e)) raise e
def test_crear_editar_usuarios_supervisorprofile(self): # Creacion de usuarios con SupervisorProfile login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) tipo_usuario = ['Administrador', 'Gerente', 'Supervisor', 'Referente'] for usuario in tipo_usuario: try: user = usuario + uuid.uuid4().hex[:5] password = '******' crear_user(self.browser, user, password, usuario) self.browser.find_elements_by_xpath('//td[text()=\'{0}\']'.format(user)) print('Se pudo crear un ' + usuario + ' con exito.') except Exception as e: print('--ERROR: No se pudo crear un ' + usuario + ' .--\n{0}'.format(e)) raise e # modificar a otro perfil try: self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight);') link_update = '//tr[@id=\'{0}\']/td/a[@name="edit_profile"]'.format(user) get_href(self.browser, link_update) if usuario == 'Administrador': cambio_perfil = 'Gerente' elif usuario == 'Gerente': cambio_perfil = 'Supervisor' elif usuario == 'Supervisor': cambio_perfil = 'Referente' else: cambio_perfil = 'Administrador' self.browser.find_element_by_xpath("//select[@id='id_rol']//option[contains\ (text(), \'{0}\')]".format(cambio_perfil)).click() self.browser.find_element_by_xpath(( "//button[@type='submit' and @id='id_registrar']")).click() sleep(1) user_list = '//a[contains(@href,"/user/list/1/")]' get_href(self.browser, user_list) get_href(self.browser, link_update) self.assertTrue(self.browser.find_element_by_xpath("//select[@id='id_rol']//option[contains\ (text(), \'{0}\')]".format(cambio_perfil))) print('Se pudo modificar a un Perfil de ' + cambio_perfil) except Exception as e: print('--ERROR: No se pudo modificar el perfil de un supervisor.--\n{0}'.format(e)) raise e
def test_crear_grupo_con_Autounpause(self): try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) link_create_group = '//a[contains(@href,"/grupo/nuevo")]' get_href(self.browser, link_create_group) group_name = 'grupo' + uuid.uuid4().hex[:5] auto_unpause = random.randrange(1, 99) self.browser.find_element_by_id('id_nombre').send_keys(group_name) self.browser.find_element_by_id('id_auto_unpause').send_keys(auto_unpause) self.browser.find_element_by_id('id_auto_attend_inbound').click() self.browser.find_element_by_id('id_auto_attend_dialer').click() self.browser.find_element_by_xpath(( "//button[@type='submit' and @id='id_registrar']")).click() sleep(1) self.browser.find_elements_by_xpath('//td[text()=\'{0}\']'.format(group_name)) print('--Se pudo crear un grupo con autounpause.--') except Exception as e: print('--ERROR: No se pudo crear un grupo con autounpause.--\n{0}'.format(e)) raise e # Editar Grupo try: group_list = '//a[contains(@href,"/grupo/list/")]' get_href(self.browser, group_list) link_edit = "//tr[@id=\'{0}\']/td/div//a[contains(@href,'/grupo/update')]".format( group_name) get_href(self.browser, link_edit) nuevo_groupname = 'grupo' + uuid.uuid4().hex[:5] self.browser.find_element_by_id('id_nombre').clear() sleep(1) self.browser.find_element_by_id('id_nombre').send_keys(nuevo_groupname) self.browser.find_element_by_xpath(( "//button[@type='submit' and @id='id_registrar']")).click() sleep(1) self.browser.find_elements_by_xpath('//td[text()=\'{0}\']'.format( nuevo_groupname)) print('--Se pudo editar un grupo.') except Exception as e: print('--ERROR: No se pudo editar un grupo.--\n{0}'.format(e)) raise e
def test_accesos_web_usuarios_con_supervisorprofile_acceso_exitoso(self): tipo_usuario = ['Administrador', 'Gerente', 'Supervisor', 'Referente'] for usuario in tipo_usuario: try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) user = usuario + uuid.uuid4().hex[:5] password = '******' crear_user(self.browser, user, password, usuario) # Deslogueo deslogueo = '//a[contains(@href, "/accounts/logout/")]' get_href(self.browser, deslogueo) # Logueo login(self.browser, user, password) self.assertTrue( self.browser.find_element_by_xpath( '//a[contains(@href, "/accounts/logout/")]')) get_href(self.browser, deslogueo) print('--Acceso web ' + usuario + ': Acceso exitoso.--') except Exception as e: print('--ERROR: Acceso web ' + usuario + ': Acceso NO exitoso.--\n{0}'.format(e)) raise e
def test_agregar_csv_lista_rapida(self): # agregar contactos a una lista rapida try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) Lista_rapida = 'listaRapida' + uuid.uuid4().hex[:5] csv_path = "/home/{0}/ominicontacto/ominicontacto_app/static/ominicontacto"\ "/ejemplo_lista_rapida.csv".format(USER) crear_lista_rapida(self.browser, csv_path, Lista_rapida) self.browser.find_element_by_xpath( '//label/input[@value = "Telefono"]').click() self.browser.find_element(By.CSS_SELECTOR, ".btn-success").click() sleep(1) editar_lista = '//tr[@id=\'{0}\']//td//a[contains(@href, "/actualizar/")]'.format( Lista_rapida) get_href(self.browser, editar_lista) nueva_lista = 'listaRapida' + uuid.uuid4().hex[:5] self.browser.find_element(By.NAME, 'nombre').clear() sleep(1) self.browser.find_element(By.NAME, 'nombre').send_keys(nueva_lista) self.browser.find_element( By.NAME, 'archivo_importacion').send_keys(csv_path) self.browser.find_element(By.CSS_SELECTOR, ".btn-primary").click() sleep(1) self.browser.find_element_by_xpath( '//label/input[@value = "Telefono"]').click() self.browser.find_element(By.CSS_SELECTOR, ".btn-success").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( '//td[contains(text(), \'{0}\')]'.format(nueva_lista))) print( '--Se pudo agregar contacto desde un CSV a una la lista rapida.--' ) except Exception as e: print( '--ERROR: No se pudo agregar contactos desde un CSV a una lista rapida. --\n{0}' .format(e)) raise e
def test_agente_puede_realizar_llamada_fuera_de_campana(self): try: numero_externo = '351111111' login(self.browser, AGENTE_USERNAME, AGENTE_PASSWORD) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') self.browser.find_element_by_id('call_off_campaign_menu').click() sleep(1) self.browser.find_element_by_id('phone_off_camp').send_keys( numero_externo) self.browser.find_element_by_id('call_phone_off_campaign').click() webdriver.ActionChains(self.browser).send_keys( Keys.ESCAPE).perform() sleep(1) self.assertEqual( self.browser.find_element_by_id('dial_status').text, 'Connected to {0}'.format(numero_externo)) print('--Se pudo realizar una llamada fuera de la campana.--') except Exception as e: print( '--ERROR: No se pudo realizar una llamada fuera de la campana.--\n{0}' .format(e)) raise e
def test_subir_audio_erroneo(self): try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) audio_list = '//a[contains(@href,"/audios/")]' get_href(self.browser, audio_list) audio_create = '//a[contains(@href,"/audios/create/")]' get_href(self.browser, audio_create) descripcion_audio = 'audio' + uuid.uuid4().hex[:5] self.browser.find_element_by_id('id_descripcion').send_keys( descripcion_audio) wav_path = "/home/{0}/ominicontacto/test/wavs/error_audio.mp3".format( USER) self.browser.find_element_by_id('id_audio_original').send_keys( wav_path) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.browser.find_elements_by_xpath( '//ul/li[text()="Allowed files: .wav"]') print('--No se permitio subir un audio erroneo.--') except Exception as e: print('--ERROR: Permitio subir un audio erroneo.--\n{0}'.format(e)) raise e
def test_crear_usuario_tipo_agente_como_administrador(self): # Creacion de un agente try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) agente_username = '******' + uuid.uuid4().hex[:5] agente_password = AGENTE_PASSWORD # rellenar etapa1 del wizard de creacion de usuario (agente) tipo_usuario = 'Agente' crear_user(self.browser, agente_username, agente_password, tipo_usuario) self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight);') self.browser.find_elements_by_xpath('//td[text()=\'{0}\']'.format( agente_username)) print('--Se pudo crear un agente.') except Exception as e: print('--ERROR: No se pudo crear un agente.--\n{0}'.format(e)) raise e # Editar agente try: user_list = '//a[contains(@href,"/user/list/1/")]' get_href(self.browser, user_list) # xpath para editar un agente link_edit = '//tr[@id=\'{0}\']/td/div//a[@name="edit_user"]'.format(agente_username) get_href(self.browser, link_edit) nuevo_username = '******' + uuid.uuid4().hex[:5] self.browser.find_element_by_id('id_username').clear() sleep(1) self.browser.find_element_by_id('id_username').send_keys(nuevo_username) self.browser.find_element_by_xpath(( "//button[@type='submit' and @id='id_registrar']")).click() sleep(1) self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight);') self.browser.find_elements_by_xpath('//td[text()=\'{0}\']'.format( nuevo_username)) print('--Se pudo editar un agente.--') except Exception as e: print('--ERROR: No se pudo editar un agente.--\n{0}'.format(e)) raise e
def test_acceso_web_usuarios_con_supervisorprofile_acceso_denegado(self): tipo_usuario = ['Administrador', 'Gerente', 'Supervisor', 'Referente'] for usuario in tipo_usuario: try: # Creacion supervisor que vamos a usar para simular un acceso denegado login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) user = usuario + uuid.uuid4().hex[:5] password = '******' crear_user(self.browser, user, password, usuario) clave_erronea = 'test' # Deslogueo como admin deslogueo = '//a[contains(@href, "/accounts/logout/")]' get_href(self.browser, deslogueo) # Logueo como supervisor login(self.browser, user, clave_erronea) self.assertEqual( self.browser.find_element_by_xpath( '//div[@class="alert alert-danger"]/p').text, 'Invalid Username/Password, please try again') print('--Acceso web ' + usuario + ': Acceso denegado.--') except Exception as e: print('--ERROR: Acceso web ' + usuario + ': Acceso NO denegado.--\n{0}'.format(e)) raise e
def test_crear_update_calificaciones(self): # Crear 7 nuevas calificaciones. try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) lista_calificaciones = ['Venta', 'No Venta', 'No Interesado', 'No conoce', 'Ya Tiene', 'Es jubilado'] for items in lista_calificaciones: crear_calificacion(self.browser, items) self.assertTrue(self.browser.find_elements_by_xpath('//td[text()=\'{0}\']' .format(items))) print('--Se pudo crear 7 calificaciones.--') except Exception as e: print('--ERROR: No se pudo crear 7 calificaciones.--\n{0}'.format(e)) raise e # Editar la calificacion: "Ya tiene" por "Ya conoce". try: update_calificacion = 'Ya conoce' calificacion = 'Ya Tiene' self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight);') link_update = self.browser.find_element_by_xpath( '//tr[@id = \'{0}\']//a[contains(@href, "/update/")]' .format(calificacion)) href_update = link_update.get_attribute('href') self.browser.get(href_update) self.browser.find_element_by_id('id_nombre').clear() self.browser.find_element_by_id('id_nombre').send_keys(update_calificacion) self.browser.find_element_by_xpath("//button[@type='submit']").click() sleep(1) self.browser.execute_script('window.scrollTo(0, document.body.scrollHeight);') self.assertTrue(self.browser.find_elements_by_xpath('//td[text()=\'{0}\']'.format( update_calificacion))) print('--Se pudo editar la calificacion: "Ya tiene" por "Ya conoce".--') except Exception as e: print('--Error: No se pudo editar la calificacion:' '"Ya tiene" por "Ya conoce".-- \n{0}'.format(e)) raise e
def test_crear_modificar_eliminar_audio(self): try: # Crear audio login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) audio_list = '//a[contains(@href,"/audios/")]' get_href(self.browser, audio_list) audio_create = '//a[contains(@href,"/audios/create/")]' get_href(self.browser, audio_create) descripcion_audio = 'audio' + uuid.uuid4().hex[:5] self.browser.find_element_by_id('id_descripcion').send_keys( descripcion_audio) wav_path = "/home/{0}/ominicontacto/test/wavs/8k16bitpcm.wav".format( USER) self.browser.find_element_by_id('id_audio_original').send_keys( wav_path) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.browser.find_elements_by_xpath( '//tr[text()=\'{0}\']'.format(descripcion_audio)) print('--Se pudo crear un audio.--') except Exception as e: print('--ERROR: No se pudo crear un audio.--\n{0}'.format(e)) raise e # Modificar Audio try: duracion_wav_path = 13 duracion_nuevo_wav = 35 self.browser.find_element_by_xpath( '//tr[@id=\'{0}\']//a[contains(@href, "/update/")]'.format( descripcion_audio)).click() nuevo_wav = "/home/{0}/ominicontacto/test/wavs/audio1.wav".format( USER) self.browser.find_element_by_id('id_audio_original').send_keys( nuevo_wav) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.browser.find_element_by_xpath( '//tr[@id=\'{0}\']//a[contains(@href, "/update/")]'.format( descripcion_audio)).click() self.browser.find_element_by_id('id_audio_original').send_keys( nuevo_wav) self.assertNotEqual( self.browser.find_element_by_xpath( "//input[text()=\'{0}\']".format(duracion_nuevo_wav)), duracion_wav_path) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) print('--Se pudo modificar un audio.--') except Exception as e: print('--ERROR: No se pudo modificar un audio.--\n{0}'.format(e)) raise e # Eliminar Audio try: self.browser.find_element_by_xpath( '//tr[@id=\'{0}\']//a[contains(@href, "/eliminar/")]'.format( descripcion_audio)).click() self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertFalse( self.browser.find_elements_by_xpath( '//tr[text()=\'{0}\']'.format(nuevo_wav))) print('--Se pudo eliminar un audio.--') except Exception as e: print('--ERROR: No se pudo eliminar un audio.--\n{0}'.format(e)) raise e
def setUpClass(cls): # super(IntegrationTests, cls).setUpClass() cls.setUp() login(cls.browser, ADMIN_USERNAME, ADMIN_PASSWORD) cls.tearDown()
def test_crear_formularios(self): try: login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) nuevo_formulario = '//a[contains(@href, "/formulario/nuevo")]' get_href(self.browser, nuevo_formulario) nombre_form = 'form' + uuid.uuid4().hex[:5] descripcion = 'Este form fue generado para tests' self.browser.find_element(By.NAME, 'nombre').send_keys(nombre_form) self.browser.find_element(By.NAME, 'descripcion').send_keys(descripcion) self.browser.find_element(By.CSS_SELECTOR, ".btn-primary").click() self.browser.implicitly_wait(3) nombre_campos = [ 'Nombre', 'Fecha_nacimiento', 'Opciones', 'Comentarios' ] crear_campos_formulario(self.browser, nombre_campos) self.browser.find_element(By.CSS_SELECTOR, ".btn-primary").click() self.browser.implicitly_wait(3) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') self.browser.find_element(By.CSS_SELECTOR, ".btn-primary").click() self.browser.implicitly_wait(3) self.browser.find_element(By.LINK_TEXT, "YES").click() self.browser.implicitly_wait(3) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') self.browser.find_element( By.XPATH, '//tr[@id = \'{0}\']/td[4]/a'.format(nombre_form)).click() for items in nombre_campos: self.assertTrue(self.browser.find_elements(By.NAME, items)) print('--Se pudo crear un Formulario con un campo \'{0}\'.--'. format(items)) except Exception as e: print('--ERROR: No se pudo crear un Formulario.-- \n{0}'.format(e)) raise e # Ocultar y Mostrar Formulario. try: self.browser.find_element(By.CSS_SELECTOR, ".btn-outline-primary").click() self.browser.implicitly_wait(3) self.browser.find_element( By.XPATH, '//tr[@id=\'{0}\']/td[5]'.format( nombre_form)).click() # oculto form sleep(3) self.assertFalse( self.browser.find_elements( By.XPATH, '//tr[@id=\'{0}\']'.format(nombre_form))) mostrar_ocultos = '//a[contains(@href, "formulario/list/mostrar_ocultos/")]' get_href(self.browser, mostrar_ocultos) self.browser.find_element( By.XPATH, '//tr[@id=\'{0}\']/td[5]'.format( nombre_form)).click() # muestro form self.assertTrue( self.browser.find_elements( By.XPATH, '//tr[@id=\'{0}\']'.format(nombre_form))) print('--Se pudo ocultar y mostrar un formulario.--') except Exception as e: print( '--ERROR: No se pudo ocultar y mostrar un formulario.-- \n{0}'. format(e)) raise e