def test_get_openapi_urls(): api = NinjaAPI(openapi_url=None) paths = get_openapi_urls(api) assert len(paths) == 0 api = NinjaAPI(docs_url=None) paths = get_openapi_urls(api) assert len(paths) == 1 api = NinjaAPI(openapi_url="/path", docs_url="/path") with pytest.raises( AssertionError, match="Please use different urls for openapi_url and docs_url"): get_openapi_urls(api)
def _get_urls(self): result = get_openapi_urls(self) for prefix, router in self._routers: for path in router.urls_paths(prefix): result.append(path) return result
def _get_urls(self) -> List[Union[URLResolver, URLPattern]]: result = get_openapi_urls(self) for prefix, router in self._routers: result.extend(router.urls_paths(prefix)) result.append(get_root_url(self)) return result
def _get_urls(self) -> List[URLPattern]: result = get_openapi_urls(self) for prefix, router in self._routers: for path in router.urls_paths(prefix): result.append(path) result.append(get_root_url(self)) return result
def test_docs_decorator(): api = NinjaAPI(docs_decorator=staff_member_required) paths = get_openapi_urls(api) assert len(paths) == 2 for ptrn in paths: request = Mock(user=Mock(is_staff=True)) result = ptrn.callback(request) assert result.status_code == 200 request = Mock(user=Mock(is_staff=False)) request.build_absolute_uri = lambda: "http://example.com" result = ptrn.callback(request) assert result.status_code == 302