@@ -1340,28 +1340,55 @@ public void sendFile() {
13401340 app .get ("/filenotfound" , ctx ->
13411341 userdir ("src" , "test" , "resources" , "files" , "notfound.txt" )
13421342 );
1343+ app .get ("/attachment" , ctx -> {
1344+ Path file = userdir ("src" , "test" , "resources" , "files" , "19kb.txt" );
1345+ return new AttachedFile (ctx .query ("name" ).value (file .getFileName ().toString ()), file );
1346+ });
13431347 }).ready (client -> {
13441348 client .get ("/filechannel" , rsp -> {
13451349 assertEquals (null , rsp .header ("transfer-encoding" ));
1346- assertEquals (Integer .toString (_19kb .length ()), rsp .header ("content-length" ).toLowerCase ());
1350+ assertEquals (Integer .toString (_19kb .length ()),
1351+ rsp .header ("content-length" ).toLowerCase ());
13471352 assertEquals (_19kb , rsp .body ().string ());
13481353 });
13491354
13501355 client .get ("/path" , rsp -> {
13511356 assertEquals (null , rsp .header ("transfer-encoding" ));
1352- assertEquals (Integer .toString (_19kb .length ()), rsp .header ("content-length" ).toLowerCase ());
1357+ assertEquals (Integer .toString (_19kb .length ()),
1358+ rsp .header ("content-length" ).toLowerCase ());
13531359 assertEquals (_19kb , rsp .body ().string ());
13541360 });
13551361
13561362 client .get ("/file" , rsp -> {
13571363 assertEquals (null , rsp .header ("transfer-encoding" ));
1358- assertEquals (Integer .toString (_19kb .length ()), rsp .header ("content-length" ).toLowerCase ());
1364+ assertEquals (Integer .toString (_19kb .length ()),
1365+ rsp .header ("content-length" ).toLowerCase ());
13591366 assertEquals (_19kb , rsp .body ().string ());
13601367 });
13611368
13621369 client .get ("/filenotfound" , rsp -> {
13631370 assertEquals (404 , rsp .code ());
13641371 });
1372+
1373+ client .get ("/attachment" , rsp -> {
1374+ assertEquals (null , rsp .header ("transfer-encoding" ));
1375+ assertEquals (Integer .toString (_19kb .length ()),
1376+ rsp .header ("content-length" ).toLowerCase ());
1377+ assertEquals ("text/plain;charset=utf-8" , rsp .header ("content-type" ).toLowerCase ());
1378+ assertEquals ("attachment;filename=\" 19kb.txt\" " ,
1379+ rsp .header ("content-disposition" ).toLowerCase ());
1380+ assertEquals (_19kb , rsp .body ().string ());
1381+ });
1382+
1383+ client .get ("/attachment?name=foo+bar.txt" , rsp -> {
1384+ assertEquals (null , rsp .header ("transfer-encoding" ));
1385+ assertEquals (Integer .toString (_19kb .length ()),
1386+ rsp .header ("content-length" ).toLowerCase ());
1387+ assertEquals ("text/plain;charset=utf-8" , rsp .header ("content-type" ).toLowerCase ());
1388+ assertEquals ("attachment;filename=\" foo bar.txt\" ;filename*=utf-8''foo%20bar.txt" ,
1389+ rsp .header ("content-disposition" ).toLowerCase ());
1390+ assertEquals (_19kb , rsp .body ().string ());
1391+ });
13651392 });
13661393 }
13671394
0 commit comments