Skip to content

Commit 7b572a0

Browse files
committed
Updated old test cases to work with MaD and adjusted MaD with more types.
1 parent b9026c8 commit 7b572a0

4 files changed

Lines changed: 52 additions & 25 deletions

File tree

javascript/ql/lib/ext/firebase.model.yml

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,34 @@ extensions:
33
pack: codeql/javascript-all
44
extensible: typeModel
55
data:
6-
- ["FirebaseDBRef", "firebase/app", "Member[database].ReturnValue"]
76
- ["firebase/app", "global", "Member[firebase]"]
8-
- ["FirebaseDBRef", "FirebaseDBRef", "Member[ref,refFromURL].ReturnValue"]
7+
8+
- ["FirebaseDB", "firebase/app", "Member[database].ReturnValue"]
9+
- ["FirebaseDB", "firebase-functions", "Member[database]"]
10+
- ["FirebaseDB", "firebase-admin", "Member[database].ReturnValue"]
11+
- ["FirebaseDB", "FirebaseDBApp", "Member[database].ReturnValue"]
12+
- ["FirebaseDB", "firebase.database.Database", ""]
13+
14+
- ["FirebaseDBApp", "firebase-admin", "Member[initializeApp,app].ReturnValue"]
15+
- ["FirebaseDBApp", "firebase/app", "Member[initializeApp,app].ReturnValue"]
16+
- ["FirebaseDBApp", "firebase/app", "Member[initializeApp].ReturnValue"]
17+
18+
- ["FirebaseDBRef", "FirebaseDB", "Member[ref,refFromURL].ReturnValue"]
919
- ["FirebaseDBRef", "FirebaseDBRef", "Member[child,once,on,push,set,then].ReturnValue"]
1020
- ["FirebaseDBRef", "FirebaseDBRef", "Member[ref,root,parent,before,after]"]
1121
- ["FirebaseDBRef", "FirebaseDBRef", "Member[endAt,startAt,orderByChild,orderByKey,orderByValue,orderByPriority,equalTo,limitToLast,limitToFirst].ReturnValue"]
12-
- ["FirebaseDBRef", "FirebaseDBRef", "Member[onCreate,onUpdate,onWrite,onDelete,transaction,then,forEach].Argument[0].Parameter[0]"]
22+
- ["FirebaseDBRef", "FirebaseDBRef", "Member[onCreate,onUpdate,onWrite,onDelete,then,forEach].Argument[0].Parameter[0]"]
1323
- ["FirebaseDBRef", "FirebaseDBRef", "Member[once,on].Argument[1].Parameter[0]"]
14-
- ["FirebaseDBRef", "firebase-functions", "Member[database]"]
15-
- ["FirebaseDBRef", "firebase-admin", "Member[database].ReturnValue"]
16-
- ["FirebaseApp", "firebase-admin", "Member[initializeApp,app].ReturnValue"]
17-
- ["FirebaseDBRef", "FirebaseApp", "Member[database].ReturnValue"]
24+
25+
- ["Snapshot", "FirebaseDBRef", "Member[child,once,on,push,set,then].ReturnValue"]
26+
- ["Snapshot", "FirebaseDBRef", "Member[before,after]"]
27+
- ["Snapshot", "FirebaseDBRef", "Member[once,on].Argument[1].Parameter[0]"]
28+
- ["Snapshot", "FirebaseDBRef", "Member[onCreate,onUpdate,onWrite,onDelete,transaction,then,forEach].Argument[0].Parameter[0]"]
1829

