Skip to content

Commit 3162033

Browse files
committed
Python: Make tests run for django rest framework
1 parent 41bb837 commit 3162033

File tree

6 files changed

+46
-39
lines changed

6 files changed

+46
-39
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
failures
21
testFailures
2+
failures
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
11
import python
22
import experimental.meta.ConceptsTest
3+
4+
class DedicatedTest extends DedicatedResponseTest {
5+
DedicatedTest() { this = "response_test.py" }
6+
7+
override predicate isDedicatedFile(File file) { file.getShortName() = this }
8+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
semmle-extractor-options: --max-import-depth=1 -r testapp

python/ql/test/library-tests/frameworks/rest_framework/taint_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def test_taint(request: Request, routed_param): # $ requestHandler routedParamet
8181
)
8282
ensure_not_tainted(request.user.password)
8383

84-
return Response("ok") # $ HttpResponse responseBody="ok"
84+
return Response("ok") # $ HttpResponse
8585

8686

8787
# class based view
@@ -105,7 +105,7 @@ def get(self, request: Request, routed_param): # $ requestHandler routedParamete
105105
# same as for standard Django view
106106
ensure_tainted(self.args, self.kwargs) # $ tainted
107107

108-
return Response("ok") # $ HttpResponse responseBody="ok"
108+
return Response("ok") # $ HttpResponse
109109

110110

111111

python/ql/test/library-tests/frameworks/rest_framework/testapp/urls.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
router.register(r"bars", views.BarViewSet)
1010

1111
urlpatterns = [
12-
path("", include(router.urls)),
13-
path("api-auth/", include("rest_framework.urls", namespace="rest_framework")),
14-
path("class-based-view/", views.MyClass.as_view()), # $routeSetup="lcass-based-view/"
15-
path("function-based-view/", views.function_based_view), # $routeSetup="function-based-view/"
16-
path("cookie-test/", views.cookie_test), # $routeSetup="function-based-view/"
17-
path("exception-test/", views.exception_test), # $routeSetup="exception-test/"
18-
path("viewset-entrypoints-test/", views.EntrypointViewSet.as_view()) # $routeSetup="viewset-entrypoints-test/"
12+
path("", include(router.urls)), # $ routeSetup=""
13+
path("api-auth/", include("rest_framework.urls", namespace="rest_framework")), # $ routeSetup="api-auth/"
14+
path("class-based-view/", views.MyClass.as_view()), # $ routeSetup="class-based-view/"
15+
path("function-based-view/", views.function_based_view), # $ routeSetup="function-based-view/"
16+
path("cookie-test/", views.cookie_test), # $ routeSetup="cookie-test/"
17+
path("exception-test/", views.exception_test), # $ routeSetup="exception-test/"
18+
path("viewset-entrypoints-test/", views.EntrypointViewSet.as_view()) # $ routeSetup="viewset-entrypoints-test/"
1919
]

python/ql/test/library-tests/frameworks/rest_framework/testapp/views.py

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,59 +23,59 @@ class EntrypointViewSet(viewsets.ModelViewSet):
2323
queryset = Bar.objects.all()
2424
serializer_class = BarSerializer
2525

26-
def create(self, request, *args, **kwargs):
27-
return Response("create")
28-
29-
def retrieve(self, request, *args, **kwargs):
30-
return Response("retrieve")
31-
32-
def update(self, request, *args, **kwargs):
33-
return Response("update")
34-
35-
def partial_update(self, request, *args, **kwargs):
36-
return Response("partial_update")
37-
38-
def destroy(self, request, *args, **kwargs):
39-
return Response("destroy")
40-
41-
def list(self, request, *args, **kwargs):
42-
return Response("list")
26+
def create(self, request, *args, **kwargs): # $ requestHandler
27+
return Response("create") # $ HttpResponse
28+
29+
def retrieve(self, request, *args, **kwargs): # $ requestHandler
30+
return Response("retrieve") # $ HttpResponse
31+
32+
def update(self, request, *args, **kwargs): # $ requestHandler
33+
return Response("update") # $ HttpResponse
34+
35+
def partial_update(self, request, *args, **kwargs): # $ requestHandler
36+
return Response("partial_update") # $ HttpResponse
37+
38+
def destroy(self, request, *args, **kwargs): # $ requestHandler
39+
return Response("destroy") # $ HttpResponse
40+
41+
def list(self, request, *args, **kwargs): # $ requestHandler
42+
return Response("list") # $ HttpResponse
4343

4444
# class based view
4545
# see https://www.django-rest-framework.org/api-guide/views/#class-based-views
4646

4747
class MyClass(APIView):
48-
def initial(self, request, *args, **kwargs):
48+
def initial(self, request, *args, **kwargs): # $ requestHandler
4949
# this method will be called before processing any request
5050
super().initial(request, *args, **kwargs)
5151

52-
def get(self, request):
53-
return Response("GET request")
52+
def get(self, request): # $ requestHandler
53+
return Response("GET request") # $ HttpResponse
5454

55-
def post(self, request):
56-
return Response("POST request")
55+
def post(self, request): # $ requestHandler
56+
return Response("POST request") # $ HttpResponse
5757

5858

5959
# function based view
6060
# see https://www.django-rest-framework.org/api-guide/views/#function-based-views
6161

6262

6363
@api_view(["GET", "POST"])
64-
def function_based_view(request: Request):
65-
return Response({"message": "Hello, world!"})
64+
def function_based_view(request: Request): # $ requestHandler
65+
return Response({"message": "Hello, world!"}) # $ HttpResponse
6666

6767

6868
@api_view(["GET", "POST"])
69-
def cookie_test(request: Request):
70-
resp = Response("wat")
69+
def cookie_test(request: Request): # $ requestHandler
70+
resp = Response("wat") # $ HttpResponse
7171
resp.set_cookie("key", "value") # $ CookieWrite CookieName="key" CookieValue="value"
72-
resp.set_cookie(key="key4", value="value") # $ CookieWrite CookieName="key" CookieValue="value"
72+
resp.set_cookie(key="key4", value="value") # $ CookieWrite CookieName="key4" CookieValue="value"
7373
resp.headers["Set-Cookie"] = "key2=value2" # $ MISSING: CookieWrite CookieRawHeader="key2=value2"
7474
resp.cookies["key3"] = "value3" # $ CookieWrite CookieName="key3" CookieValue="value3"
7575
return resp
7676

7777
@api_view(["GET", "POST"])
78-
def exception_test(request: Request):
78+
def exception_test(request: Request): # $ requestHandler
7979
# see https://www.django-rest-framework.org/api-guide/exceptions/
8080
# note: `code details` not exposed by default
81-
raise APIException("exception details", "code details")
81+
raise APIException("exception details", "code details") # $ HttpResponse

0 commit comments

Comments
 (0)