@@ -25,83 +25,66 @@ class JSONObjectInstrumentationTest extends AgentTestRunner {
25
25
}}"""
26
26
27
27
when :
28
- final jsonObject = new JSONObject (json)
29
- final name = jsonObject. getJSONObject(" menu" ). get(" name" )
28
+ new JSONObject (json)
30
29
31
30
then :
32
- name == " nameTest"
33
31
1 * module. taintObjectIfTainted(_ as JSONObject , json)
34
- 2 * module. taintObjectIfTainted(_ as JSONObject , _ as JSONTokener )
35
- 2 * module. taintObjectIfTainted(_ as JSONObject , _ as JSONObject )
36
32
1 * module. taintObjectIfTainted(_ as JSONTokener , json)
37
- 2 * module. taintStringIfTainted(" nameTest" , _ as JSONObject )
38
33
0 * _
39
34
}
40
35
41
- void ' test JSONObject opt ' () {
36
+ void ' test JSONObject JSonTokenizer constructor ' () {
42
37
given :
43
38
final module = Mock (PropagationModule )
44
39
InstrumentationBridge . registerIastModule(module)
45
- final json = """ {"menu": {
46
- "name": "nameTest",
47
- "value": "File",
48
- "popup": "Popup",
49
- "labels": [
50
- "File",
51
- "Edit"
52
- ]
53
- }}"""
40
+ final json = ' {"name": "nameTest", "value" : "valueTest"}'
41
+ final jsonTokener = new JSONTokener (json)
54
42
55
43
when :
56
- final jsonObject = new JSONObject (json)
57
- final name = jsonObject. getJSONObject(" menu" ). optString(" name" )
44
+ new JSONObject (jsonTokener)
58
45
59
46
then :
60
- name == " nameTest"
61
- 1 * module. taintObjectIfTainted(_ as JSONObject , json)
62
- 2 * module. taintObjectIfTainted(_ as JSONObject , _ as JSONTokener )
63
- 2 * module. taintObjectIfTainted(_ as JSONObject , _ as JSONObject )
64
- 1 * module. taintObjectIfTainted(_ as JSONTokener , json)
65
- 1 * module. taintStringIfTainted(" nameTest" , _ as JSONObject )
47
+ 1 * module. taintObjectIfTainted(_ as JSONObject , _ as JSONTokener )
66
48
0 * _
67
49
}
68
50
69
-
70
-
71
- void ' test JSONObject JSonTokenizer constructor' () {
51
+ void ' test JSONObject map constructor' (){
72
52
given :
53
+ final Map<String , String > map = new HashMap<> ()
54
+ map. put(" name" , " nameTest" )
55
+ map. put(" age" , " 22" )
56
+ map. put(" city" , " chicago" )
73
57
final module = Mock (PropagationModule )
74
58
InstrumentationBridge . registerIastModule(module)
75
- final json = ' {"name": "nameTest", "value" : "valueTest"}'
76
59
77
60
when :
78
- final jsonObject = new JSONObject (new JSONTokener (json))
79
- final name = jsonObject. get(" name" )
61
+ new JSONObject (map)
80
62
81
63
then :
82
- name == " nameTest"
83
- 1 * module. taintObjectIfTainted(_ as JSONObject , _ as JSONTokener )
84
- 1 * module. taintObjectIfTainted(_ as JSONTokener , json)
85
- 2 * module. taintStringIfTainted(" nameTest" , _ as JSONObject )
64
+ 1 * module. taintObjectIfTainted(_ as JSONObject , map)
86
65
0 * _
87
66
}
88
67
89
- void ' test JSONObject map constructor' (){
68
+
69
+ void ' test JSONObject #method' () {
90
70
given :
91
- final Map<String , String > map = new HashMap<> ()
92
- map. put(" name" , " nameTest" )
93
- map. put(" age" , " 22" )
94
- map. put(" city" , " chicago" )
95
71
final module = Mock (PropagationModule )
96
72
InstrumentationBridge . registerIastModule(module)
73
+ final json = """ {"menu": {
74
+ "name": "nameTest"
75
+ }}"""
76
+ final jsonObject = new JSONObject (json)
77
+ final getObject = jsonObject. getJSONObject(" menu" )
97
78
98
79
when :
99
- final jsonObject = new JSONObject (map)
100
- jsonObject. get(" name" )
80
+ final name = getObject. " $method " (' name' )
101
81
102
82
then :
103
- 1 * module . taintObjectIfTainted(_ as JSONObject , map)
104
- 2 * module. taintStringIfTainted(" nameTest" , _ as JSONObject )
83
+ name == " nameTest "
84
+ 1 * module. taintStringIfTainted(" nameTest" , _ as JSONObject )
105
85
0 * _
86
+
87
+ where :
88
+ method << [' get' , ' getString' , ' opt' , ' optString' ]
106
89
}
107
90
}
0 commit comments