1930
- addsTo:
2031
pack: codeql/javascript-all
2132
extensible: sourceModel
2233
data:
2334
- ["FirebaseDBRef", "Member[val,exportVal].ReturnValue", 'remote']
35+
- ["FirebaseDBRef", "Member[transaction].Argument[0].Parameter[0]", 'remote']
36+
- ["Snapshot", "Member[val,exportVal].ReturnValue", 'remote']

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,32 @@
1-
WARNING: type 'FirebaseVal' has been deprecated and may be removed in future (tests.ql:10,29-50)
21
firebaseRef
32
| src/import_assign.ts:4:3:4:17 | db.ref("hello") |
43
| src/import_named.ts:4:3:4:17 | db.ref("hello") |
54
| src/import_star.ts:4:3:4:17 | db.ref("hello") |
65
| tst.js:5:1:5:22 | fb.data ... ef('x') |
6+
| tst.js:5:1:8:2 | fb.data ... eRef\\n}) |
7+
| tst.js:5:38:5:38 | x |
78
| tst.js:7:3:7:7 | x.ref |
89
| tst.js:7:3:7:14 | x.ref.parent |
910
| tst.js:10:1:10:25 | admin.d ... ef('x') |
11+
| tst.js:10:1:13:2 | admin.d ... eRef\\n}) |
12+
| tst.js:10:41:10:41 | x |
1013
| tst.js:12:3:12:7 | x.ref |
1114
| tst.js:12:3:12:14 | x.ref.parent |
15+
| tst.js:15:1:15:27 | functio ... ef('x') |
16+
| tst.js:15:38:15:38 | x |
1217
| tst.js:17:3:17:7 | x.ref |
1318
| tst.js:17:3:17:14 | x.ref.parent |
19+
| tst.js:20:1:20:27 | functio ... ef('x') |
20+
| tst.js:20:38:20:38 | x |
21+
| tst.js:21:3:21:10 | x.before |
22+
| tst.js:22:3:22:9 | x.after |
1423
| tst.js:23:3:23:7 | x.ref |
1524
| tst.js:23:3:23:14 | x.ref.parent |
1625
| tst.js:32:12:32:42 | this.fi ... .ref(x) |
1726
| tst.js:46:12:46:42 | this.fi ... .ref(x) |
18-
| tst.js:50:12:50:25 | this.getRef(x) |
1927
| tst.js:50:12:50:34 | this.ge ... hild(x) |
28+
| tst.js:50:12:50:48 | this.ge ... value') |
2029
| tst.js:54:5:54:37 | this.fi ... ef('x') |
21-
| tst.js:58:1:58:61 | new Fir ... /news') |
22-
| tst.js:59:1:59:38 | new Fir ... /news') |
2330
firebaseSnapshot
2431
| tst.js:5:1:8:2 | fb.data ... eRef\\n}) |
2532
| tst.js:5:38:5:38 | x |
@@ -29,8 +36,9 @@ firebaseSnapshot
2936
| tst.js:20:38:20:38 | x |
3037
| tst.js:21:3:21:10 | x.before |
3138
| tst.js:22:3:22:9 | x.after |
39+
| tst.js:50:12:50:34 | this.ge ... hild(x) |
3240
| tst.js:50:12:50:48 | this.ge ... value') |
33-
| tst.js:60:1:60:39 | new Fir ... em('x') |
41+
| tst.js:61:36:61:36 | x |
3442
firebaseVal
3543
| tst.js:6:3:6:9 | x.val() |
3644
| tst.js:11:3:11:9 | x.val() |

javascript/ql/test/library-tests/frameworks/Firebase/tests.ql

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
import javascript
22

3-
query predicate firebaseRef(DataFlow::SourceNode ref) { ref = Firebase::Database::ref() }
3+
query predicate firebaseRef(DataFlow::SourceNode ref) {
4+
ref = ModelOutput::getATypeNode("FirebaseDBRef").asSource()
5+
}
46

5-
query predicate firebaseSnapshot(DataFlow::SourceNode snap) { snap = Firebase::snapshot() }
7+
query predicate firebaseSnapshot(DataFlow::SourceNode snap) {
8+
snap = ModelOutput::getATypeNode("Snapshot").asSource()
9+
}
610

7-
query predicate firebaseVal(Firebase::FirebaseVal val) { any() }
11+
query predicate firebaseVal(DataFlow::SourceNode val) {
12+
val = ModelOutput::getASourceNode("remote").asSource()
13+
}
814

915
query predicate requestInputAccess(Http::RequestInputAccess acc) { any() }
1016

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@ import * as functions from 'firebase-functions';
55
fb.database().ref('x').once('value', x => { // $firebaseSnapshot $firebaseRef
66
x.val(); // $firebaseVal
77
x.ref.parent; // $firebaseRef
8-
}); // $firebaseSnapshot
8+
}); // $firebaseRef $firebaseSnapshot
99

1010
admin.database().ref('x').once('value', x => { // $firebaseSnapshot $firebaseRef
1111
x.val(); // $firebaseVal
1212
x.ref.parent; // $firebaseRef
13-
}); // $firebaseSnapshot
13+
}); // $firebaseRef $firebaseSnapshot
1414

15-
functions.database.ref('x').onCreate(x => {// $firebaseSnapshot
15+
functions.database.ref('x').onCreate(x => {// $firebaseSnapshot $firebaseRef
1616
x.val(); // $firebaseVal
1717
x.ref.parent; // $firebaseRef
1818
});
1919

20-
functions.database.ref('x').onUpdate(x => { // $firebaseSnapshot
21-
x.before.val(); // $firebaseSnapshot $firebaseVal
22-
x.after.val(); // $firebaseSnapshot $firebaseVal
20+
functions.database.ref('x').onUpdate(x => { // $firebaseSnapshot $firebaseRef
21+
x.before.val(); // $firebaseRef $firebaseSnapshot $firebaseVal
22+
x.after.val(); // $firebaseRef $firebaseSnapshot $firebaseVal
2323
x.ref.parent; // $firebaseRef
2424
});
2525

@@ -55,10 +55,10 @@ class FirebaseWrapper2 {
5555
}
5656
}
5757

58-
new FirebaseWrapper(firebase.initializeApp()).getRef('/news'); // $firebaseRef
59-
new FirebaseWrapper2().getRef('/news'); // $firebaseRef
60-
new FirebaseWrapper2().getNewsItem('x'); // $firebaseSnapshot
61-
new FirebaseWrapper2().adjustValue(x => x + 1); // $firebaseVal
58+
new FirebaseWrapper(firebase.initializeApp()).getRef('/news');
59+
new FirebaseWrapper2().getRef('/news');
60+
new FirebaseWrapper2().getNewsItem('x');
61+
new FirebaseWrapper2().adjustValue(x => x + 1); // $firebaseSnapshot $firebaseVal
6262

6363
class Box {
6464
constructor(x) {

0 commit comments

Comments
 (0)