Skip to content

Commit b47d03a

Browse files
Update registration to check new live field
1 parent 924d2dc commit b47d03a

File tree

2 files changed

+73
-11
lines changed

2 files changed

+73
-11
lines changed

backend/compact-connect/lambdas/python/provider-data-v1/handlers/registration.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,11 +255,34 @@ def register_provider(event: dict, context: LambdaContext): # noqa: ARG001 unus
255255
)
256256
raise CCInvalidRequestException('Registration is not currently available for the specified state.') from e
257257

258-
if not jurisdiction_config.licenseeRegistrationEnabled:
258+
# Check if the jurisdiction is configured and live in the compact's configuredStates
259+
configured_state = next(
260+
(
261+
configured_state
262+
for configured_state in compact_config.configuredStates
263+
if configured_state['postalAbbreviation'].lower() == body['jurisdiction'].lower()
264+
),
265+
None,
266+
)
267+
268+
if not configured_state:
269+
logger.info(
270+
'Jurisdiction not found in compact configured states',
271+
compact=body['compact'],
272+
jurisdiction=body['jurisdiction'],
273+
environment=config.environment_name,
274+
)
275+
metrics.add_metric(name=REGISTRATION_ATTEMPT_METRIC_NAME, unit=MetricUnit.NoUnit, value=0)
276+
raise CCInvalidRequestException(
277+
f'Registration is not currently available for {jurisdiction_config.jurisdictionName}.'
278+
)
279+
280+
if not configured_state['isLive']:
259281
logger.info(
260-
'Registration is not enabled for this jurisdiction',
282+
'Jurisdiction is not live for registration',
261283
compact=body['compact'],
262284
jurisdiction=body['jurisdiction'],
285+
is_live=configured_state['isLive'],
263286
environment=config.environment_name,
264287
)
265288
metrics.add_metric(name=REGISTRATION_ATTEMPT_METRIC_NAME, unit=MetricUnit.NoUnit, value=0)

backend/compact-connect/lambdas/python/provider-data-v1/tests/function/test_handlers/test_registration.py

Lines changed: 48 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def generate_default_compact_config_overrides():
3535
'compactAbbr': TEST_COMPACT_ABBR,
3636
'compactName': TEST_COMPACT_NAME,
3737
'licenseeRegistrationEnabled': True,
38+
'configuredStates': [{'postalAbbreviation': MOCK_JURISDICTION_POSTAL_ABBR, 'isLive': True}],
3839
}
3940

4041

@@ -168,32 +169,70 @@ def test_registration_returns_400_if_compact_is_not_enabled_for_registration(sel
168169
)
169170

170171
@patch('handlers.registration.verify_recaptcha')
171-
def test_registration_returns_400_if_jurisdiction_is_not_enabled_for_registration(self, mock_verify_recaptcha):
172-
jurisdiction_config_overrides = generate_default_jurisdiction_config_overrides()
173-
# in this case, no environments are enabled for registration
174-
jurisdiction_config_overrides.update({'licenseeRegistrationEnabled': False})
175-
self._load_jurisdiction_configuration(overrides=jurisdiction_config_overrides)
172+
def test_registration_returns_400_if_jurisdiction_is_not_configured_for_registration(self, mock_verify_recaptcha):
176173
mock_verify_recaptcha.return_value = True
177174
from handlers.registration import register_provider
178175

176+
response = register_provider(self._get_test_event(body_overrides={'jurisdiction': 'oh'}), self.mock_context)
177+
self.assertEqual(400, response['statusCode'])
178+
self.assertEqual(
179+
{'message': 'Registration is not currently available for the specified state.'},
180+
json.loads(response['body']),
181+
)
182+
183+
@patch('handlers.registration.verify_recaptcha')
184+
def test_registration_returns_400_if_jurisdiction_not_in_configured_states(self, mock_verify_recaptcha):
185+
"""Test that registration is rejected if jurisdiction is not in compact's configuredStates."""
186+
mock_verify_recaptcha.return_value = True
187+
188+
# Update compact configuration to have empty configuredStates
189+
compact_config_overrides = generate_default_compact_config_overrides()
190+
compact_config_overrides.update({'configuredStates': []})
191+
self._load_compact_configuration(overrides=compact_config_overrides)
192+
193+
from handlers.registration import register_provider
194+
179195
response = register_provider(self._get_test_event(), self.mock_context)
180196
self.assertEqual(400, response['statusCode'])
181197
self.assertEqual(
182-
{'message': 'Registration is not currently available for Kentucky.'}, json.loads(response['body'])
198+
{'message': 'Registration is not currently available for Kentucky.'},
199+
json.loads(response['body']),
183200
)
184201

185202
@patch('handlers.registration.verify_recaptcha')
186-
def test_registration_returns_400_if_jurisdiction_is_not_configured_for_registration(self, mock_verify_recaptcha):
203+
def test_registration_returns_400_if_jurisdiction_not_live_in_configured_states(self, mock_verify_recaptcha):
204+
"""Test that registration is rejected if jurisdiction is not live in compact's configuredStates."""
187205
mock_verify_recaptcha.return_value = True
206+
207+
# Update compact configuration to have jurisdiction but not live
208+
compact_config_overrides = generate_default_compact_config_overrides()
209+
compact_config_overrides.update(
210+
{'configuredStates': [{'postalAbbreviation': MOCK_JURISDICTION_POSTAL_ABBR, 'isLive': False}]}
211+
)
212+
self._load_compact_configuration(overrides=compact_config_overrides)
213+
188214
from handlers.registration import register_provider
189215

190-
response = register_provider(self._get_test_event(body_overrides={'jurisdiction': 'oh'}), self.mock_context)
216+
response = register_provider(self._get_test_event(), self.mock_context)
191217
self.assertEqual(400, response['statusCode'])
192218
self.assertEqual(
193-
{'message': 'Registration is not currently available for the specified state.'},
219+
{'message': 'Registration is not currently available for Kentucky.'},
194220
json.loads(response['body']),
195221
)
196222

223+
@patch('handlers.registration.verify_recaptcha')
224+
def test_registration_succeeds_if_jurisdiction_is_live_in_configured_states(self, mock_verify_recaptcha):
225+
"""Test that registration succeeds if jurisdiction is live in compact's configuredStates."""
226+
mock_verify_recaptcha.return_value = True
227+
self._add_mock_provider_records()
228+
229+
# Default setup already has jurisdiction as live in configuredStates
230+
from handlers.registration import register_provider
231+
232+
response = register_provider(self._get_test_event(), self.mock_context)
233+
self.assertEqual(200, response['statusCode'])
234+
self.assertEqual({'message': 'request processed'}, json.loads(response['body']))
235+
197236
@patch('handlers.registration.verify_recaptcha')
198237
def test_registration_returns_403_if_recaptcha_fails(self, mock_verify_recaptcha):
199238
mock_verify_recaptcha.return_value = False

0 commit comments

Comments
 (0)