@@ -81,12 +81,17 @@ void main() {
8181 });
8282
8383 test ('ApiConnection.postFileFromStream' , () async {
84- Future <void > checkRequest (List <List <int >> content, int length, {String ? filename}) {
84+ Future <void > checkRequest (List <List <int >> content, int length,
85+ {String ? filename, String ? contentType, bool isContentTypeInvalid = false }) {
8586 return FakeApiConnection .with_ (account: eg.selfAccount, (connection) async {
8687 connection.prepare (json: {});
8788 await connection.postFileFromStream (
8889 kExampleRouteName, (json) => json, 'example/route' ,
89- Stream .fromIterable (content), length, filename: filename);
90+ Stream .fromIterable (content), length,
91+ filename: filename, contentType: contentType);
92+ final expectedContentType = (contentType != null && ! isContentTypeInvalid)
93+ ? contentType
94+ : 'application/octet-stream' ;
9095 check (connection.lastRequest! ).isA< http.MultipartRequest > ()
9196 ..method.equals ('POST' )
9297 ..url.asString.equals ('${eg .realmUrl .origin }/api/v1/example/route' )
@@ -99,6 +104,7 @@ void main() {
99104 ..field.equals ('file' )
100105 ..length.equals (length)
101106 ..filename.equals (filename)
107+ ..contentType.asString.equals (expectedContentType)
102108 ..has <Future <List <int >>>((f) => f.finalize ().toBytes (), 'contents' )
103109 .completes ((it) => it.deepEquals (content.expand ((l) => l)))
104110 );
@@ -110,6 +116,10 @@ void main() {
110116 checkRequest (['asd' .codeUnits, 'f' .codeUnits], 4 , filename: null );
111117
112118 checkRequest (['asdf' .codeUnits], 4 , filename: 'info.txt' );
119+ checkRequest (['asdf' .codeUnits], 4 ,
120+ filename: 'image.jpg' , contentType: 'image/jpeg' );
121+ checkRequest (['asdf' .codeUnits], 4 ,
122+ filename: 'image.jpg' , contentType: 'asdfjkl;' , isContentTypeInvalid: true );
113123
114124 checkRequest (['asdf' .codeUnits], 1 , filename: null ); // nothing on client side catches a wrong length
115125 checkRequest (['asdf' .codeUnits], 100 , filename: null );
0 commit comments