Coverage for benefits / urls.py: 74%

30 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-22 19:08 +0000

1""" 

2benefits URL Configuration 

3 

4The `urlpatterns` list routes URLs to views. For more information please see: 

5 https://docs.djangoproject.com/en/5.0/topics/http/urls/ 

6""" 

7 

8import logging 

9import re 

10 

11from django.conf import settings 

12from django.contrib import admin 

13from django.http import HttpResponse 

14from django.urls import include, path, re_path 

15from django.views.static import serve 

16 

17from .core.admin.views import BenefitsPasswordResetView, BenefitsPasswordResetDoneView, BenefitsPasswordResetConfirmView 

18 

19logger = logging.getLogger(__name__) 

20 

21handler400 = "benefits.core.views.bad_request" 

22handler403 = "benefits.core.views.bad_request" 

23handler404 = "benefits.core.views.page_not_found" 

24handler500 = "benefits.core.views.server_error" 

25 

26urlpatterns = [ 

27 path("", include("benefits.core.urls")), 

28 path("eligibility/", include("benefits.eligibility.urls")), 

29 path("enrollment/", include("benefits.enrollment.urls")), 

30 path("i18n/", include("django.conf.urls.i18n")), 

31 path("oauth/", include("benefits.oauth.urls")), 

32 path("in_person/", include("benefits.in_person.urls")), 

33 path("littlepay/", include("benefits.enrollment_littlepay.urls")), 

34 path("switchio/", include("benefits.enrollment_switchio.urls")), 

35] 

36 

37if settings.RUNTIME_ENVIRONMENT() == settings.RUNTIME_ENVS.LOCAL: 37 ↛ 48line 37 didn't jump to line 48 because the condition on line 37 was always true

38 # serve user-uploaded media files 

39 # 

40 # the helper function `django.conf.urls.static.static` mentioned in 

41 # https://docs.djangoproject.com/en/5.1/howto/static-files/#serving-files-uploaded-by-a-user-during-development 

42 # only works when settings.DEBUG = True, so here we add the URL pattern ourselves so it works regardless of DEBUG. 

43 prefix = settings.MEDIA_URL 

44 urlpatterns.extend( 

45 [re_path(r"^%s(?P<path>.*)$" % re.escape(prefix.lstrip("/")), serve, {"document_root": settings.MEDIA_ROOT})] 

46 ) 

47 

48if settings.DEBUG: 48 ↛ 52line 48 didn't jump to line 52 because the condition on line 48 was never true

49 # based on 

50 # https://docs.sentry.io/platforms/python/guides/django/#verify 

51 

52 def trigger_error(request): 

53 raise RuntimeError("Test error") 

54 

55 urlpatterns.append(path("testerror/", trigger_error)) 

56 

57 # simple route to read a pre-defined "secret" 

58 # this "secret" does not contain sensitive information 

59 # and is only configured in the dev environment for testing/debugging 

60 

61 def test_secret(request): 

62 from benefits.secrets import get_secret_by_name 

63 

64 return HttpResponse(get_secret_by_name("testsecret")) 

65 

66 urlpatterns.append(path("testsecret/", test_secret)) 

67 

68logger.debug("Register admin urls") 

69password_reset_patterns = [ 

70 path( 

71 "admin/password_reset/", 

72 BenefitsPasswordResetView.as_view(extra_context={"site_header": admin.site.site_header}), 

73 name="admin_password_reset", 

74 ), 

75 path( 

76 "admin/password_reset/done/", 

77 BenefitsPasswordResetDoneView.as_view(extra_context={"site_header": admin.site.site_header}), 

78 name="password_reset_done", 

79 ), 

80 path( 

81 "admin/password_reset/<uidb64>/<token>/", 

82 BenefitsPasswordResetConfirmView.as_view(extra_context={"site_header": admin.site.site_header}), 

83 name="password_reset_confirm", 

84 ), 

85] 

86urlpatterns.extend(password_reset_patterns) 

87urlpatterns.append(path("admin/", admin.site.urls)) 

88urlpatterns.append(path("google_sso/", include("django_google_sso.urls", namespace="django_google_sso")))