Пример #1
0
 def test_it_returns_existing_lookup(self):
     lookup = PhoneNumberLookup(phone_number='5551234567', is_valid=True)
     lookup.save()
     with self.mock_twilio():
         assert PhoneNumberLookup.objects.get_or_lookup('5551234567') == lookup
         self.is_phone_number_valid.assert_not_called()
         self.get_carrier_info.assert_not_called()
Пример #2
0
    def test_it_ignores_users_with_invalid_numbers(self):
        user = OnboardingInfoFactory().user
        r = RemindBoops()
        assert r.get_queryset().count() == 1  # type: ignore

        pl = PhoneNumberLookup(phone_number=user.phone_number, is_valid=False)
        pl.save()
        assert r.get_queryset().count() == 0  # type: ignore
Пример #3
0
 def test_it_modifies_existing_records(self, db):
     orig = PhoneNumberLookup(phone_number="5551234567",
                              is_valid=True,
                              carrier={"hi": 1})
     orig.save()
     lookup = PhoneNumberLookup.objects.invalidate("5551234567")
     assert lookup.pk == orig.pk
     assert lookup.is_valid is False
     assert lookup.carrier is None
Пример #4
0
def test_send_sms_still_works_if_lookup_says_number_is_valid(
        db, settings, smsoutbox):
    apply_twilio_settings(settings)

    pn = PhoneNumberLookup(phone_number="5551234567", is_valid=True)
    pn.carrier = {"blah": 1}
    pn.save()
    send_sms("5551234567", "boop")
    assert len(smsoutbox) == 1
Пример #5
0
def test_send_sms_ignores_invalid_numbers_we_thought_were_valid(
        db, settings, requests_mock):
    apply_twilio_settings(settings)
    mock_invalid_number(settings, requests_mock)
    PhoneNumberLookup(phone_number="5551234567", is_valid=True,
                      carrier={}).save()
    assert send_sms("5551234567", "boop",
                    ignore_invalid_phone_number=True) == INVALID_SMS_RESULT
    lookup = PhoneNumberLookup.objects.get(phone_number="5551234567")
    assert lookup.is_valid is False
    def test_it_works(self, settings):
        UserFactory(phone_number='5551234567', username='******')
        UserFactory(phone_number='5551230000', username='******')
        lookup = PhoneNumberLookup(phone_number='5551234567',
                                   is_valid=True,
                                   carrier={'type': 'mobile'})
        lookup.save()

        settings.TWILIO_ACCOUNT_SID = 'blarg'

        with self.mock_twilio(is_valid=False):
            assert self.run_command() == [
                'Looking up phone number for blarg.',
                'Done syncing phone number lookups.'
            ]
            self.is_phone_number_valid.assert_called_once_with('5551230000')
            self.is_phone_number_valid.reset_mock()
            assert self.run_command() == ['Done syncing phone number lookups.']
            self.is_phone_number_valid.assert_not_called()

        assert PhoneNumberLookup.objects.get(
            phone_number='5551230000').is_valid is False
Пример #7
0
    def test_it_works(self, settings):
        UserFactory(phone_number="5551234567", username="******")
        UserFactory(phone_number="5551230000", username="******")
        lookup = PhoneNumberLookup(phone_number="5551234567",
                                   is_valid=True,
                                   carrier={"type": "mobile"})
        lookup.save()

        settings.TWILIO_ACCOUNT_SID = "blarg"

        with self.mock_twilio(is_valid=False):
            assert self.run_command() == [
                "Looking up phone number for blarg.",
                "Done syncing phone number lookups.",
            ]
            self.is_phone_number_valid.assert_called_once_with("5551230000")
            self.is_phone_number_valid.reset_mock()
            assert self.run_command() == ["Done syncing phone number lookups."]
            self.is_phone_number_valid.assert_not_called()

        assert PhoneNumberLookup.objects.get(
            phone_number="5551230000").is_valid is False
Пример #8
0
 def test_users_are_excluded_when_lookup_indicates_invalid_phone_number(self):
     PhoneNumberLookup(phone_number=self.phone_number, is_valid=False).save()
     assert self.get_users_with_valid_numbers().count() == 0
Пример #9
0
from unittest.mock import patch
from contextlib import contextmanager
import pytest

from users.models import JustfixUser
from users.tests.factories import UserFactory
from texting.models import (
    PhoneNumberLookup,
    get_lookup_description_for_phone_number,
    exclude_users_with_invalid_phone_numbers,
)


@pytest.mark.parametrize('obj,expected', [
    [PhoneNumberLookup(), 'unknown'],
    [PhoneNumberLookup(is_valid=True), 'valid'],
    [PhoneNumberLookup(is_valid=False), 'invalid'],
])
def test_pnl_validity_str(obj, expected):
    assert obj.validity_str == expected


@pytest.mark.parametrize('obj,expected', [
    [PhoneNumberLookup(), ''],
    [PhoneNumberLookup(carrier={'type': 'mobile'}), 'mobile'],
])
def test_pnl_carrier_type(obj, expected):
    assert obj.carrier_type == expected


@pytest.mark.parametrize('obj,expected', [
Пример #10
0
from users.models import JustfixUser
from users.tests.factories import UserFactory
from texting.models import (
    PhoneNumberLookup,
    Reminder,
    REMINDERS,
    get_lookup_description_for_phone_number,
    exclude_users_with_invalid_phone_numbers,
)
from texting.twilio import SendSmsResult, TWILIO_BLOCKED_NUMBER_ERR, TWILIO_OTHER_ERR


@pytest.mark.parametrize(
    "obj,expected",
    [
        [PhoneNumberLookup(), "unknown"],
        [PhoneNumberLookup(is_valid=True), "valid"],
        [PhoneNumberLookup(is_valid=False), "invalid"],
    ],
)
def test_pnl_validity_str(obj, expected):
    assert obj.validity_str == expected


@pytest.mark.parametrize(
    "obj,expected",
    [
        [PhoneNumberLookup(), ""],
        [PhoneNumberLookup(carrier={"type": "mobile"}), "mobile"],
    ],
)
Пример #11
0
def test_send_sms_does_not_send_to_invalid_numbers(db, settings,
                                                   requests_mock):
    apply_twilio_settings(settings)
    PhoneNumberLookup(phone_number="5551234567", is_valid=False).save()
    assert send_sms("5551234567", "boop",
                    ignore_invalid_phone_number=True) == INVALID_SMS_RESULT