Example #1
0
    def test_flatten_url_tree_url_import_with_routers(self):
        from django.contrib.auth.models import User

        class MockApiViewSet(ModelViewSet):
            serializer_class = CommentSerializer
            model = User

        class AnotherMockApiViewSet(ModelViewSet):
            serializer_class = CommentSerializer
            model = User

        router = DefaultRouter()
        router.register(r'other_views', MockApiViewSet)
        router.register(r'more_views', MockApiViewSet)

        urls_app = patterns('',
            url(r'^', include(router.urls))
        )
        urls = patterns('',
            url(r'api/', include(urls_app)),
            url(r'test/', include(urls_app))
        )
        urlparser = UrlParser()
        apis = urlparser.get_apis(urls)

        self.assertEqual(sum(api['path'].find('api') != -1 for api in apis), 4)
        self.assertEqual(sum(api['path'].find('test') != -1 for api in apis), 4)
Example #2
0
 def get_apis_for_resource(self, filter_path):
     urlparser = UrlParser()
     urlconf = getattr(self.request, "urlconf", None)
     apis = urlparser.get_apis(urlconf=urlconf, filter_path=filter_path)
     authorized_apis = filter(lambda a: self.handle_resource_access(self.request, a['pattern']), apis)
     authorized_apis_list = list(authorized_apis)
     return authorized_apis_list
Example #3
0
    def test_assemble_data_with_non_api_callback(self):
        bad_pattern = patterns('', url(r'^some_view/', NonApiView.as_view()))

        urlparser = UrlParser()
        data = urlparser.__assemble_endpoint_data__(bad_pattern)

        self.assertIsNone(data)
Example #4
0
    def get_resources(self):
        urlparser = UrlParser()
        apis = urlparser.get_apis(
            exclude_namespaces=SWAGGER_SETTINGS.get('exclude_namespaces'))
        resources = urlparser.get_top_level_apis(apis)

        return resources
Example #5
0
    def test_assemble_data_with_non_api_callback(self):
        bad_pattern = patterns('', url(r'^some_view/', NonApiView.as_view()))

        urlparser = UrlParser()
        data = urlparser.__assemble_endpoint_data__(bad_pattern)

        self.assertIsNone(data)
Example #6
0
 def get_resources(self):
     urlparser = UrlParser()
     urlconf = getattr(self.request, "urlconf", None)
     apis = urlparser.get_apis(
         urlconf=urlconf,
         exclude_namespaces=SWAGGER_SETTINGS.get('exclude_namespaces'))
     resources = urlparser.get_top_level_apis(apis)
     return resources
Example #7
0
    def test_get_api_callback_not_rest_view(self):
        urlparser = UrlParser()
        non_api = patterns('',
            url(r'something', NonApiView.as_view())
        )
        callback = urlparser.__get_pattern_api_callback__(non_api)

        self.assertIsNone(callback)
 def get_resources(self):
     urlparser = UrlParser()
     urlconf = getattr(self.request, "urlconf", None)
     apis = urlparser.get_apis(
         urlconf=urlconf,
         exclude_namespaces=rfs.SWAGGER_SETTINGS.get('exclude_namespaces'))
     resources = urlparser.get_top_level_apis(apis)
     return resources
    def test_get_api_callback_not_rest_view(self):
        urlparser = UrlParser()
        non_api = patterns('',
            url(r'something', NonApiView.as_view())
        )
        callback = urlparser.__get_pattern_api_callback__(non_api)

        self.assertIsNone(callback)
Example #10
0
    def test_flatten_url_tree_excluded_namesapce(self):
        urls = patterns('',
            url(r'api/base/path/', include(self.url_patterns, namespace='exclude'))
        )
        urlparser = UrlParser()
        apis = urlparser.__flatten_patterns_tree__(patterns=urls, exclude_namespaces='exclude')

        self.assertEqual([], apis)
Example #11
0
    def test_flatten_url_tree_url_import(self):
        urls = patterns('',
            url(r'api/base/path/', include(self.url_patterns))
        )
        urlparser = UrlParser()
        apis = urlparser.get_apis(urls)

        self.assertEqual(len(self.url_patterns), len(apis))
Example #12
0
    def test_flatten_url_tree_url_import(self):
        urls = patterns('',
            url(r'api/base/path/', include(self.url_patterns))
        )
        urlparser = UrlParser()
        apis = urlparser.get_apis(urls)

        self.assertEqual(len(self.url_patterns), len(apis))
Example #13
0
    def get_resources(self):
        api_prefixes = SWAGGER_SETTINGS.get('api_prefixes')
        if api_prefixes:
            return [endpoint.strip("/") for endpoint in api_prefixes]

        urlparser = UrlParser()
        apis = urlparser.get_apis(exclude_namespaces=SWAGGER_SETTINGS.get('exclude_namespaces'))
        return urlparser.get_top_level_apis(apis)
