Skip to content

Commit 99e9841

Browse files
committed
add support for error values in an axios client request
1 parent 52991dc commit 99e9841

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

javascript/ql/src/semmle/javascript/frameworks/ClientRequests.qll

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,11 @@ module ClientRequest {
268268
responseType = getResponseType() and
269269
promise = true and
270270
result = this
271+
or
272+
responseType = getResponseType() and
273+
promise = false and
274+
result =
275+
getReturn().getPromisedError().getMember("response").getMember("data").getAnImmediateUse()
271276
}
272277
}
273278

javascript/ql/test/library-tests/frameworks/ClientRequests/ClientRequests.expected

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ test_ClientRequest
8787
| tst.js:271:3:271:61 | proxy.w ... 080' }) |
8888
| tst.js:274:1:283:2 | httpPro ... true\\n}) |
8989
| tst.js:286:20:286:55 | new Web ... :8080') |
90+
| tst.js:296:5:299:6 | axios({ ... \\n }) |
9091
test_getADataNode
9192
| tst.js:53:5:53:23 | axios({data: data}) | tst.js:53:18:53:21 | data |
9293
| tst.js:57:5:57:39 | axios.p ... data2}) | tst.js:57:19:57:23 | data1 |
@@ -227,6 +228,8 @@ test_getUrl
227228
| tst.js:271:3:271:61 | proxy.w ... 080' }) | tst.js:271:33:271:58 | 'http:/ ... m:8080' |
228229
| tst.js:274:1:283:2 | httpPro ... true\\n}) | tst.js:275:13:281:5 | {\\n ... ,\\n } |
229230
| tst.js:286:20:286:55 | new Web ... :8080') | tst.js:286:34:286:54 | 'ws://l ... t:8080' |
231+
| tst.js:296:5:299:6 | axios({ ... \\n }) | tst.js:296:11:299:5 | {\\n ... ,\\n } |
232+
| tst.js:296:5:299:6 | axios({ ... \\n }) | tst.js:298:14:298:44 | "http:/ ... -axios" |
230233
test_getAResponseDataNode
231234
| tst.js:19:5:19:23 | requestPromise(url) | tst.js:19:5:19:23 | requestPromise(url) | text | true |
232235
| tst.js:21:5:21:23 | superagent.get(url) | tst.js:21:5:21:23 | superagent.get(url) | stream | true |
@@ -294,3 +297,5 @@ test_getAResponseDataNode
294297
| tst.js:235:5:237:6 | needle. ... \\n }) | tst.js:235:67:235:70 | resp | fetch.response | false |
295298
| tst.js:235:5:237:6 | needle. ... \\n }) | tst.js:235:73:235:76 | body | json | false |
296299
| tst.js:286:20:286:55 | new Web ... :8080') | tst.js:291:44:291:53 | event.data | json | false |
300+
| tst.js:296:5:299:6 | axios({ ... \\n }) | tst.js:296:5:299:6 | axios({ ... \\n }) | json | true |
301+
| tst.js:296:5:299:6 | axios({ ... \\n }) | tst.js:303:26:303:42 | err.response.data | json | false |

javascript/ql/test/library-tests/frameworks/ClientRequests/tst.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,4 +290,17 @@ function webSocket() {
290290
socket.addEventListener('message', function (event) {
291291
console.log("Data from server: " + event.data);
292292
});
293+
}
294+
295+
function moreAxios() {
296+
axios({
297+
method: 'GET',
298+
url: "http://example.org/more-axios",
299+
}).then(
300+
x => res.send(x.data),
301+
(err) => {
302+
const status = err.response.status;
303+
const data = err.response.data;
304+
}
305+
);
293306
}

0 commit comments

Comments
 (0)