Example #1
0
    def test_delete_voting(self):
        q = Question(desc='test question')
        q.save()
        for i in range(5):
            opt = QuestionOption(question=q, option='option {}'.format(i + 1))
            opt.save()
        v = Voting(name='test voting', question=q)
        v.save()

        a, _ = Auth.objects.get_or_create(url=settings.BASEURL,
                                          defaults={'me': True,
                                                    'name': 'test auth'})
        a.save()
        v.auths.add(a)

        v.delete()
Example #2
0
class TestGoogle(StaticLiveServerTestCase):
    def create_voting(self):
        self.q = Question(desc='Prueba votación')
        self.q.save()
        for i in range(2):
            opt = QuestionOption(question=self.q,
                                 option='Opción {}'.format(i + 1))
            opt.save()
        self.v = Voting(name='Prueba votación', question=self.q, slug="prueba")
        self.v.save()
        self.a, _ = Auth.objects.get_or_create(url=settings.BASEURL,
                                               defaults={
                                                   'me': True,
                                                   'name': 'test auth'
                                               })
        self.a.save()
        self.v.auths.add(self.a)
        self.v.create_pubkey()
        self.v.start_date = timezone.now()
        self.v.save()

    def setUp(self):

        self.base = BaseTestCase()
        self.base.setUp()
        self.vars = {}
        self.create_voting()
        options = webdriver.ChromeOptions()
        options.headless = True
        self.driver = webdriver.Chrome(options=options)
        self.wait = WebDriverWait(self.driver, 10)
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)

        self.driver = webdriver.Firefox()

        super().setUp()

    def tearDown(self):
        super().tearDown()
        self.driver.quit()
        self.base.tearDown()
        self.v.delete()

    def test_google(self):

        self.driver.get(f'{self.live_server_url}/booth/{self.v.pk}')
        assert self.driver.find_element(
            By.CSS_SELECTOR,
            ".voting > h1").text == f"{self.v.pk} - Prueba votación"
        self.driver.find_element(By.LINK_TEXT, "Login con Google").click()

        #introducir un email mal
        self.driver.find_element(By.ID, "identifierId").send_keys("test")
        self.driver.find_element(By.ID, "identifierId").send_keys(Keys.ENTER)
        self.driver.find_element(By.ID,
                                 "identifierId").send_keys(Keys.BACKSPACE)
        self.driver.find_element(By.ID,
                                 "identifierId").send_keys(Keys.BACKSPACE)
        self.driver.find_element(By.ID,
                                 "identifierId").send_keys(Keys.BACKSPACE)
        self.driver.find_element(By.ID,
                                 "identifierId").send_keys(Keys.BACKSPACE)

        # introducir un email que si existe
        self.driver.find_element(
            By.ID, "identifierId").send_keys("*****@*****.**")
        self.driver.find_element(By.ID, "identifierId").send_keys(Keys.ENTER)