Example #14
0
    def test_flatten_url_tree_excluded_namesapce(self):
        urls = patterns('',
            url(r'api/base/path/', include(self.url_patterns, namespace='exclude'))
        )
        urlparser = UrlParser()
        apis = urlparser.__flatten_patterns_tree__(patterns=urls, exclude_namespaces='exclude')

        self.assertEqual([], apis)
Example #15
0
 def get_resources(self):
     urlparser = UrlParser()
     urlconf = getattr(self.request, "urlconf", None)
     exclude_namespaces = rfs.SWAGGER_SETTINGS.get('exclude_namespaces')
     apis = urlparser.get_apis(urlconf=urlconf, exclude_namespaces=exclude_namespaces)
     authorized_apis = filter(lambda a: self.handle_resource_access(self.request, a['pattern']), apis)
     authorized_apis_list = list(authorized_apis)
     resources = urlparser.get_top_level_apis(authorized_apis_list)
     return resources
Example #16
0
    def test_get_apis(self):
        urlparser = UrlParser()
        urls = import_module(settings.ROOT_URLCONF)
        # Overwrite settings with test patterns
        urls.urlpatterns = self.url_patterns
        apis = urlparser.get_apis()

        for api in apis:
            self.assertIn(api['pattern'], self.url_patterns)
Example #17
0
    def test_get_apis(self):
        urlparser = UrlParser()
        urls = import_module(settings.ROOT_URLCONF)
        # Overwrite settings with test patterns
        urls.urlpatterns = self.url_patterns
        apis = urlparser.get_apis()

        for api in apis:
            self.assertIn(api['pattern'], self.url_patterns)
Example #18
0
    def test_assemble_endpoint_data(self):
        """
        Tests that the endpoint data is correctly packaged
        """
        urlparser = UrlParser()
        pattern = self.url_patterns[0]

        data = urlparser.__assemble_endpoint_data__(pattern)

        self.assertEqual(data['path'], '/a-view/')
        self.assertEqual(data['callback'], MockApiView)
        self.assertEqual(data['pattern'], pattern)
Example #19
0
    def test_get_serializer_set(self):
        class SerializedAPI(ListCreateAPIView):
            serializer_class = CommentSerializer

        urlparser = UrlParser()
        url_patterns = patterns('', url(r'my-api/', SerializedAPI.as_view()))
        apis = urlparser.get_apis(url_patterns)

        docgen = DocumentationGenerator()
        serializers = docgen.__get_serializer_set__(apis)

        self.assertIn(CommentSerializer, serializers)
Example #20
0
    def test_get_serializer_set(self):
        class SerializedAPI(ListCreateAPIView):
            serializer_class = CommentSerializer

        urlparser = UrlParser()
        url_patterns = patterns('', url(r'my-api/', SerializedAPI.as_view()))
        apis = urlparser.get_apis(url_patterns)

        docgen = DocumentationGenerator()
        serializers = docgen.__get_serializer_set__(apis)

        self.assertIn(CommentSerializer, serializers)
Example #21
0
    def test_assemble_endpoint_data(self):
        """
        Tests that the endpoint data is correctly packaged
        """
        urlparser = UrlParser()
        pattern = self.url_patterns[0]

        data = urlparser.__assemble_endpoint_data__(pattern)

        self.assertEqual(data['path'], '/a-view/')
        self.assertEqual(data['callback'], MockApiView)
        self.assertEqual(data['pattern'], pattern)
Example #22
0
    def get_api_for_resource(self, filter_path, version=None):
        root_router = get_router(version)
        url_parser = UrlParser()
        fp = filter_path.split("/")
        route_name = fp[-1]
        nests = fp[:-1]
        router = root_router
        try:
            for nest in nests:
                router = next(cr for cr in router.children_routers if cr.parent_prefix == nest)
            route = next(r for r in router.registry if r[0] == route_name)
        except StopIteration:
            raise Http404

        return url_parser.get_apis(patterns=patterns("", *router.get_partial_urls([route])))
Example #23
0
    def test_exclude_router_api_root(self):
        from django.contrib.auth.models import User

        class MyViewSet(ModelViewSet):
            serializer_class = CommentSerializer
            model = User

        router = DefaultRouter()
        router.register('test', MyViewSet)

        urls_created = len(router.urls)

        parser = UrlParser()
        apis = parser.get_apis(router.urls)

        self.assertEqual(4, urls_created - len(apis))
Example #24
0
    def test_exclude_router_api_root(self):
        from django.contrib.auth.models import User

        class MyViewSet(ModelViewSet):
            serializer_class = CommentSerializer
            model = User

        router = DefaultRouter()
        router.register('test', MyViewSet)

        urls_created = len(router.urls)

        parser = UrlParser()
        apis = parser.get_apis(router.urls)

        self.assertEqual(4, urls_created - len(apis))
