mock_image_http.dart 1.74 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5
import 'dart:async';
6 7
import 'dart:io';

8
import 'package:flutter_test/flutter_test.dart';
9

10
import '../../../packages/flutter/test/image_data.dart';
11 12

// Returns a mock HTTP client that responds with an image to all requests.
13
FakeHttpClient createMockImageHttpClient(SecurityContext? _) {
14
  final FakeHttpClient client = FakeHttpClient();
15 16 17
  return client;
}

18 19 20
class FakeHttpClient extends Fake implements HttpClient {
  @override
  bool autoUncompress = false;
21

22
  final FakeHttpClientRequest request = FakeHttpClientRequest();
23

24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
  @override
  Future<HttpClientRequest> getUrl(Uri url) async {
    return request;
  }
}

class FakeHttpClientRequest extends Fake implements HttpClientRequest {
  final FakeHttpClientResponse response = FakeHttpClientResponse();

  @override
  Future<HttpClientResponse> close() async {
    return response;
  }
}

class FakeHttpClientResponse extends Fake implements HttpClientResponse {
  @override
  int get statusCode => 200;

  @override
  int get contentLength => kTransparentImage.length;

  @override
  final FakeHttpHeaders headers = FakeHttpHeaders();

  @override
  HttpClientResponseCompressionState get compressionState => HttpClientResponseCompressionState.notCompressed;

  @override
53 54 55 56
  StreamSubscription<List<int>> listen(void Function(List<int>)? onData, {
    void Function()? onDone,
    Function? onError,
    bool? cancelOnError,
57 58 59 60 61
  }) {
    return Stream<List<int>>.fromIterable(<List<int>>[kTransparentImage])
      .listen(onData, onDone: onDone, onError: onError, cancelOnError: cancelOnError);
  }
}
62

63
class FakeHttpHeaders extends Fake implements HttpHeaders { }