Example #3
0
class Github(StaticLiveServerTestCase):
    def create_voting(self):
        self.q = Question(desc='Prueba votación')
        self.q.save()
        for i in range(2):
            opt = QuestionOption(question=self.q,
                                 option='Opción {}'.format(i + 1))
            opt.save()
        self.v = Voting(name='Prueba votación', question=self.q, slug="prueba")
        self.v.save()
        self.a, _ = Auth.objects.get_or_create(url=settings.BASEURL,
                                               defaults={
                                                   'me': True,
                                                   'name': 'test auth'
                                               })
        self.a.save()
        self.v.auths.add(self.a)
        self.v.create_pubkey()
        self.v.start_date = timezone.now()
        self.v.save()

    def setUp(self):

        self.base = BaseTestCase()
        self.base.setUp()
        self.vars = {}
        self.create_voting()
        options = webdriver.ChromeOptions()
        options.headless = True
        self.driver = webdriver.Chrome(options=options)

        self.driver = webdriver.Firefox()

        super().setUp()

    def tearDown(self):
        super().tearDown()
        self.driver.quit()
        self.base.tearDown()
        self.v.delete()

    ''' 
    #Sólo se ejecuta correctamente en local
    def test_login_correcto_github(self):
        #Redirección a la votación creada
        self.driver.get(f'{self.live_server_url}/booth/{self.v.pk}')
        assert self.driver.find_element(By.CSS_SELECTOR, ".voting > h1").text == f"{self.v.pk} - Prueba votación"
        #Inicio sesión con github
        self.driver.find_element(By.LINK_TEXT, "Login con GitHub").click()
        self.driver.find_element(By.CSS_SELECTOR, "p:nth-child(2)").click()
        assert self.driver.find_element(By.CSS_SELECTOR, "strong:nth-child(3)").text == "AuthenticationApp"
        self.driver.find_element(By.ID, "login_field").click()
        self.driver.find_element(By.ID, "login_field").send_keys("decideautenticacion")
        self.driver.find_element(By.ID, "password").click()
        self.driver.find_element(By.ID, "password").send_keys("pruebadecide11")
        self.driver.find_element(By.NAME, "commit").click()
        #Esperamos 4 segundos debido a las diferentes redirecciones hasta llegar de nuevo a la página de votación
        time.sleep(3)
        assert self.driver.find_element(By.CSS_SELECTOR, ".btn").text == "Vote"
    '''

    #Usuario introduce una contraseña incorrecta de su cuenta de Github
    def test_login_incorrect_password(self):
        #Redirección a la votación creada
        self.driver.get(f'{self.live_server_url}/booth/{self.v.pk}')
        assert self.driver.find_element(
            By.CSS_SELECTOR,
            ".voting > h1").text == f"{self.v.pk} - Prueba votación"
        #Inicio sesión con github
        self.driver.find_element(By.LINK_TEXT, "Login con GitHub").click()
        self.driver.find_element(By.CSS_SELECTOR, "p:nth-child(2)").click()
        assert self.driver.find_element(
            By.CSS_SELECTOR, "strong:nth-child(3)").text == "AuthenticationApp"
        self.driver.find_element(By.ID, "login_field").click()
        self.driver.find_element(
            By.ID, "login_field").send_keys("decideautenticacion")
        self.driver.find_element(By.ID, "password").click()
        self.driver.find_element(By.ID, "password").send_keys("1234")
        self.driver.find_element(By.NAME, "commit").click()
        #Mensaje error
        assert self.driver.find_element(
            By.CSS_SELECTOR,
            ".flash > .container-lg").text == "Incorrect username or password."

    #Usuario introduce un username incorrecto de su cuenta de Github
    def test_login_incorrect_username(self):
        #Redirección a la votación creada
        self.driver.get(f'{self.live_server_url}/booth/{self.v.pk}')
        assert self.driver.find_element(
            By.CSS_SELECTOR,
            ".voting > h1").text == f"{self.v.pk} - Prueba votación"
        #Inicio sesión con github
        self.driver.find_element(By.LINK_TEXT, "Login con GitHub").click()
        self.driver.find_element(By.CSS_SELECTOR, "p:nth-child(2)").click()
        assert self.driver.find_element(
            By.CSS_SELECTOR, "strong:nth-child(3)").text == "AuthenticationApp"
        self.driver.find_element(By.ID, "login_field").click()
        self.driver.find_element(
            By.ID, "login_field").send_keys("decideautenticacionn")
        self.driver.find_element(By.ID, "password").click()
        self.driver.find_element(By.ID, "password").send_keys("pruebadecide11")
        self.driver.find_element(By.NAME, "commit").click()
        #Mensaje error
        assert self.driver.find_element(
            By.CSS_SELECTOR,
            ".flash > .container-lg").text == "Incorrect username or password."