Example #25
0
    def get_resources(self):
        urlparser = UrlParser()
        apis = urlparser.get_apis(exclude_namespaces=SWAGGER_SETTINGS.get('exclude_namespaces'))
        # Swagger urlparser has bug that causes exclude_namespaces to not work in some cases
        # In our case we dont want to include all urls from all modules to same documentation
        # so instead we check that the apis url (current url) can be found from the endpoints url.
        # If not then it belogn to another module and we dont include it to documentation.
        filtered_apis = []
        p = self.request_path.replace('api-docs/', '')
        for endpoint in apis:
            try:
                str(endpoint['path']).index(p)
                filtered_apis.append(endpoint)
            except ValueError:
                pass

        return urlparser.get_top_level_apis(filtered_apis)
Example #26
0
    def test_flatten_url_tree_url_import_with_routers(self):
        from django.contrib.auth.models import User

        class MockApiViewSet(ModelViewSet):
            serializer_class = CommentSerializer
            model = User

        class AnotherMockApiViewSet(ModelViewSet):
            serializer_class = CommentSerializer
            model = User

        router = DefaultRouter()
        router.register(r'other_views', MockApiViewSet)
        router.register(r'more_views', MockApiViewSet)

        urls_app = patterns('', url(r'^', include(router.urls)))
        urls = patterns('', url(r'api/', include(urls_app)),
                        url(r'test/', include(urls_app)))
        urlparser = UrlParser()
        apis = urlparser.get_apis(urls)

        self.assertEqual(sum(api['path'].find('api') != -1 for api in apis), 4)
        self.assertEqual(sum(api['path'].find('test') != -1 for api in apis),
                         4)
Example #27
0
    def test_get_top_level_api(self):
        urlparser = UrlParser()
        apis = urlparser.get_top_level_apis(urlparser.get_apis(self.url_patterns))

        self.assertEqual(4, len(apis))
Example #28
0
 def get_paths(self):
     urlparser = UrlParser(self.config, self.request)
     return urlparser.get_apis()
Example #29
0
    def test_flatten_url_tree_with_filter(self):
        urlparser = UrlParser()
        apis = urlparser.get_apis(self.url_patterns, filter_path="a-view")

        self.assertEqual(1, len(apis))
Example #30
0
 def get_api_for_resource(self, filter_path):
     urlparser = UrlParser()
     return urlparser.get_apis(filter_path=filter_path, api_prefixes=SWAGGER_SETTINGS.get('api_prefixes'))
Example #31
0
    def test_flatten_url_tree(self):
        urlparser = UrlParser()
        apis = urlparser.get_apis(self.url_patterns)

        self.assertEqual(len(self.url_patterns), len(apis))
 def get_resources(self):
     urlparser = UrlParser()
     apis = urlparser.get_apis(exclude_namespaces=SWAGGER_SETTINGS.get('exclude_namespaces'))
     return urlparser.get_top_level_apis(apis)
Example #33
0
    def test_get_top_level_api(self):
        urlparser = UrlParser()
        apis = urlparser.get_top_level_apis(
            urlparser.get_apis(self.url_patterns))

        self.assertEqual(4, len(apis))
Example #34
0
 def get_api_for_resource(self, filter_path):
     urlparser = UrlParser()
     return urlparser.get_apis(filter_path=filter_path,
             exclude_namespaces=SWAGGER_SETTINGS.get('exclude_namespaces'))
Example #35
0
 def get_api_for_resource(self, filter_path):
     urlparser = UrlParser()
     urlconf = getattr(self.request, "urlconf", None)
     return urlparser.get_apis(urlconf=urlconf, filter_path=filter_path)
Example #36
0
 def get_api_for_resource(self, filter_path):
     urlparser = UrlParser()
     return urlparser.get_apis(filter_path=filter_path)
Example #37
0
    def test_get_api_callback(self):
        urlparser = UrlParser()
        callback = urlparser.__get_pattern_api_callback__(self.url_patterns[0])

        self.assertTrue(issubclass(callback, MockApiView))
Example #38
0
    def test_get_api_callback(self):
        urlparser = UrlParser()
        callback = urlparser.__get_pattern_api_callback__(self.url_patterns[0])

        self.assertTrue(issubclass(callback, MockApiView))
 def get_api_for_resource(self, filter_path):
     urlparser = UrlParser()
     return urlparser.get_apis(filter_path=filter_path)
Example #40
0
    def test_flatten_url_tree(self):
        urlparser = UrlParser()
        apis = urlparser.get_apis(self.url_patterns)

        self.assertEqual(len(self.url_patterns), len(apis))
Example #41
0
    def test_flatten_url_tree_with_filter(self):
        urlparser = UrlParser()
        apis = urlparser.get_apis(self.url_patterns, filter_path="a-view")

        self.assertEqual(1, len(apis))
 def get_api_for_resource(self, filter_path):
     urlparser = UrlParser()
     return urlparser.get_apis(
         filter_path=filter_path,
         exclude_namespaces=SWAGGER_SETTINGS.get('exclude_namespaces'))