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 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_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_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_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_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_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