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()
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)
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."
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"
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 == ""