def test_default_prefix(self, live_server, browser_in, users, driver_wait_time): """Test prefix shows on form.""" from site_config.models import SiteConfiguration config = SiteConfiguration.get_solo() config.default_number_prefix = "+45" config.save() b = load_page(browser_in, driver_wait_time, live_server + URI) # test is there def _test(): num_input = b.find_element_by_id("id_number") assert num_input.get_attribute("value") == "+45" assert_with_timeout(_test, 10 * driver_wait_time) config.default_number_prefix = "" config.save() b = load_page(browser_in, driver_wait_time, live_server + URI) # test is not there def _test(): num_input = b.find_element_by_id("id_number") assert num_input.get_attribute("value") != "+45"
def test_create_new_keyword(self, live_server, browser_in, keywords, groups, users, driver_wait_time): """Test good form submission.""" assert len(keywords) == models.Keyword.objects.count() b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_keyword(b, driver_wait_time) b = add_desc(b, driver_wait_time) b = add_custom_response(b, driver_wait_time) b = add_deac_response(b, driver_wait_time) b = add_too_early_response(b, driver_wait_time) b = add_activate_time(b, driver_wait_time) b = add_deactivate_time(b, driver_wait_time) b = add_linked_groups(b, driver_wait_time) b = add_owner(b, driver_wait_time, users["staff"].pk) b = add_subscriber(b, driver_wait_time, users["staff"].pk) b = send_form(b, driver_wait_time) def _test(): assert "/keyword/all/" in b.current_url assert len(keywords) + 1 == models.Keyword.objects.count() k = models.Keyword.objects.get(keyword="form") assert k.is_live assert k.subscribed_to_digest.count() == 1 assert k.owners.count() == 1 assert_with_timeout(_test, 10 * driver_wait_time)
def test_empty_form(self, live_server, browser_in, users, driver_wait_time): """Test submitting an empty form.""" b = load_page(browser_in, driver_wait_time, live_server + ADHOC_URI) send_button = b.find_element_by_id("send_button") assert send_button.text == "Send ($0.00)" assert send_button.get_attribute("disabled") == "true"
def test_twilio_delete_flow(self, live_server, browser_in, users, smsin, smsout, driver_wait_time): """Test good form submission.""" b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) n_in = models.SmsInbound.objects.count() n_out = models.SmsOutbound.objects.count() sleep(driver_wait_time * 3) click_and_wait(b.find_element_by_id(f'incoming_sms{smsin["sms1"].pk}'), driver_wait_time) click_and_wait( b.find_element_by_id(f'outgoing_sms{smsout["smsout"].pk}'), driver_wait_time) click_and_wait(b.find_element_by_id("deleteButton"), driver_wait_time) click_and_wait(b.find_element_by_id("confirmButton"), driver_wait_time) b.find_element_by_id("confirmDeleteInput").send_keys( "I understand this cannot be undone") click_and_wait(b.find_element_by_id("finalConfirmButton"), driver_wait_time) def _test(): assert "Messages successfully queued for deletion." in b.page_source assert n_in - 1 == models.SmsInbound.objects.count() assert n_out - 1 == models.SmsOutbound.objects.count() assert_with_timeout(_test, 10 * driver_wait_time)
def test_prepopulated_content(self, live_server, browser_in, users, driver_wait_time, recipients): """Test the multiple recipients in prepopulated field.""" # load the incoming log uri = "{0}?content={1}".format(ADHOC_URI, "DO%20NOT%20REPLY") b = load_page(browser_in, driver_wait_time, live_server + uri) content_box = b.find_element_by_id("id_content") assert "DO NOT REPLY" == content_box.get_attribute("value")
def test_good_form(self, live_server, browser_in, users, driver_wait_time, groups): """Test good form submission.""" b = load_page(browser_in, driver_wait_time, live_server + GROUP_URI) b = add_content_and_group(b, driver_wait_time) b = click_send(b, driver_wait_time) assert "Please check the logs for verification" in b.page_source assert "/outgoing/" in b.current_url
def test_scheduled_message(self, live_server, browser_in, users, driver_wait_time, groups): """Test good form submission with a scheduled time.""" b = load_page(browser_in, driver_wait_time, live_server + GROUP_URI) b = add_content_and_group(b, driver_wait_time) b = add_scheduled_time(b, driver_wait_time) b = click_send(b, driver_wait_time) assert "/scheduled/sms/" in b.current_url
def test_good_form(self, live_server, browser_in, users, driver_wait_time, recipients): """Test good form submission.""" b = load_page(browser_in, driver_wait_time, live_server + ADHOC_URI) b = add_content_and_recipient(b, driver_wait_time, recipients["calvin"].pk) b = click_send(b, driver_wait_time) assert "Please check the logs for verification" in b.page_source assert "/outgoing/" in b.current_url
def test_csv_import_ok(live_server, browser_in, recipients, users, driver_wait_time): assert len(recipients) == models.Recipient.objects.count() b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_csv_data(b, driver_wait_time, "csv,import," + DEFAULT_NUM) b = send_form(b, driver_wait_time) def _test(): assert len(recipients) + 1 == models.Recipient.objects.count() assert "/recipient/import/" not in b.current_url assert_with_timeout(_test, 10 * driver_wait_time)
def test_create_all_group_form(self, live_server, browser_in, recipients, groups, driver_wait_time): """Test form to create group with all contacts.""" b = load_page(browser_in, driver_wait_time, live_server + "/group/create_all/") name_box = b.find_element_by_name("group_name") name_box.clear() name_box.send_keys("Test All Group") sleep(driver_wait_time) send_form(b, driver_wait_time) assert "/group/all/" in b.current_url assert models.RecipientGroup.objects.get(name="Test All Group").all_recipients_not_in_group.count() == 0
def test_csv_import_bad(live_server, browser_in, recipients, users, driver_wait_time): assert len(recipients) == models.Recipient.objects.count() b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_csv_data(b, driver_wait_time, "csv,") b = send_form(b, driver_wait_time) def _test(): assert len(recipients) == models.Recipient.objects.count() assert "/recipient/import/" in b.current_url assert "Uh oh," in b.page_source assert_with_timeout(_test, 10 * driver_wait_time)
def test_create_existing_keyword(self, live_server, browser_in, keywords, users, driver_wait_time): b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_keyword(b, driver_wait_time, k="test") b = send_form(b, driver_wait_time) def _test(): assert "/keyword/new/" in b.current_url assert "keyword with this keyword already exists" in b.page_source.lower( ) assert len(keywords) == models.Keyword.objects.count() assert_with_timeout(_test, 10 * driver_wait_time)
def test_too_expensive(self, live_server, browser_in, users, driver_wait_time, groups): """Test good form submission but with a too expensive message.""" user_profile = users["staff"].profile user_profile.can_send_sms = True user_profile.message_cost_limit = 0.01 user_profile.save() b = load_page(browser_in, driver_wait_time, live_server + GROUP_URI) b = add_content_and_group(b, driver_wait_time) b = click_send(b, driver_wait_time) assert "cost no more than" in b.page_source assert GROUP_URI in b.current_url
def test_create_existing_group(self, live_server, browser_in, users, driver_wait_time): self.test_create_new_group(live_server, browser_in, users, driver_wait_time) b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_group_name(b, driver_wait_time) b = add_description(b, driver_wait_time) b = send_form(b, driver_wait_time) def _test(): assert 1 == models.RecipientGroup.objects.count() assert "/group/new/" in b.current_url assert "recipient group with this name of group already exists" in b.page_source.lower() assert "group members" not in b.page_source.lower() assert_with_timeout(_test, 10 * driver_wait_time)
def test_create_new_group(self, live_server, browser_in, users, driver_wait_time): """Test good form submission.""" assert 0 == models.RecipientGroup.objects.count() b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_group_name(b, driver_wait_time) b = add_description(b, driver_wait_time) b = send_form(b, driver_wait_time) def _test(): assert 1 == models.RecipientGroup.objects.count() assert "/group/all/" in b.current_url assert "test_new_group" in b.page_source assert_with_timeout(_test, 10 * driver_wait_time)
def test_scheduled_message(self, live_server, browser_in, users, driver_wait_time, recipients): """Test good form submission with a scheduled time.""" b = load_page(browser_in, driver_wait_time, live_server + ADHOC_URI) # add scheduled time b = add_scheduled_time(b, driver_wait_time) b = add_content_and_recipient(b, driver_wait_time, recipients["calvin"].pk) b = click_send(b, driver_wait_time) def _test(): assert "/scheduled/sms/" in b.current_url assert_with_timeout(_test, 10 * driver_wait_time)
def test_create_existing_archived_group(self, live_server, browser_in, users, driver_wait_time): self.test_create_new_group(live_server, browser_in, users, driver_wait_time) for g in models.RecipientGroup.objects.all(): g.is_archived = True g.save() b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_group_name(b, driver_wait_time) def _test(): assert "/group/new/" in b.current_url assert "There is already a Group that with that name in the archive".lower() in b.page_source.lower() assert "Or you can restore the group here:".lower() in b.page_source.lower() assert "group members" not in b.page_source.lower() assert_with_timeout(_test, 10 * driver_wait_time)
def test_edit_group(self, live_server, browser_in, users, driver_wait_time, groups): assert len(groups) == models.RecipientGroup.objects.count() b = load_page(browser_in, driver_wait_time, live_server + "/group/edit/{}/".format(groups["test_group"].pk)) b = add_group_name(b, driver_wait_time) b = add_description(b, driver_wait_time) b = send_form(b, driver_wait_time) def _test(): assert len(groups) == models.RecipientGroup.objects.count() assert "/group/all/" in b.current_url assert "test_new_group" in b.page_source assert groups["test_group"].description not in b.page_source assert "group members" not in b.page_source.lower() assert_with_timeout(_test, 10 * driver_wait_time)
def test_create_new_contact(self, live_server, browser_in, recipients, users, driver_wait_time): """Test good form submission.""" assert len(recipients) == models.Recipient.objects.count() b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_first_name(b, driver_wait_time) b = add_last_name(b, driver_wait_time) b = add_number(b, driver_wait_time) b = send_form(b, driver_wait_time) def _test(): assert len(recipients) + 1 == models.Recipient.objects.count() assert "/recipient/all/" in b.current_url assert_with_timeout(_test, 10 * driver_wait_time)
def test_edit_keyword(self, live_server, browser_in, keywords, users, driver_wait_time): assert len(keywords) == models.Keyword.objects.count() b = load_page(browser_in, driver_wait_time, live_server + "/keyword/edit/test/") b = add_desc(b, driver_wait_time) b = send_form(b, driver_wait_time) def _test(): assert len(keywords) == models.Keyword.objects.count() assert "/keyword/all/" in b.current_url assert "form" in b.page_source assert models.Keyword.objects.get(keyword="test").keyword == "test" assert_with_timeout(_test, 10 * driver_wait_time)
def test_create_existing_contact(self, live_server, browser_in, recipients, users, driver_wait_time): b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_first_name(b, driver_wait_time) b = add_last_name(b, driver_wait_time) b = add_number(b, driver_wait_time, num=str(recipients["calvin"].number)) b = send_form(b, driver_wait_time) def _test(): assert "/recipient/new/" in b.current_url assert "recipient with this number already exists" in b.page_source.lower( ) assert len(recipients) == models.Recipient.objects.count() assert_with_timeout(_test, 10 * driver_wait_time)
def test_create_existing_archived_keyword(self, live_server, browser_in, keywords, users, driver_wait_time): for k in models.Keyword.objects.all(): k.is_archived = True k.save() b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_keyword(b, driver_wait_time, k="test") def _test(): assert "/keyword/new/" in b.current_url assert "there is already a keyword that with that name in the archive".lower( ) in b.page_source.lower() assert "Or you can restore the keyword here:".lower( ) in b.page_source.lower() assert_with_timeout(_test, 10 * driver_wait_time)
def test_sms_too_long(self, live_server, browser_in, users, driver_wait_time, recipients): """Test form submission with a message that is too long.""" from site_config.models import SiteConfiguration s = SiteConfiguration.get_solo() s.sms_char_limit = 2 s.save() b = load_page(browser_in, driver_wait_time, live_server + ADHOC_URI) b = add_content_and_recipient(b, driver_wait_time, recipients["calvin"].pk) b = click_send(b, driver_wait_time) assert "You have exceeded" in b.page_source assert ADHOC_URI in b.current_url s.sms_char_limit = 200 s.save()
def test_prepopulated(self, live_server, browser_in, users, driver_wait_time, recipients, smsin): """Test the reply to button on incoming log.""" # load the incoming log b = load_page(browser_in, driver_wait_time, live_server + LOG_URI) # check reply buttons are present reply_buttons = b.find_elements_by_class_name("fa-reply") assert len(reply_buttons) == len(smsin) # test button works click_and_wait(reply_buttons[0], driver_wait_time) assert "/send/adhoc/" in browser_in.current_url assert "recipients=[" in browser_in.current_url # check message sent to correct recipient b = add_content(b, driver_wait_time) b = click_send(b, driver_wait_time) assert "Please check the logs for verification" in b.page_source assert "/outgoing/" in b.current_url last_out_sms = SmsOutbound.objects.all()[0] assert last_out_sms.recipient.pk == recipients["calvin"].pk
def test_create_existing_archived_contact(self, live_server, browser_in, recipients, users, driver_wait_time): self.test_create_new_contact(live_server, browser_in, recipients, users, driver_wait_time) for g in models.Recipient.objects.all(): g.is_archived = True g.save() b = load_page(browser_in, driver_wait_time, live_server + NEW_URI) b = add_first_name(b, driver_wait_time) b = add_last_name(b, driver_wait_time) b = add_number(b, driver_wait_time) def _test(): assert "/recipient/new/" in b.current_url assert "There is already a Contact that with that number in the archive".lower( ) in b.page_source.lower() assert "You can restore the contact here:".lower( ) in b.page_source.lower() assert_with_timeout(_test, 10 * driver_wait_time)
def test_edit_contact(self, live_server, browser_in, recipients, users, driver_wait_time): assert len(recipients) == models.Recipient.objects.count() b = load_page( browser_in, driver_wait_time, live_server + "/recipient/edit/{}/".format(recipients["calvin"].pk)) b = add_first_name(b, driver_wait_time) b = add_last_name(b, driver_wait_time) b = tick_never_contact(b, driver_wait_time) b = send_form(b, driver_wait_time) def _test(): assert len(recipients) == models.Recipient.objects.count() assert "/recipient/all/" in b.current_url assert "first" in b.page_source assert "last" in b.page_source r = models.Recipient.objects.get(pk=recipients["calvin"].pk) assert str(r.number) == str(recipients["calvin"].number) assert r.never_contact assert_with_timeout(_test, 10 * driver_wait_time)