Esempio n. 1
0
def test_can_use_django_settings(mock_get_resolver, mock_get_json_urlpatterns):
    mock_resolver = mock.Mock()
    mock_get_resolver.return_value = mock_resolver

    export_urlconf.as_json()

    mock_get_resolver.assert_called_once_with("path.to.urlconf")
    mock_get_json_urlpatterns.assert_called_once_with(mock_resolver,
                                                      ["whitelisted-url-name"],
                                                      ["blacklisted-url-name"],
                                                      True)
Esempio n. 2
0
def test_export_include(mock_urlconf_module, mock_included_module):
    # Setup urls to include
    mock_included_module.urlpatterns = [
        url(r"^red/$", View.as_view(), name="red"),
        url(r"^blue/$", View.as_view(), name="blue"),
    ]

    mock_urlconf_module.urlpatterns = [
        url(r"^colors/", include("mock_included_module"))
    ]
    assert export_urlconf.as_json("mock_urlconf_module") == [{
        "regex":
        "^colors/",
        "namespace":
        None,
        "app_name":
        None,
        "includes": [{
            "regex": "^red/$",
            "name": "red"
        }, {
            "regex": "^blue/$",
            "name": "blue"
        }],
    }]
Esempio n. 3
0
def test_defaults_to_root_urlconf(mock_get_resolver,
                                  mock_get_json_urlpatterns):
    # simulate absence of these settings
    del settings.URLCONF_EXPORT_ROOT_URLCONF
    del settings.URLCONF_EXPORT_WHITELIST
    del settings.URLCONF_EXPORT_BLACKLIST
    del settings.URLCONF_EXPORT_LANGUAGE_WITHOUT_COUNTRY

    mock_resolver = mock.Mock()
    mock_get_resolver.return_value = mock_resolver

    export_urlconf.as_json()

    mock_get_resolver.assert_called_once_with(settings.ROOT_URLCONF)
    mock_get_json_urlpatterns.assert_called_once_with(mock_resolver, None,
                                                      None, False)
Esempio n. 4
0
def test_export_route(mock_urlconf_module):
    mock_urlconf_module.urlpatterns = [
        path("login/", View.as_view(), name="login")
    ]
    assert export_urlconf.as_json("mock_urlconf_module") == [{
        "route": "login/",
        "name": "login"
    }]
Esempio n. 5
0
def test_export_multi_language_without_country(mock_urlconf_module):
    mock_urlconf_module.urlpatterns = [
        url(lazy(_get_color_url_pattern, str)(), View.as_view(), name="color")
    ]
    assert export_urlconf.as_json("mock_urlconf_module",
                                  language_without_country=True) == [{
                                      "regex": {
                                          "en": "^color/$",
                                          "fr": "^couleur/$"
                                      },
                                      "name":
                                      "color"
                                  }]
Esempio n. 6
0
def test_export_locale_prefix_pattern(mock_urlconf_module):
    mock_urlconf_module.urlpatterns = i18n_patterns(
        url(r"^$", View.as_view(), name="index"))
    assert export_urlconf.as_json("mock_urlconf_module") == [{
        "isLocalePrefix":
        True,
        "classPath":
        "django.urls.resolvers.LocalePrefixPattern",
        "includes": [{
            "regex": "^$",
            "name": "index"
        }],
    }]
Esempio n. 7
0
def test_export_custom_locale_prefix_pattern_class(mock_urlconf_module):
    mock_urlconf_module.urlpatterns = [
        URLResolver(CustomLocalePrefixPattern(),
                    [url(r"^$", View.as_view(), name="index")])
    ]
    assert export_urlconf.as_json("mock_urlconf_module") == [{
        "isLocalePrefix":
        True,
        "classPath":
        "tests.django_urlconf_export.test_export_urlconf.CustomLocalePrefixPattern",
        "includes": [{
            "regex": "^$",
            "name": "index"
        }],
    }]
Esempio n. 8
0
def test_export_regex(mock_urlconf_module):
    mock_urlconf_module.urlpatterns = [
        # 'url' is just an alias for 're_path'
        url(r"^login/$", View.as_view(), name="login"),
        re_path(r"^logout/$", View.as_view(), name="logout"),
    ]
    assert export_urlconf.as_json("mock_urlconf_module") == [
        {
            "regex": "^login/$",
            "name": "login"
        },
        {
            "regex": "^logout/$",
            "name": "logout"
        },
    ]
Esempio n. 9
0
def test_export_include_with_namespace(
    mock_urlconf_module,
    mock_included_module,
    app_name,
    namespace,
    expected_app_name,
    expected_namespace,
):
    # Maybe set app_name on included urls module
    if app_name:
        mock_included_module.app_name = app_name

    # Setup urls to include
    mock_included_module.urlpatterns = [
        url(r"^red/$", View.as_view(), name="red"),
        url(r"^blue/$", View.as_view(), name="blue"),
    ]

    # Maybe set a namespace for the included urls
    if namespace:
        mock_urlconf_module.urlpatterns = [
            url(r"^colors/",
                include("mock_included_module", namespace=namespace))
        ]
    else:
        mock_urlconf_module.urlpatterns = [
            url(r"^colors/", include("mock_included_module"))
        ]

    assert export_urlconf.as_json("mock_urlconf_module") == [{
        "regex":
        "^colors/",
        "namespace":
        expected_namespace,
        "app_name":
        expected_app_name,
        "includes": [{
            "regex": "^red/$",
            "name": "red"
        }, {
            "regex": "^blue/$",
            "name": "blue"
        }],
    }]
Esempio n. 10
0
 def get(self, request):
     exported_urls = export_urlconf.as_json(
         self.urlconf, self.whitelist, self.blacklist, self.language_without_country
     )
     return JsonResponse(exported_urls, safe=False)