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)
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)
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)