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 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_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_editar_eliminar_lista_contacto_base(self): # Editar Lista de Contacto try: csv_path = "/home/{0}/ominicontacto/ominicontacto_app/static/ominicontacto"\ "/example-db.csv".format(USER) BD_nueva = 'BD' + uuid.uuid4().hex[:5] multinum = False crear_BD(self.browser, csv_path, BD_nueva, multinum) lista_contacto = '//tr[@id=\'{0}\']//a[contains(@href, "/list_contacto/")]'.format( BD_nueva) get_href(self.browser, lista_contacto) contacto = '4553101' editar_contacto = '//tr[@id=\'{0}\']//td//a[contains(@href, "/update/")]'.format( contacto) get_href(self.browser, editar_contacto) self.browser.find_element_by_id('id_telefono').clear() sleep(1) nuevo_telefono = '4789032' self.browser.find_element_by_id('id_telefono').send_keys( nuevo_telefono) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(nuevo_telefono))) print('--Se pudo editar un contacto en la BD.--') except Exception as e: print('--ERROR: No se pudo editar un contacto en la BD.--\n{0}'. format(e)) raise e # Eliminar lista de contacto try: lista_BD = '//a[contains(@href,"/base_datos_contacto/")]' get_href(self.browser, lista_BD) lista_contacto = '//tr[@id=\'{0}\']//a[contains(@href, "/list_contacto/")]'.format( BD_nueva) get_href(self.browser, lista_contacto) eliminar_contacto = '//tr[@id=\'{0}\']//td//a[contains(@href, "/eliminar/")]'.format( nuevo_telefono) get_href(self.browser, eliminar_contacto) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertFalse( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(nuevo_telefono))) print('--Se pudo eliminar un contacto en la BD.--') except Exception as e: print('--ERROR: No se pudo eliminar un contacto en la BD.--\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_agregar_contacto_base_multinum(self): # Crear Base Multinum try: csv_path = "/home/{0}/ominicontacto/test/base_prueba_multinum.csv".format( USER) BD_nueva = 'BD' + uuid.uuid4().hex[:5] multinum = True crear_BD(self.browser, csv_path, BD_nueva, multinum) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(BD_nueva))) print('--Se pudo crear una BD Multinum.--') except Exception as e: print( '--ERROR: No se pudo crear una BD Multinum.--\n{0}'.format(e)) raise e # Agregar un Contacto try: agregar_contacto = '//tr[@id=\'{0}\']//td//a[contains'\ '(@href, "/agregar_contacto/")]'.format(BD_nueva) get_href(self.browser, agregar_contacto) telefono = '3456789' cell = '154352879' self.browser.find_element_by_id('id_telefono').send_keys(telefono) self.browser.find_element_by_id('id_cell').send_keys(cell) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') lista_contacto = '//tr[@id=\'{0}\']//a[contains(@href, "/list_contacto/")]'.format( BD_nueva) get_href(self.browser, lista_contacto) self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(telefono))) print('--Se pudo agregar un solo contacto a la BD.--') except Exception as e: print( '--ERROR: No se pudo agregar un solo contacto a la BD.--\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_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_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_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_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_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_agregar_csv_base_multinum(self): # Agregar un CSV try: csv_path = "/home/{0}/ominicontacto/test/base_prueba_multinum.csv".format( USER) BD_nueva = 'BD' + uuid.uuid4().hex[:5] multinum = True crear_BD(self.browser, csv_path, BD_nueva, multinum) nuevo_path = "/home/{0}/ominicontacto/test/base_prueba_multinum2.csv".format( USER) lista_BD = '//a[contains(@href,"/base_datos_contacto/")]' get_href(self.browser, lista_BD) agregar_csv = '//tr[@id=\'{0}\']//td//a[contains(@href, "/actualizar/")]'.format( BD_nueva) get_href(self.browser, agregar_csv) self.browser.find_element_by_id( 'id_archivo_importacion').send_keys(nuevo_path) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) numero = '351351319' get_href(self.browser, lista_BD) lista_contacto = '//tr[@id=\'{0}\']//a[contains(@href, "/list_contacto/")]'.format( BD_nueva) get_href(self.browser, lista_contacto) self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(numero))) print('--Se puede agregar contactos a la BD a traves de un .CSV--') except Exception as e: print('--ERROR: No se pudo agregar contactos a la BD a' 'traves de un CSV.--\n{0}'.format(e)) raise e
def test_crear_ocultar_base_de_datos(self): # Crear nueva base de datos try: csv_path = "/home/{0}/ominicontacto/ominicontacto_app/static/ominicontacto"\ "/example-db.csv".format(USER) BD_nueva = 'BD' + uuid.uuid4().hex[:5] multinum = False crear_BD(self.browser, csv_path, BD_nueva, multinum) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(BD_nueva))) print('--Se pudo crear una BD.--') except Exception as e: print('--ERROR: No se pudo crear una BD.--\n{0}'.format(e)) raise e # Ocultar Base de datos try: lista_BD = '//a[contains(@href,"/base_datos_contacto/")]' get_href(self.browser, lista_BD) ocultar_BD = '//tr[@id=\'{0}\']//td//a[contains(@href, "/ocultar/")]'.format( BD_nueva) get_href(self.browser, ocultar_BD) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') self.assertFalse( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(BD_nueva))) self.browser.find_element_by_xpath('//a[@onclick]').click() sleep(1) self.browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') desocultar = '//tr[@id=\'{0}\']//td//a[4]'.format(BD_nueva) get_href(self.browser, desocultar) self.assertTrue( self.browser.find_elements_by_xpath( '//tr[@id=\'{0}\']'.format(BD_nueva))) print('--Se oculto y desoculto con exito una base de datos.--') except Exception as e: print( '--ERROR: No se pudo ocultar y desocultar una base de datos.--\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_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 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_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
def test_pausa_productiva(self): try: # crear pausa productiva login(self.browser, ADMIN_USERNAME, ADMIN_PASSWORD) link_create_pausa = '//a[contains(@href,"/pausa/nuevo")]' get_href(self.browser, link_create_pausa) pausa_nueva = 'pausa_pro' + uuid.uuid4().hex[:5] self.browser.find_element_by_id('id_nombre').send_keys(pausa_nueva) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( '//td[text()=\'{0}\']'.format(pausa_nueva))) print('--Se pudo crear una pausa productiva.--') except Exception as e: print('--ERROR: No se pudo crear una pausa productiva.--\n{0}'. format(e)) raise e # modificar pausa productiva try: link_edit = '//tr[@id=\'{0}\']//a[contains(@href, "/pausa/update/")]'.format( pausa_nueva) get_href(self.browser, link_edit) pausa_recreativa = 'pausa_rec' + 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( pausa_recreativa) self.browser.find_element_by_xpath( "//select/option[@value = 'R']").click() sleep(1) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( '//td[text()=\'{0}\']'.format(pausa_recreativa))) print('--Se pudo modificar una pausa productiva.--') except Exception as e: print('--ERROR: No se pudo modificar una pausa productiva.--\n{0}'. format(e)) raise e # eliminar pausa recreativa try: link_delete = "//tr[@id=\'{0}\']//a[contains(@href, '/pausa/delete/')]".format( pausa_recreativa) get_href(self.browser, link_delete) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( "//tr[@id='pausa_eliminada']//td[contains(text(), \'{0}\')]" .format(pausa_recreativa))) print('--Se pudo eliminar una pausa recreativa.--') except Exception as e: print('--ERROR: No se pudo eliminar una pausa recreativa.--\n{0}'. format(e)) raise e # reactivar pausa recreativa try: link_reactivate = "//tr[@id='pausa_eliminada']//td[@id=\'{0}\']//"\ "a[contains(@href, '/pausa/delete/')]".format(pausa_recreativa) get_href(self.browser, link_reactivate) self.browser.find_element_by_xpath( "//button[@type='submit']").click() sleep(1) self.assertTrue( self.browser.find_elements_by_xpath( '//td[text()=\'{0}\']'.format(pausa_recreativa))) print('--Se pudo reactivar una pausa recreativa.--') except Exception as e: print('--ERROR: No se pudo reactivar una pausa recreativa.--\n{0}'. format(e)) raise e