blob: 291f1c42a491625e6a8ee6b0430f185c2a7ca8b4 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library io_http_apptests;
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:mojo_apptest/apptest.dart';
import 'package:mojo/application.dart';
import 'package:mojo/bindings.dart';
import 'package:mojo/core.dart';
tests(Application application, String url) {
group('Http Apptests', () {
// Bind server to a random port.
test('Http Server Bind', () async {
var server = await HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 0);
expect(server, isNotNull);
expect(server.port, greaterThan(1024));
await server.close();
});
// Bind server to a random port.
// Make a request.
// Expect a 404 response.
test('Http Server Request 404', () async {
var server = await HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 0);
expect(server, isNotNull);
expect(server.port, greaterThan(1024));
server.listen((HttpRequest request) {
request.response.statusCode = HttpStatus.NOT_FOUND;
request.response.close();
});
var client = new HttpClient();
expect(client, isNotNull);
var request = await client.get("127.0.0.1", server.port, "fox.txt");
expect(request, isNotNull);
var response = await request.close();
expect(response, isNotNull);
expect(response.statusCode, equals(HttpStatus.NOT_FOUND));
await server.close();
});
// Bind server to a random port.
// Make a request.
// Expect an OK response.
test('Http Server Response', () async {
var server = await HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 0);
expect(server, isNotNull);
expect(server.port, greaterThan(1024));
server.listen((HttpRequest request) {
expect(request.uri.path, equals('/bar.txt'));
expect(request.method, equals('GET'));
request.response.write('contents of bar.txt');
request.response.close();
});
var client = new HttpClient();
expect(client, isNotNull);
var request = await client.get("127.0.0.1", server.port, 'bar.txt');
expect(request, isNotNull);
var response = await request.close();
expect(response, isNotNull);
expect(response.statusCode, equals(HttpStatus.OK));
// Reduce to a single list.
var payload = await response.reduce((p, e) => p..addAll(e));
// Verify payload is correct.
expect('contents of bar.txt', equals(UTF8.decode(payload)));
await server.close();
});
});
}