Skip to content

Commit 1ff56d5

Browse files
committed
Python: Add tests of requests
Also adjusts test slightly. Writing `clientRequestDisablesCertValidation=False` to mean that certificate validation was disabled by the `False` expression is just confusing, as it easily reads as _certificate validate was NOT disabled_ :| The new one ties to each request that is being made, which seems like the right setup.
1 parent 7bf285a commit 1ff56d5

File tree

6 files changed

+63
-7
lines changed

6 files changed

+63
-7
lines changed

python/ql/test/experimental/meta/ConceptsTest.qll

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ class HttpClientRequestTest extends InlineExpectationsTest {
480480
HttpClientRequestTest() { this = "HttpClientRequestTest" }
481481

482482
override string getARelevantTag() {
483-
result in ["clientRequestUrl", "clientRequestDisablesCertValidation"]
483+
result in ["clientRequestUrl", "clientRequestCertValidationDisabled"]
484484
}
485485

486486
override predicate hasActualResult(Location location, string element, string tag, string value) {
@@ -494,12 +494,12 @@ class HttpClientRequestTest extends InlineExpectationsTest {
494494
)
495495
or
496496
exists(location.getFile().getRelativePath()) and
497-
exists(HTTP::Client::Request req, DataFlow::Node disablingNode |
498-
req.disablesCertificateValidation(disablingNode, _) and
499-
location = disablingNode.getLocation() and
500-
element = disablingNode.toString() and
501-
value = prettyNodeForInlineTest(disablingNode) and
502-
tag = "clientRequestDisablesCertValidation"
497+
exists(HTTP::Client::Request req |
498+
req.disablesCertificateValidation(_, _) and
499+
location = req.getLocation() and
500+
element = req.toString() and
501+
value = "" and
502+
tag = "clientRequestCertValidationDisabled"
503503
)
504504
}
505505
}

python/ql/test/library-tests/frameworks/requests/ConceptsTest.expected

Whitespace-only changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import python
2+
import experimental.meta.ConceptsTest
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
argumentToEnsureNotTaintedNotMarkedAsSpurious
2+
untaintedArgumentToEnsureTaintedNotMarkedAsMissing
3+
failures
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import experimental.meta.InlineTaintTest
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import requests
2+
3+
resp = requests.get("url") # $ MISSING: clientRequestUrl="url"
4+
resp = requests.get(url="url") # $ MISSING: clientRequestUrl="url"
5+
6+
resp = requests.request("GET", "url") # $ MISSING: clientRequestUrl="url"
7+
8+
with requests.Session() as session:
9+
resp = session.get("url") # $ MISSING: clientRequestUrl="url"
10+
resp = session.request(method="GET", url="url") # $ MISSING: clientRequestUrl="url"
11+
12+
s = requests.Session()
13+
resp = s.get("url") # $ MISSING: clientRequestUrl="url"
14+
15+
s = requests.session()
16+
resp = s.get("url") # $ MISSING: clientRequestUrl="url"
17+
18+
# test full import path for Session
19+
with requests.sessions.Session() as session:
20+
resp = session.get("url") # $ MISSING: clientRequestUrl="url"
21+
22+
# Low level access
23+
req = requests.Request("GET", "url") # $ MISSING: clientRequestUrl="url"
24+
resp = s.send(req.prepare())
25+
26+
# other methods than GET
27+
resp = requests.post("url") # $ MISSING: clientRequestUrl="url"
28+
resp = requests.patch("url") # $ MISSING: clientRequestUrl="url"
29+
resp = requests.options("url") # $ MISSING: clientRequestUrl="url"
30+
31+
# ==============================================================================
32+
# Disabling certificate validation
33+
# ==============================================================================
34+
35+
resp = requests.get("url", verify=False) # $ MISSING: clientRequestUrl="url" clientRequestCertValidationDisabled
36+
37+
def make_get(verify_arg):
38+
resp = requests.get("url", verify=verify_arg) # $ MISSING: clientRequestUrl="url" clientRequestCertValidationDisabled
39+
40+
make_get(False)
41+
42+
43+
with requests.Session() as session:
44+
# see https://github.com/psf/requests/blob/39d0fdd9096f7dceccbc8f82e1eda7dd64717a8e/requests/sessions.py#L621
45+
session.verify = False
46+
resp = session.get("url") # $ MISSING: clientRequestUrl="url" clientRequestCertValidationDisabled
47+
resp = session.get("url", verify=True) # $ MISSING: clientRequestUrl="url"
48+
49+
req = requests.Request("GET", "url") # $ MISSING: clientRequestUrl="url"
50+
resp = session.send(req.prepare()) # $ MISSING: clientRequestCertValidationDisabled

0 commit comments

Comments
 (0)