mirror of https://github.com/grpc/grpc-dart.git
fixup tests
This commit is contained in:
parent
16dbabd7c6
commit
b39a6ff62d
|
@ -31,7 +31,7 @@ import 'web_streams.dart';
|
||||||
const _contentTypeKey = 'Content-Type';
|
const _contentTypeKey = 'Content-Type';
|
||||||
|
|
||||||
class XhrTransportStream implements GrpcTransportStream {
|
class XhrTransportStream implements GrpcTransportStream {
|
||||||
final XMLHttpRequest _request;
|
final IXMLHttpRequest _request;
|
||||||
final ErrorHandler _onError;
|
final ErrorHandler _onError;
|
||||||
final Function(XhrTransportStream stream) _onDone;
|
final Function(XhrTransportStream stream) _onDone;
|
||||||
bool _headersReceived = false;
|
bool _headersReceived = false;
|
||||||
|
@ -163,6 +163,7 @@ abstract interface class IXMLHttpRequest {
|
||||||
set responseType(String responseType);
|
set responseType(String responseType);
|
||||||
set withCredentials(bool withCredentials);
|
set withCredentials(bool withCredentials);
|
||||||
|
|
||||||
|
void abort();
|
||||||
void open(
|
void open(
|
||||||
String method,
|
String method,
|
||||||
String url, [
|
String url, [
|
||||||
|
@ -212,6 +213,11 @@ class XMLHttpRequestImpl implements IXMLHttpRequest {
|
||||||
_xhr.withCredentials = withCredentials;
|
_xhr.withCredentials = withCredentials;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void abort() {
|
||||||
|
_xhr.abort();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void open(
|
void open(
|
||||||
String method,
|
String method,
|
||||||
|
@ -301,8 +307,7 @@ class XhrClientConnection implements ClientConnection {
|
||||||
|
|
||||||
XhrTransportStream _createXhrTransportStream(IXMLHttpRequest request,
|
XhrTransportStream _createXhrTransportStream(IXMLHttpRequest request,
|
||||||
ErrorHandler onError, void Function(XhrTransportStream stream) onDone) {
|
ErrorHandler onError, void Function(XhrTransportStream stream) onDone) {
|
||||||
return XhrTransportStream(request.toXMLHttpRequest(),
|
return XhrTransportStream(request, onError: onError, onDone: onDone);
|
||||||
onError: onError, onDone: onDone);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _removeStream(XhrTransportStream stream) {
|
void _removeStream(XhrTransportStream stream) {
|
||||||
|
|
|
@ -18,7 +18,7 @@ library;
|
||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:js_interop';
|
import 'dart:js_interop';
|
||||||
|
import 'dart:typed_data';
|
||||||
import 'package:async/async.dart';
|
import 'package:async/async.dart';
|
||||||
import 'package:grpc/src/client/call.dart';
|
import 'package:grpc/src/client/call.dart';
|
||||||
import 'package:grpc/src/client/transport/xhr_transport.dart';
|
import 'package:grpc/src/client/transport/xhr_transport.dart';
|
||||||
|
@ -54,9 +54,9 @@ class MockHttpRequest extends Mock implements IXMLHttpRequest {
|
||||||
@override
|
@override
|
||||||
final int status;
|
final int status;
|
||||||
|
|
||||||
// Some test code expects to call this
|
@override
|
||||||
set readyState(int state);
|
String get responseText =>
|
||||||
set responseText(String text);
|
super.noSuchMethod(Invocation.getter(#responseText), returnValue: '');
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get readyState =>
|
int get readyState =>
|
||||||
|
@ -214,7 +214,8 @@ void main() {
|
||||||
await stream.terminate();
|
await stream.terminate();
|
||||||
|
|
||||||
final expectedData = frame(data);
|
final expectedData = frame(data);
|
||||||
verify(connection.latestRequest.send(expectedData.toJSBox));
|
verify(
|
||||||
|
connection.latestRequest.send(Uint8List.fromList(expectedData).toJS));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Stream handles headers properly', () async {
|
test('Stream handles headers properly', () async {
|
||||||
|
@ -230,16 +231,15 @@ void main() {
|
||||||
(error, _) => fail(error.toString()));
|
(error, _) => fail(error.toString()));
|
||||||
|
|
||||||
when(transport.latestRequest.responseHeaders).thenReturn(responseHeaders);
|
when(transport.latestRequest.responseHeaders).thenReturn(responseHeaders);
|
||||||
when(transport.latestRequest.response)
|
when(transport.latestRequest.responseText)
|
||||||
.thenReturn(String.fromCharCodes(frame(<int>[])).toJS);
|
.thenReturn(String.fromCharCodes(frame(<int>[])));
|
||||||
|
|
||||||
// Set expectation for request readyState and generate two readyStateChange
|
// Set expectation for request readyState and generate two readyStateChange
|
||||||
// events, so that incomingMessages stream completes.
|
// events, so that incomingMessages stream completes.
|
||||||
final readyStates = [XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE];
|
final readyStates = [XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE];
|
||||||
transport.latestRequest.readyState = readyStates[0];
|
when(transport.latestRequest.readyState).thenReturnInOrder(readyStates);
|
||||||
transport.latestRequest.readyStateChangeController
|
transport.latestRequest.readyStateChangeController
|
||||||
.add(readyStateChangeEvent);
|
.add(readyStateChangeEvent);
|
||||||
transport.latestRequest.readyState = readyStates[1];
|
|
||||||
transport.latestRequest.readyStateChangeController
|
transport.latestRequest.readyStateChangeController
|
||||||
.add(readyStateChangeEvent);
|
.add(readyStateChangeEvent);
|
||||||
|
|
||||||
|
@ -272,15 +272,15 @@ void main() {
|
||||||
final encodedString = String.fromCharCodes(encodedTrailers);
|
final encodedString = String.fromCharCodes(encodedTrailers);
|
||||||
|
|
||||||
when(connection.latestRequest.responseHeaders).thenReturn(requestHeaders);
|
when(connection.latestRequest.responseHeaders).thenReturn(requestHeaders);
|
||||||
when(connection.latestRequest.response).thenReturn(encodedString.toJS);
|
when(connection.latestRequest.responseText).thenReturn(encodedString);
|
||||||
|
|
||||||
// Set expectation for request readyState and generate events so that
|
// Set expectation for request readyState and generate events so that
|
||||||
// incomingMessages stream completes.
|
// incomingMessages stream completes.
|
||||||
connection.latestRequest.readyState = XMLHttpRequest.HEADERS_RECEIVED;
|
when(connection.latestRequest.readyState).thenReturnInOrder(
|
||||||
|
[XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE]);
|
||||||
connection.latestRequest.readyStateChangeController
|
connection.latestRequest.readyStateChangeController
|
||||||
.add(readyStateChangeEvent);
|
.add(readyStateChangeEvent);
|
||||||
connection.latestRequest.progressController.add(progressEvent);
|
connection.latestRequest.progressController.add(progressEvent);
|
||||||
connection.latestRequest.readyState = XMLHttpRequest.DONE;
|
|
||||||
connection.latestRequest.readyStateChangeController
|
connection.latestRequest.readyStateChangeController
|
||||||
.add(readyStateChangeEvent);
|
.add(readyStateChangeEvent);
|
||||||
|
|
||||||
|
@ -307,14 +307,14 @@ void main() {
|
||||||
final encodedString = String.fromCharCodes(encoded);
|
final encodedString = String.fromCharCodes(encoded);
|
||||||
|
|
||||||
when(connection.latestRequest.responseHeaders).thenReturn(requestHeaders);
|
when(connection.latestRequest.responseHeaders).thenReturn(requestHeaders);
|
||||||
when(connection.latestRequest.response).thenReturn(encodedString.toJS);
|
when(connection.latestRequest.responseText).thenReturn(encodedString);
|
||||||
// Set expectation for request readyState and generate events so that
|
// Set expectation for request readyState and generate events so that
|
||||||
// incomingMessages stream completes.
|
// incomingMessages stream completes.
|
||||||
connection.latestRequest.readyState = XMLHttpRequest.HEADERS_RECEIVED;
|
when(connection.latestRequest.readyState).thenReturnInOrder(
|
||||||
|
[XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE]);
|
||||||
connection.latestRequest.readyStateChangeController
|
connection.latestRequest.readyStateChangeController
|
||||||
.add(readyStateChangeEvent);
|
.add(readyStateChangeEvent);
|
||||||
connection.latestRequest.progressController.add(progressEvent);
|
connection.latestRequest.progressController.add(progressEvent);
|
||||||
connection.latestRequest.readyState = XMLHttpRequest.DONE;
|
|
||||||
connection.latestRequest.readyStateChangeController
|
connection.latestRequest.readyStateChangeController
|
||||||
.add(readyStateChangeEvent);
|
.add(readyStateChangeEvent);
|
||||||
|
|
||||||
|
@ -339,16 +339,16 @@ void main() {
|
||||||
requestHeaders, (error, _) => fail(error.toString()));
|
requestHeaders, (error, _) => fail(error.toString()));
|
||||||
final data = List<int>.filled(10, 224);
|
final data = List<int>.filled(10, 224);
|
||||||
when(connection.latestRequest.responseHeaders).thenReturn(requestHeaders);
|
when(connection.latestRequest.responseHeaders).thenReturn(requestHeaders);
|
||||||
when(connection.latestRequest.response)
|
when(connection.latestRequest.responseText)
|
||||||
.thenReturn(String.fromCharCodes(frame(data)).toJS);
|
.thenReturn(String.fromCharCodes(frame(data)));
|
||||||
|
|
||||||
// Set expectation for request readyState and generate events, so that
|
// Set expectation for request readyState and generate events, so that
|
||||||
// incomingMessages stream completes.
|
// incomingMessages stream completes.
|
||||||
connection.latestRequest.readyState = XMLHttpRequest.HEADERS_RECEIVED;
|
when(connection.latestRequest.readyState).thenReturnInOrder(
|
||||||
|
[XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE]);
|
||||||
connection.latestRequest.readyStateChangeController
|
connection.latestRequest.readyStateChangeController
|
||||||
.add(readyStateChangeEvent);
|
.add(readyStateChangeEvent);
|
||||||
connection.latestRequest.progressController.add(progressEvent);
|
connection.latestRequest.progressController.add(progressEvent);
|
||||||
connection.latestRequest.readyState = XMLHttpRequest.DONE;
|
|
||||||
connection.latestRequest.readyStateChangeController
|
connection.latestRequest.readyStateChangeController
|
||||||
.add(readyStateChangeEvent);
|
.add(readyStateChangeEvent);
|
||||||
|
|
||||||
|
@ -370,8 +370,8 @@ void main() {
|
||||||
const errorDetails = 'error details';
|
const errorDetails = 'error details';
|
||||||
when(connection.latestRequest.responseHeaders)
|
when(connection.latestRequest.responseHeaders)
|
||||||
.thenReturn({'content-type': 'application/grpc+proto'});
|
.thenReturn({'content-type': 'application/grpc+proto'});
|
||||||
connection.latestRequest.readyState = XMLHttpRequest.DONE;
|
when(connection.latestRequest.readyState).thenReturn(XMLHttpRequest.DONE);
|
||||||
connection.latestRequest.responseText = errorDetails;
|
when(connection.latestRequest.responseText).thenReturn(errorDetails);
|
||||||
connection.latestRequest.readyStateChangeController
|
connection.latestRequest.readyStateChangeController
|
||||||
.add(readyStateChangeEvent);
|
.add(readyStateChangeEvent);
|
||||||
await errorReceived.future;
|
await errorReceived.future;
|
||||||
|
@ -404,12 +404,12 @@ void main() {
|
||||||
// At first invocation the response should be the the first message, after
|
// At first invocation the response should be the the first message, after
|
||||||
// that first + last messages.
|
// that first + last messages.
|
||||||
var first = true;
|
var first = true;
|
||||||
when(connection.latestRequest.response).thenAnswer((_) {
|
when(connection.latestRequest.responseText).thenAnswer((_) {
|
||||||
if (first) {
|
if (first) {
|
||||||
first = false;
|
first = false;
|
||||||
return encodedStrings[0].toJS;
|
return encodedStrings[0];
|
||||||
}
|
}
|
||||||
return (encodedStrings[0] + encodedStrings[1]).toJS;
|
return encodedStrings[0] + encodedStrings[1];
|
||||||
});
|
});
|
||||||
|
|
||||||
final readyStates = [XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE];
|
final readyStates = [XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE];
|
||||||
|
|
Loading…
Reference in New Issue