def test_cache_results(self):
     with requests_mock.Mocker() as m:
         m.post(
             self.url,
             json={
                 "valid": True,
                 "is_demo": False,
                 "account_info": {"employer_id": 165, "unit_id": 429},
             },
         )
         validator = DefaultRegistrationValidator()
         validator.validate_code("foo", url=self.url, key=self.key)
         validator.validate_code("foo", url=self.url, key=self.key)
         self.assertEqual(1, m.call_count)
示例#2
0
    def test_valid_non_demo_code(self):
        with requests_mock.Mocker() as m:
            m.post(
                self.url,
                json={
                    "valid": "True",
                    "is_demo": "False",
                    "account_info": {
                        "employer_id": 165,
                        "employer_name": "Kai's Crab Shack",
                        "unit_id": 429,
                        "unit_name": "Kitchen",
                    },
                },
            )
            payload = DefaultRegistrationValidator().validate_code(
                "foo", url=self.url, key=self.key)

        self.assertTrue(payload.valid)
        self.assertFalse(payload.is_demo)
        self.assertEqual(
            {
                "employer_id": 165,
                "employer_name": "Kai's Crab Shack",
                "unit_id": 429,
                "unit_name": "Kitchen",
            },
            payload.account_info,
        )
    def test_invalid_code(self):
        with requests_mock.Mocker() as m:
            m.post(self.url, json={"valid": False})
            payload = DefaultRegistrationValidator().validate_code(
                "foo", url=self.url, key=self.key
            )

        self.assertFalse(payload.valid)
    def test_demo_code(self):
        with requests_mock.Mocker() as m:
            m.post(self.url, json={"valid": True, "is_demo": True})
            payload = DefaultRegistrationValidator().validate_code(
                "foo", url=self.url, key=self.key
            )

        self.assertTrue(payload.valid)
        self.assertTrue(payload.is_demo)
示例#5
0
    UserValidationFailed,
    CompletedPrompt,
    FailedPrompt,
    AdvancedToNextPrompt,
    DrillCompleted,
    OptedOut,
    NextDrillRequested,
    DialogEvent,
    DialogEventBatch,
)
from stopcovid.dialog.persistence import DialogRepository, DynamoDBDialogRepository
from stopcovid.dialog.registration import RegistrationValidator, DefaultRegistrationValidator
from stopcovid.dialog.models.state import DialogState
from stopcovid.drills.drills import get_drill

DEFAULT_REGISTRATION_VALIDATOR = DefaultRegistrationValidator()


class Command(ABC):
    def __init__(self, phone_number: str):
        self.phone_number = phone_number

    @abstractmethod
    def execute(self, dialog_state: DialogState) -> List[DialogEvent]:
        pass


def process_command(command: Command, seq: str, repo: DialogRepository = None):
    if repo is None:
        repo = DynamoDBDialogRepository()
    dialog_state = repo.fetch_dialog_state(command.phone_number)