LCOV - code coverage report
Current view: top level - Users/duwen/Documents/code/dio/dio/test - request_test.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 80 81 98.8 %
Date: 2021-11-28 14:37:50 Functions: 0 0 -

          Line data    Source code
       1             : // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
       2             : // for details. All rights reserved. Use of this source code is governed by a
       3             : // BSD-style license that can be found in the LICENSE file.
       4             : 
       5             : @TestOn('vm')
       6             : import 'dart:convert';
       7             : import 'package:dio/dio.dart';
       8             : import 'package:test/test.dart';
       9             : import 'utils.dart';
      10             : 
      11           1 : void main() {
      12           1 :   setUp(startServer);
      13             : 
      14           1 :   tearDown(stopServer);
      15             : 
      16           2 :   group('#test requests', () {
      17             :     late Dio dio;
      18           2 :     setUp(() {
      19           1 :       dio = Dio();
      20           1 :       dio.options
      21           3 :         ..baseUrl = serverUrl.toString()
      22           1 :         ..connectTimeout = 1000
      23           1 :         ..receiveTimeout = 5000
      24           2 :         ..headers = {'User-Agent': 'dartisan'};
      25           3 :       dio.interceptors.add(LogInterceptor(
      26             :         responseBody: true,
      27             :         requestBody: true,
      28           2 :         logPrint: (log) => {
      29             :           // ignore log
      30             :         },
      31             :       ));
      32             :     });
      33           2 :     test('#test restful APIs', () async {
      34             :       Response response;
      35             : 
      36             :       // test get
      37           2 :       response = await dio.get(
      38             :         '/test',
      39           1 :         queryParameters: {'id': '12', 'name': 'wendu'},
      40             :       );
      41           2 :       expect(response.statusCode, 200);
      42           2 :       expect(response.isRedirect, false);
      43           4 :       expect(response.data['query'], equals('id=12&name=wendu'));
      44           4 :       expect(response.headers.value('single'), equals('value'));
      45             : 
      46             :       const map = {'content': 'I am playload'};
      47             : 
      48             :       // test post
      49           2 :       response = await dio.post('/test', data: map);
      50           3 :       expect(response.data['method'], 'POST');
      51           4 :       expect(response.data['body'], jsonEncode(map));
      52             : 
      53             :       // test put
      54           2 :       response = await dio.put('/test', data: map);
      55           3 :       expect(response.data['method'], 'PUT');
      56           4 :       expect(response.data['body'], jsonEncode(map));
      57             : 
      58             :       // test patch
      59           2 :       response = await dio.patch('/test', data: map);
      60           3 :       expect(response.data['method'], 'PATCH');
      61           4 :       expect(response.data['body'], jsonEncode(map));
      62             : 
      63             :       // test head
      64           2 :       response = await dio.delete('/test', data: map);
      65           3 :       expect(response.data['method'], 'DELETE');
      66           3 :       expect(response.data['path'], '/test');
      67             : 
      68             :       // error test
      69           1 :       expect(
      70           0 :           dio
      71           1 :               .get('/error')
      72           4 :               .catchError((e) => throw (e as DioError).response!.statusCode!),
      73           2 :           throwsA(equals(400)));
      74             : 
      75             :       // redirect test
      76           2 :       response = await dio.get(
      77             :         '/redirect',
      78           1 :         onReceiveProgress: (received, total) {
      79             :           // ignore progress
      80             :         },
      81             :       );
      82           2 :       assert(response.isRedirect == true);
      83           3 :       assert(response.redirects.length == 1);
      84           2 :       var ri = response.redirects.first;
      85           2 :       assert(ri.statusCode == 302);
      86           2 :       assert(ri.method == 'GET');
      87             :     });
      88             : 
      89           2 :     test('#test request with URI', () async {
      90             :       Response response;
      91             : 
      92             :       // test get
      93           2 :       response = await dio.getUri(
      94           2 :         Uri(path: '/test', queryParameters: {'id': '12', 'name': 'wendu'}),
      95             :       );
      96           2 :       expect(response.statusCode, 200);
      97           2 :       expect(response.isRedirect, false);
      98           4 :       expect(response.data['query'], equals('id=12&name=wendu'));
      99           4 :       expect(response.headers.value('single'), equals('value'));
     100             : 
     101             :       const map = {'content': 'I am playload'};
     102             : 
     103             :       // test post
     104           3 :       response = await dio.postUri(Uri(path: '/test'), data: map);
     105           3 :       expect(response.data['method'], 'POST');
     106           4 :       expect(response.data['body'], jsonEncode(map));
     107             : 
     108             :       // test put
     109           3 :       response = await dio.putUri(Uri(path: '/test'), data: map);
     110           3 :       expect(response.data['method'], 'PUT');
     111           4 :       expect(response.data['body'], jsonEncode(map));
     112             : 
     113             :       // test patch
     114           3 :       response = await dio.patchUri(Uri(path: '/test'), data: map);
     115           3 :       expect(response.data['method'], 'PATCH');
     116           4 :       expect(response.data['body'], jsonEncode(map));
     117             : 
     118             :       // test head
     119           3 :       response = await dio.deleteUri(Uri(path: '/test'), data: map);
     120           3 :       expect(response.data['method'], 'DELETE');
     121           3 :       expect(response.data['path'], '/test');
     122             :     });
     123             : 
     124           2 :     test('#test redirect', () async {
     125             :       Response response;
     126           2 :       response = await dio.get('/redirect');
     127           2 :       assert(response.isRedirect == true);
     128           3 :       assert(response.redirects.length == 1);
     129           2 :       var ri = response.redirects.first;
     130           2 :       assert(ri.statusCode == 302);
     131           2 :       assert(ri.method == 'GET');
     132           3 :       assert(ri.location.path == '/');
     133             :     });
     134             : 
     135           2 :     test('#test generic parameters', () async {
     136             :       Response response;
     137             : 
     138             :       // default is "Map"
     139           2 :       response = await dio.get('/test');
     140           2 :       assert(response.data is Map);
     141             : 
     142             :       // get response as `string`
     143           2 :       response = await dio.get<String>('/test');
     144           2 :       assert(response.data is String);
     145             : 
     146             :       // get response as `Map`
     147           2 :       response = await dio.get<Map>('/test');
     148           2 :       assert(response.data is Map);
     149             : 
     150             :       // get response as `List`
     151           2 :       response = await dio.get<List>('/list');
     152           2 :       assert(response.data is List);
     153           3 :       expect(response.data[0], 1);
     154             :     });
     155             :   });
     156             : }

Generated by: LCOV version 1.14