Example #4
0
class Login2FA(StaticLiveServerTestCase):

    def create_voting(self):
        self.q = Question(desc='Prueba votación')
        self.q.save()
        for i in range(2):
            opt = QuestionOption(question=self.q, option='Opción {}'.format(i+1))
            opt.save()
        self.v= Voting(name='Prueba votación', question=self.q, slug="prueba")
        self.v.save()
        self.a, _ = Auth.objects.get_or_create(url=settings.BASEURL,defaults={'me': True, 'name': 'test auth'})
        self.a.save()
        self.v.auths.add(self.a)
        self.v.create_pubkey()
        self.v.start_date = timezone.now()
        self.v.save()
        
    def createUsers(self):
        self.user_with_2fa = User(username='******')
        self.user_with_2fa.set_password('qwerty')
        self.user_with_2fa.save()

        self.user_no_2fa = User(username="******")
        self.user_no_2fa.set_password('qwerty')
        self.user_no_2fa.save()

        self.extra = Extra(phone='020304050')
        self.extra.totp_code = 'S3K3TPI5MYA2M67V'
        self.extra.user = self.user_with_2fa
        self.extra.save()


    def setUp(self):

        self.base = BaseTestCase()
        self.base.setUp()

        self.vars = {}
        self.create_voting()
        self.createUsers()
        options = webdriver.ChromeOptions()
        options.headless = True
        self.driver = webdriver.Chrome(options=options)

        super().setUp()

    def tearDown(self):
        super().tearDown()
        self.driver.quit()
        self.base.tearDown()
        self.v.delete()

    #Un usuario con 2fa no puede logearse si no lo introduce
    def test_login2faWithoutIt(self):
        self.driver.get(f'{self.live_server_url}/booth/{self.v.pk}')
        self.driver.set_window_size(1366, 728)
        self.driver.find_element(By.ID, "username").click()
        self.driver.find_element(By.ID, "username").send_keys("user2fa")
        self.driver.find_element(By.ID, "password").click()
        self.driver.find_element(By.ID, "password").send_keys("qwerty")
        self.driver.find_element(By.CSS_SELECTOR, ".btn").click()
        assert self.driver.find_element(By.ID, "__BVID__11__BV_label_").text == "Username"

    #Un usuario sin 2fa puede logearse bien
    def test_logino2fa(self):
        self.driver.get(f'{self.live_server_url}/booth/{self.v.pk}')
        self.driver.set_window_size(1366, 728)
        # self.driver.find_element(By.ID, "__BVID__19__BV_label_").click()
        self.driver.find_element(By.ID, "username").click()
        self.driver.find_element(By.ID, "username").send_keys("usernofa")
        self.driver.find_element(By.ID, "password").send_keys("qwerty")
        self.driver.find_element(By.CSS_SELECTOR, ".btn").click()
        elements = self.driver.find_elements(By.CSS_SELECTOR, ".btn")
        assert len(elements) > 0

    #Un usuario sin 2fa no puede logearse en el formulario para 2fa
    def test_loginno2fain2fa(self):
        self.driver.get(f'{self.live_server_url}/booth/{self.v.pk}')
        self.driver.set_window_size(1366, 728)
        self.driver.find_element(By.CSS_SELECTOR, ".custom-control:nth-child(2) > .custom-control-label").click()
        self.driver.find_element(By.ID, "username").click()
        self.driver.find_element(By.ID, "username").send_keys("usuarionofa")
        self.driver.find_element(By.ID, "password").send_keys("qwerty")
        self.driver.find_element(By.CSS_SELECTOR, ".btn").click()
        assert self.driver.find_element(By.ID, "__BVID__11__BV_label_").text == "Username"
Example #5
0
class Facebook(StaticLiveServerTestCase):
    def create_voting(self):
        self.q = Question(desc='Prueba votación')
        self.q.save()
        for i in range(2):
            opt = QuestionOption(question=self.q,
                                 option='Opción {}'.format(i + 1))
            opt.save()
        self.v = Voting(name='Prueba votación', question=self.q, slug="prueba")
        self.v.save()
        self.a, _ = Auth.objects.get_or_create(url=settings.BASEURL,
                                               defaults={
                                                   'me': True,
                                                   'name': 'test auth'
                                               })
        self.a.save()
        self.v.auths.add(self.a)
        self.v.create_pubkey()
        self.v.start_date = timezone.now()
        self.v.save()

    def setUp(self):

        self.base = BaseTestCase()
        self.base.setUp()

        self.vars = {}
        self.create_voting()
        options = webdriver.ChromeOptions()
        options.headless = True
        self.driver = webdriver.Chrome(options=options)

        self.wait = WebDriverWait(self.driver, 10)
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)

        self.driver = webdriver.Firefox()

        super().setUp()

    def tearDown(self):
        super().tearDown()
        self.driver.quit()
        self.base.tearDown()
        self.v.delete()

    def test_emailincorrecto(self):
        self.driver.get(f'{self.live_server_url}/booth/{self.v.pk}')
        assert self.driver.find_element(
            By.CSS_SELECTOR,
            ".voting > h1").text == f"{self.v.pk} - Prueba votación"

        self.driver.find_element(By.LINK_TEXT, "Login con Facebook").click()
        self.driver.find_element(By.ID, "email").send_keys("*****@*****.**")
        self.driver.find_element(By.ID, "email").send_keys(Keys.ENTER)
        assert self.driver.find_element(By.ID, "email").text == ""
        assert self.driver.find_element(By.ID, "pass").text == ""

    def test_contraseaincorrecta(self):
        self.driver.get(f'{self.live_server_url}/booth/{self.v.pk}')
        assert self.driver.find_element(
            By.CSS_SELECTOR,
            ".voting > h1").text == f"{self.v.pk} - Prueba votación"
        self.driver.set_window_size(824, 824)
        self.driver.find_element(By.LINK_TEXT, "Login con Facebook").click()
        self.driver.find_element(By.ID,
                                 "email").send_keys("*****@*****.**")
        self.driver.find_element(By.ID, "pass").send_keys("fdasffa")
        self.driver.find_element(By.ID, "pass").send_keys(Keys.ENTER)
        assert self.driver.find_element(By.ID, "pass").text == ""