Line data Source code
1 : import 'dart:convert'; 2 : import 'dart:io'; 3 : 4 : import 'package:dio/dio.dart'; 5 : import 'package:test/test.dart'; 6 : 7 1 : void main() { 8 1 : var dio = Dio(); 9 2 : dio.options.baseUrl = 'http://httpbin.org/'; 10 2 : test('stream', () async { 11 : Response r; 12 : const str = 'hello 😌'; 13 2 : var bytes = utf8.encode(str).toList(); 14 4 : var stream = Stream.fromIterable(bytes.map((e) => [e])); 15 2 : r = await dio.put( 16 : '/put', 17 : data: stream, 18 1 : options: Options( 19 : contentType: Headers.textPlainContentType, 20 1 : headers: { 21 1 : Headers.contentLengthHeader: bytes.length, // set content-length 22 : }, 23 : ), 24 : ); 25 3 : expect(r.data['data'], str); 26 : }); 27 : 28 2 : test('file stream', () async { 29 1 : var f = File('../dio/test/test.jpg'); 30 2 : var r = await dio.put( 31 : '/put', 32 1 : data: f.openRead(), 33 1 : options: Options( 34 : contentType: 'image/jpeg', 35 1 : headers: { 36 1 : Headers.contentLengthHeader: f.lengthSync(), // set content-length 37 : }, 38 : ), 39 : ); 40 2 : var img = base64Encode(f.readAsBytesSync()); 41 4 : expect(r.data['data'], 'data:application/octet-stream;base64,' + img); 42 : }); 43 : 44 2 : test('file stream<Uint8List>', () async { 45 1 : var f = File('../dio/test/test.jpg'); 46 2 : var r = await dio.put( 47 : '/put', 48 2 : data: f.readAsBytes().asStream(), 49 1 : options: Options( 50 : contentType: 'image/jpeg', 51 1 : headers: { 52 1 : Headers.contentLengthHeader: f.lengthSync(), // set content-length 53 : }, 54 : ), 55 : ); 56 2 : var img = base64Encode(f.readAsBytesSync()); 57 4 : expect(r.data['data'], 'data:application/octet-stream;base64,' + img); 58 : }); 59 : }