Index: third_party/pkg/angular/lib/mock/http_backend.dart |
diff --git a/third_party/pkg/angular/lib/mock/http_backend.dart b/third_party/pkg/angular/lib/mock/http_backend.dart |
deleted file mode 100644 |
index 20a8e97a7b3d167dc81fc2d2f86b03ee761d6e64..0000000000000000000000000000000000000000 |
--- a/third_party/pkg/angular/lib/mock/http_backend.dart |
+++ /dev/null |
@@ -1,627 +0,0 @@ |
-part of angular.mock; |
- |
-class _MockXhr { |
- var $$method, $$url, $$async, $$reqHeaders, $$respHeaders; |
- |
- void open(method, url, async) { |
- $$method = method; |
- $$url = url; |
- $$async = async; |
- $$reqHeaders = {}; |
- $$respHeaders = {}; |
- } |
- |
- var $$data; |
- |
- void send(data) { |
- $$data = data; |
- } |
- |
- void setRequestHeader(key, value) { |
- $$reqHeaders[key] = value; |
- } |
- |
- String getResponseHeader(name) { |
- // the lookup must be case insensitive, that's why we try two quick |
- // lookups and full scan at last |
- if ($$respHeaders.containsKey(name)) return $$respHeaders[name]; |
- |
- name = name.toLowerCase(); |
- if ($$respHeaders.containsKey(name)) return $$respHeaders[name]; |
- |
- String header = null; |
- $$respHeaders.forEach((headerName, headerVal) { |
- if (header != null) return; |
- if (headerName.toLowerCase()) header = headerVal; |
- }); |
- return header; |
- } |
- |
- getAllResponseHeaders() { |
- if ($$respHeaders == null) return ''; |
- |
- var lines = []; |
- |
- $$respHeaders.forEach((key, value) { |
- lines.add("$key: $value"); |
- }); |
- return lines.join('\n'); |
- } |
- |
- // noop |
- abort() {} |
-} |
- |
-/** |
- * An internal class used by [MockHttpBackend]. |
- */ |
-class MockHttpExpectation { |
- final method; |
- final url; |
- final data; |
- final headers; |
- |
- var response; |
- |
- MockHttpExpectation(this.method, this.url, [this.data, this.headers]); |
- |
- bool match(method, url, [data, headers]) { |
- if (method != method) return false; |
- if (!matchUrl(url)) return false; |
- if (data != null && !matchData(data)) return false; |
- if (headers != null && !matchHeaders(headers)) return false; |
- return true; |
- } |
- |
- bool matchUrl(u) { |
- if (url == null) return true; |
- if (url is RegExp) return url.hasMatch(u); |
- return url == u; |
- } |
- |
- bool matchHeaders(h) { |
- if (headers == null) return true; |
- if (headers is Function) return headers(h); |
- return "$headers" == "$h"; |
- } |
- |
- bool matchData(d) { |
- if (data == null) return true; |
- if (d == null) return false; |
- if (data is File) return data == d; |
- assert(d is String); |
- if (data is RegExp) return data.hasMatch(d); |
- return JSON.encode(data) == JSON.encode(d); |
- } |
- |
- String toString() => "$method $url"; |
-} |
- |
- |
-class _Chain { |
- final Function _respondFn; |
- _Chain({respond}): _respondFn = respond; |
- respond([x,y,z]) => _respondFn(x,y,z); |
-} |
- |
-/** |
- * A mock implementation of [HttpBackend], used in tests. |
- */ |
-class MockHttpBackend implements HttpBackend { |
- var definitions = [], |
- expectations = [], |
- responses = []; |
- |
- /** |
- * This function is called from [Http] and designed to mimic the Dart APIs. |
- */ |
- dart_async.Future request(String url, |
- {String method, bool withCredentials, String responseType, |
- String mimeType, Map<String, String> requestHeaders, sendData, |
- void onProgress(ProgressEvent e)}) { |
- dart_async.Completer c = new dart_async.Completer(); |
- var callback = (status, data, headers) { |
- if (status >= 200 && status < 300) { |
- c.complete(new MockHttpRequest(status, data, headers)); |
- } else { |
- c.completeError(new MockProgressEvent( |
- new MockHttpRequest(status, data, headers))); |
- } |
- }; |
- call(method == null ? 'GET' : method, url, sendData, callback, |
- requestHeaders); |
- return c.future; |
- } |
- |
- _createResponse(statusOrDataOrFunction, dataOrHeaders, headersOrNone) { |
- if (statusOrDataOrFunction is Function) return statusOrDataOrFunction; |
- var status, data, headers; |
- if (statusOrDataOrFunction is num) { |
- status = statusOrDataOrFunction; |
- data = dataOrHeaders; |
- headers = headersOrNone; |
- } else { |
- status = 200; |
- data = statusOrDataOrFunction; |
- headers = dataOrHeaders; |
- } |
- if (data is Map || data is List) data = JSON.encode(data); |
- |
- return ([a,b,c,d,e]) => [status, data, headers]; |
- } |
- |
- |
- /** |
- * A callback oriented API. This function takes a callback with |
- * will be called with (status, data, headers) |
- */ |
- void call(method, [url, data, callback, headers, timeout]) { |
- var xhr = new _MockXhr(), |
- expectation = expectations.isEmpty ? null : expectations[0], |
- wasExpected = false; |
- |
- var prettyPrint = (data) { |
- return (data is String || data is Function || data is RegExp) |
- ? data |
- : JSON.encode(data); |
- }; |
- |
- var wrapResponse = (wrapped) { |
- var handleResponse = () { |
- var response = wrapped.response(method, url, data, headers); |
- xhr.$$respHeaders = response[2]; |
- utils.relaxFnApply(callback, [response[0], response[1], |
- xhr.getAllResponseHeaders()]); |
- }; |
- |
- var handleTimeout = () { |
- for (var i = 0; i < responses.length; i++) { |
- if (identical(responses[i], handleResponse)) { |
- responses.removeAt(i); |
- callback(-1, null, ''); |
- break; |
- } |
- } |
- }; |
- |
- if (timeout != null) timeout.then(handleTimeout); |
- return handleResponse; |
- }; |
- |
- if (expectation != null && expectation.match(method, url)) { |
- if (!expectation.matchData(data)) |
- throw ['Expected $expectation with different data\n' + |
- 'EXPECTED: ${prettyPrint(expectation.data)}\nGOT: $data']; |
- |
- if (!expectation.matchHeaders(headers)) |
- throw ['Expected $expectation with different headers\n' |
- 'EXPECTED: ${prettyPrint(expectation.headers)}\n' |
- 'GOT: ${prettyPrint(headers)}']; |
- |
- expectations.removeAt(0); |
- |
- if (expectation.response != null) { |
- responses.add(wrapResponse(expectation)); |
- return; |
- } |
- wasExpected = true; |
- } |
- |
- for (var definition in definitions) { |
- if (definition.match(method, url, data, headers != null ? headers : {})) { |
- if (definition.response != null) { |
- // if $browser specified, we do auto flush all requests |
- responses.add(wrapResponse(definition)); |
- } else throw ['No response defined !']; |
- return; |
- } |
- } |
- throw wasExpected ? |
- ['No response defined !'] : |
- ['Unexpected request: $method $url\n' + (expectation != null ? |
- 'Expected $expectation' : |
- 'No more requests expected')]; |
- } |
- |
- /** |
- * Creates a new backend definition. |
- * |
- * @param {string} method HTTP method. |
- * @param {string|RegExp} url HTTP url. |
- * @param {(string|RegExp)=} data HTTP request body. |
- * @param {(Object|function(Object))=} headers HTTP headers or function that |
- * receives http header object and returns true if the headers match the |
- * current definition. |
- * @returns {requestHandler} Returns an object with `respond` method that |
- * control how a matched request is handled. |
- * |
- * - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}` |
- * – The respond method takes a set of static data to be returned or a function that can return |
- * an array containing response status (number), response data (string) and response headers |
- * (Object). |
- */ |
- _Chain when(method, [url, data, headers]) { |
- var definition = new MockHttpExpectation(method, url, data, headers), |
- chain = new _Chain(respond: (status, data, headers) { |
- definition.response = _createResponse(status, data, headers); |
- }); |
- |
- definitions.add(definition); |
- return chain; |
- } |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#whenGET |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new backend definition for GET requests. For more info see `when()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {(Object|function(Object))=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- _Chain whenGET(url, [headers]) => when('GET', url, null, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#whenDELETE |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new backend definition for DELETE requests. For more info see `when()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {(Object|function(Object))=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- _Chain whenDELETE(url, [headers]) => when('DELETE', url, null, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#whenJSONP |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new backend definition for JSONP requests. For more info see `when()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- _Chain whenJSONP(url, [headers]) => when('JSONP', url, null, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#whenPUT |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new backend definition for PUT requests. For more info see `when()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {(string|RegExp)=} data HTTP request body. |
- * @param {(Object|function(Object))=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- _Chain whenPUT(url, [data, headers]) => when('PUT', url, data, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#whenPOST |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new backend definition for POST requests. For more info see `when()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {(string|RegExp)=} data HTTP request body. |
- * @param {(Object|function(Object))=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- _Chain whenPOST(url, [data, headers]) => when('POST', url, data, headers); |
- |
- _Chain whenPATCH(url, [data, headers]) => when('PATCH', url, data, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#whenHEAD |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new backend definition for HEAD requests. For more info see `when()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {(Object|function(Object))=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#expect |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new request expectation. |
- * |
- * @param {string} method HTTP method. |
- * @param {string|RegExp} url HTTP url. |
- * @param {(string|RegExp)=} data HTTP request body. |
- * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header |
- * object and returns true if the headers match the current expectation. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- * |
- * - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}` |
- * – The respond method takes a set of static data to be returned or a function that can return |
- * an array containing response status (number), response data (string) and response headers |
- * (Object). |
- */ |
- _Chain expect(method, [url, data, headers]) { |
- var expectation = new MockHttpExpectation(method, url, data, headers); |
- expectations.add(expectation); |
- return new _Chain(respond: (status, data, headers) { |
- expectation.response = _createResponse(status, data, headers); |
- }); |
- } |
- |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#expectGET |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new request expectation for GET requests. For more info see `expect()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {Object=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. See #expect for more info. |
- */ |
- _Chain expectGET(url, [headers]) => expect('GET', url, null, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#expectDELETE |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new request expectation for DELETE requests. For more info see `expect()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {Object=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- _Chain expectDELETE(url, [headers]) => expect('DELETE', url, null, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#expectJSONP |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new request expectation for JSONP requests. For more info see `expect()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- _Chain expectJSONP(url, [headers]) => expect('JSONP', url, null, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#expectPUT |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new request expectation for PUT requests. For more info see `expect()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {(string|RegExp)=} data HTTP request body. |
- * @param {Object=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- _Chain expectPUT(url, [data, headers]) => expect('PUT', url, data, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#expectPOST |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new request expectation for POST requests. For more info see `expect()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {(string|RegExp)=} data HTTP request body. |
- * @param {Object=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- _Chain expectPOST(url, [data, headers]) => expect('POST', url, data, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#expectPATCH |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new request expectation for PATCH requests. For more info see `expect()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {(string|RegExp)=} data HTTP request body. |
- * @param {Object=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- _Chain expectPATCH(url, [data, headers]) => expect('PATCH', url, data, headers); |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#expectHEAD |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Creates a new request expectation for HEAD requests. For more info see `expect()`. |
- * |
- * @param {string|RegExp} url HTTP url. |
- * @param {Object=} headers HTTP headers. |
- * @returns {requestHandler} Returns an object with `respond` method that control how a matched |
- * request is handled. |
- */ |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#flush |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Flushes all pending requests using the trained responses. |
- * |
- * @param {number=} count Number of responses to flush (in the order they arrived). If undefined, |
- * all pending requests will be flushed. If there are no pending requests when the flush method |
- * is called an exception is thrown (as this typically a sign of programming error). |
- */ |
- void flush([count]) { |
- if (responses.isEmpty) throw ['No pending request to flush !']; |
- |
- if (count != null) { |
- while (count-- > 0) { |
- if (responses.isEmpty) throw ['No more pending request to flush !']; |
- responses.removeAt(0)(); |
- } |
- } else { |
- while (!responses.isEmpty) { |
- responses.removeAt(0)(); |
- } |
- } |
- verifyNoOutstandingExpectation(); |
- } |
- |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#verifyNoOutstandingExpectation |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Verifies that all of the requests defined via the `expect` api were made. If any of the |
- * requests were not made, verifyNoOutstandingExpectation throws an exception. |
- * |
- * Typically, you would call this method following each test case that asserts requests using an |
- * "afterEach" clause. |
- * |
- * <pre> |
- * afterEach($httpBackend.verifyNoOutstandingExpectation); |
- * </pre> |
- */ |
- void verifyNoOutstandingExpectation() { |
- if (!expectations.isEmpty) { |
- throw ['Unsatisfied requests: ${expectations.join(', ')}']; |
- } |
- } |
- |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#verifyNoOutstandingRequest |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Verifies that there are no outstanding requests that need to be flushed. |
- * |
- * Typically, you would call this method following each test case that asserts requests using an |
- * "afterEach" clause. |
- * |
- * <pre> |
- * afterEach($httpBackend.verifyNoOutstandingRequest); |
- * </pre> |
- */ |
- void verifyNoOutstandingRequest() { |
- if (!responses.isEmpty) throw ['Unflushed requests: ${responses.length}']; |
- } |
- |
- |
- /** |
- * @ngdoc method |
- * @name ngMock.$httpBackend#resetExpectations |
- * @methodOf ngMock.$httpBackend |
- * @description |
- * Resets all request expectations, but preserves all backend definitions. Typically, you would |
- * call resetExpectations during a multiple-phase test when you want to reuse the same instance of |
- * $httpBackend mock. |
- */ |
- void resetExpectations() { |
- expectations.length = 0; |
- responses.length = 0; |
- } |
-} |
- |
-/** |
- * Mock implementation of the [HttpRequest] object returned from the HttpBackend. |
- */ |
-class MockHttpRequest implements HttpRequest { |
- final bool supportsCrossOrigin = false; |
- final bool supportsLoadEndEvent = false; |
- final bool supportsOverrideMimeType = false; |
- final bool supportsProgressEvent = false; |
- final Events on = null; |
- |
- final dart_async.Stream<ProgressEvent> onAbort = null; |
- final dart_async.Stream<ProgressEvent> onError = null; |
- final dart_async.Stream<ProgressEvent> onLoad = null; |
- final dart_async.Stream<ProgressEvent> onLoadEnd = null; |
- final dart_async.Stream<ProgressEvent> onLoadStart = null; |
- final dart_async.Stream<ProgressEvent> onProgress = null; |
- final dart_async.Stream<ProgressEvent> onReadyStateChange = null; |
- |
- final dart_async.Stream<ProgressEvent> onTimeout = null; |
- final int readyState = 0; |
- |
- get responseText => response == null ? null : "$response"; |
- Map<String, String> get responseHeaders => null; |
- final responseXml = null; |
- final String statusText = null; |
- final HttpRequestUpload upload = null; |
- |
- String responseType = null; |
- int timeout = 0; |
- bool withCredentials; |
- |
- final int status; |
- final response; |
- final String headers; |
- |
- MockHttpRequest(this.status, this.response, [this.headers]); |
- |
- void abort() {} |
- bool dispatchEvent(Event event) => false; |
- String getAllResponseHeaders() => headers; |
- String getResponseHeader(String header) => null; |
- |
- void open(String method, String url, {bool async, String user, String password}) {} |
- void overrideMimeType(String override) {} |
- void send([data]) {} |
- void setRequestHeader(String header, String value) {} |
- void addEventListener(String type, EventListener listener, [bool useCapture]) {} |
- void removeEventListener(String type, EventListener listener, [bool useCapture]) {} |
-} |
- |
-class MockProgressEvent implements ProgressEvent { |
- final bool bubbles = false; |
- final bool cancelable = false; |
- final DataTransfer clipboardData = null; |
- final EventTarget currentTarget; |
- final Element matchingTarget = null; |
- final bool defaultPrevented = false; |
- final int eventPhase = 0; |
- final bool lengthComputable = false; |
- final int loaded = 0; |
- final List<Node> path = null; |
- final int position = 0; |
- final Type runtimeType = null; |
- final EventTarget target = null; |
- final int timeStamp = 0; |
- final int total = 0; |
- final int totalSize = 0; |
- final String type = null; |
- |
- bool cancelBubble = false; |
- |
- MockProgressEvent(MockHttpRequest this.currentTarget); |
- |
- void preventDefault() {} |
- void stopImmediatePropagation() {} |
- void stopPropagation() {} |
-} |