| Index: third_party/pkg/angular/test/mock/http_backend_spec.dart
|
| diff --git a/third_party/pkg/angular/test/mock/http_backend_spec.dart b/third_party/pkg/angular/test/mock/http_backend_spec.dart
|
| deleted file mode 100644
|
| index 65ff89b1941bcb09abca7ee02090016e374b6272..0000000000000000000000000000000000000000
|
| --- a/third_party/pkg/angular/test/mock/http_backend_spec.dart
|
| +++ /dev/null
|
| @@ -1,517 +0,0 @@
|
| -library angular.mock.http_backend_spec;
|
| -
|
| -import '../_specs.dart';
|
| -
|
| -class _Chain {
|
| - var _thenFn;
|
| - _Chain({then}) {
|
| - _thenFn = then;
|
| - }
|
| -
|
| - then(x) => _thenFn(x);
|
| -}
|
| -
|
| -main() => describe('MockHttpBackend', () {
|
| - TestBed _;
|
| - beforeEach(inject((TestBed tb) => _ = tb));
|
| -
|
| - var hb, callback, realBackendSpy;
|
| -
|
| - var noop = (_, __) {};
|
| - var undefined = null;
|
| -
|
| - beforeEach(inject((HttpBackend httpBackend) {
|
| - callback = jasmine.createSpy('callback');
|
| - hb = httpBackend;
|
| - }));
|
| -
|
| -
|
| - it('should respond with first matched definition', () {
|
| - hb.when('GET', '/url1').respond(200, 'content', {});
|
| - hb.when('GET', '/url1').respond(201, 'another', {});
|
| -
|
| - callback.andCallFake((status, response) {
|
| - expect(status).toBe(200);
|
| - expect(response).toBe('content');
|
| - });
|
| -
|
| - hb('GET', '/url1', null, callback);
|
| - expect(callback).not.toHaveBeenCalled();
|
| - hb.flush();
|
| - expect(callback).toHaveBeenCalledOnce();
|
| - });
|
| -
|
| -
|
| - it('should respond with JSON', inject((Logger logger) {
|
| - hb.when('GET', '/url1').respond(200, ['abc'], {});
|
| - hb.when('GET', '/url2').respond(200, {'key': 'value'}, {});
|
| -
|
| -
|
| - callback.andCallFake((status, response) {
|
| - expect(status).toBe(200);
|
| - logger(response);
|
| - });
|
| -
|
| - hb('GET', '/url1', null, callback);
|
| - hb('GET', '/url2', null, callback);
|
| - hb.flush();
|
| - expect(logger).toEqual(['["abc"]', '{"key":"value"}']);
|
| - }));
|
| -
|
| -
|
| - it('should throw error when unexpected request', () {
|
| - hb.when('GET', '/url1').respond(200, 'content');
|
| - expect(() {
|
| - hb('GET', '/xxx');
|
| - }).toThrow('Unexpected request: GET /xxx\nNo more requests expected');
|
| - });
|
| -
|
| -
|
| - it('should throw an error on an exception in then', async(() {
|
| - hb.expectGET('/url').respond(200, 'content');
|
| -
|
| - expect(() {
|
| - hb.request('/url', method: 'GET').then((x) {
|
| - throw ["exceptiona"];
|
| - });
|
| - hb.flush();
|
| - microLeap();
|
| - }).toThrow('exceptiona');
|
| - }));
|
| -
|
| -
|
| - it('should match headers if specified', () {
|
| - try {
|
| - hb.when('GET', '/url', null, {'X': 'val1'}).respond(201, 'content1');
|
| - hb.when('GET', '/url', null, {'X': 'val2'}).respond(202, 'content2');
|
| - hb.when('GET', '/url').respond(203, 'content3');
|
| -
|
| - hb('GET', '/url', null, (status, response) {
|
| - expect(status).toBe(203);
|
| - expect(response).toBe('content3');
|
| - });
|
| -
|
| - hb('GET', '/url', null, (status, response) {
|
| - expect(status).toBe(201);
|
| - expect(response).toBe('content1');
|
| - }, {'X': 'val1'});
|
| -
|
| - hb('GET', '/url', null, (status, response) {
|
| - expect(status).toBe(202);
|
| - expect(response).toBe('content2');
|
| - }, {'X': 'val2'});
|
| -
|
| - hb.flush();
|
| - } catch (e,s) { print("$e $s"); }
|
| - });
|
| -
|
| -
|
| - it('should match data if specified', () {
|
| - hb.when('GET', '/a/b', '{a: true}').respond(201, 'content1');
|
| - hb.when('GET', '/a/b').respond(202, 'content2');
|
| -
|
| - hb('GET', '/a/b', '{a: true}', (status, response) {
|
| - expect(status).toBe(201);
|
| - expect(response).toBe('content1');
|
| - });
|
| -
|
| - hb('GET', '/a/b', '{}', (status, response) {
|
| - expect(status).toBe(202);
|
| - expect(response).toBe('content2');
|
| - });
|
| -
|
| - hb.flush();
|
| - });
|
| -
|
| -
|
| - it('should match only method', () {
|
| - hb.when('GET').respond(202, 'c');
|
| - callback.andCallFake((status, response) {
|
| - expect(status).toBe(202);
|
| - expect(response).toBe('c');
|
| - });
|
| -
|
| - hb('GET', '/some', null, callback, {});
|
| - hb('GET', '/another', null, callback, {'X-Fake': 'Header'});
|
| - hb('GET', '/third', 'some-data', callback, {});
|
| - hb.flush();
|
| -
|
| - expect(callback).toHaveBeenCalled();
|
| - });
|
| -
|
| -
|
| - it('should preserve the order of requests', () {
|
| - hb.when('GET', '/url1').respond(200, 'first');
|
| - hb.when('GET', '/url2').respond(201, 'second');
|
| -
|
| - hb('GET', '/url2', null, callback);
|
| - hb('GET', '/url1', null, callback);
|
| -
|
| - hb.flush();
|
| -
|
| - expect(callback.callCount).toBe(2);
|
| - expect(callback.argsForCall[0]).toEqual([201, 'second', '']);
|
| - expect(callback.argsForCall[1]).toEqual([200, 'first', '']);
|
| - });
|
| -
|
| -
|
| - describe('respond()', () {
|
| - it('should take values', () {
|
| - hb.expect('GET', '/url1').respond(200, 'first', {'header': 'val'});
|
| - hb('GET', '/url1', null, callback);
|
| - hb.flush();
|
| -
|
| - expect(callback).toHaveBeenCalledOnceWith(200, 'first', "header: val");
|
| - });
|
| -
|
| - it('should take function', () {
|
| - hb.expect('GET', '/some').respond((m, u, d, h) {
|
| - return [301, m + u + ';' + d + ';a=' + h['a'], {'Connection': 'keep-alive'}];
|
| - });
|
| -
|
| - hb('GET', '/some', 'data', callback, {'a': 'b'});
|
| - hb.flush();
|
| -
|
| - expect(callback).toHaveBeenCalledOnceWith(301, 'GET/some;data;a=b', 'Connection: keep-alive');
|
| - });
|
| -
|
| - it('should default status code to 200', () {
|
| - callback.andCallFake((status, response) {
|
| - expect(status).toBe(200);
|
| - expect(response).toBe('some-data');
|
| - });
|
| -
|
| - hb.expect('GET', '/url1').respond('some-data');
|
| - hb.expect('GET', '/url2').respond('some-data', {'X-Header': 'true'});
|
| - hb('GET', '/url1', null, callback);
|
| - hb('GET', '/url2', null, callback);
|
| - hb.flush();
|
| - expect(callback).toHaveBeenCalled();
|
| - expect(callback.callCount).toBe(2);
|
| - });
|
| -
|
| -
|
| - it('should default response headers to ""', () {
|
| - hb.expect('GET', '/url1').respond(200, 'first');
|
| - hb.expect('GET', '/url2').respond('second');
|
| -
|
| - hb('GET', '/url1', null, callback);
|
| - hb('GET', '/url2', null, callback);
|
| -
|
| - hb.flush();
|
| -
|
| - expect(callback.callCount).toBe(2);
|
| - expect(callback.argsForCall[0]).toEqual([200, 'first', '']);
|
| - expect(callback.argsForCall[1]).toEqual([200, 'second', '']);
|
| - });
|
| - });
|
| -
|
| -
|
| - describe('expect()', () {
|
| - it('should require specified order', () {
|
| - hb.expect('GET', '/url1').respond(200, '');
|
| - hb.expect('GET', '/url2').respond(200, '');
|
| -
|
| - expect(() {
|
| - hb('GET', '/url2', null, noop, {});
|
| - }).toThrow('Unexpected request: GET /url2\nExpected GET /url1');
|
| - });
|
| -
|
| -
|
| - it('should have precedence over when()', () {
|
| - callback.andCallFake((status, response) {
|
| - expect(status).toBe(299);
|
| - expect(response).toBe('expect');
|
| - });
|
| -
|
| - hb.when('GET', '/url').respond(200, 'when');
|
| - hb.expect('GET', '/url').respond(299, 'expect');
|
| -
|
| - hb('GET', '/url', null, callback, null);
|
| - hb.flush();
|
| - expect(callback).toHaveBeenCalledOnce();
|
| - });
|
| -
|
| -
|
| - it('should throw exception when only headers differs from expectation', () {
|
| - hb.when('GET', '/match').respond(200, '', {});
|
| - hb.expect('GET', '/match', null, {'Content-Type': 'application/json'}).respond(200, '', {});
|
| -
|
| - expect(() {
|
| - hb('GET', '/match', null, noop, {});
|
| - }).toThrow('Expected GET /match with different headers\n' +
|
| - 'EXPECTED: {"Content-Type":"application/json"}\nGOT: {}');
|
| - });
|
| -
|
| -
|
| - it('should throw exception when only data differs from expectation', () {
|
| - hb.when('GET', '/match').respond(200, '', {});
|
| - hb.expect('GET', '/match', 'some-data').respond(200, '', {});
|
| -
|
| - expect(() {
|
| - hb('GET', '/match', 'different', noop, null);
|
| - }).toThrow('Expected GET /match with different data\n' +
|
| - 'EXPECTED: some-data\nGOT: different');
|
| - });
|
| -
|
| -
|
| - it("should use when's respond() when no expect() respond is defined", () {
|
| - callback.andCallFake((status, response) {
|
| - expect(status).toBe(201);
|
| - expect(response).toBe('data');
|
| - });
|
| -
|
| - hb.when('GET', '/some').respond(201, 'data');
|
| - hb.expect('GET', '/some');
|
| - hb('GET', '/some', null, callback);
|
| - hb.flush();
|
| -
|
| - expect(callback).toHaveBeenCalled();
|
| - expect(() { hb.verifyNoOutstandingExpectation(); }).not.toThrow();
|
| - });
|
| - });
|
| -
|
| -
|
| - describe('flush()', () {
|
| - it('flush() should flush requests fired during callbacks', () {
|
| - hb.when('GET', '/some').respond(200, '');
|
| - hb.when('GET', '/other').respond(200, '');
|
| - hb('GET', '/some', null, (_, __) {
|
| - hb('GET', '/other', null, callback);
|
| - });
|
| -
|
| - hb.flush();
|
| - expect(callback).toHaveBeenCalled();
|
| - });
|
| -
|
| -
|
| - it('should flush given number of pending requests', () {
|
| - hb.when('GET').respond(200, '');
|
| - hb('GET', '/some', null, callback);
|
| - hb('GET', '/some', null, callback);
|
| - hb('GET', '/some', null, callback);
|
| -
|
| - hb.flush(2);
|
| - expect(callback).toHaveBeenCalled();
|
| - expect(callback.callCount).toBe(2);
|
| - });
|
| -
|
| -
|
| - it('should throw exception when flushing more requests than pending', () {
|
| - hb.when('GET').respond(200, '');
|
| - hb('GET', '/url', null, callback);
|
| -
|
| - expect(() {hb.flush(2);}).toThrow('No more pending request to flush !');
|
| - expect(callback).toHaveBeenCalledOnce();
|
| - });
|
| -
|
| -
|
| - it('should throw exception when no request to flush', () {
|
| - expect(() {hb.flush();}).toThrow('No pending request to flush !');
|
| -
|
| - hb.when('GET').respond(200, '');
|
| - hb('GET', '/some', null, callback);
|
| - hb.flush();
|
| -
|
| - expect(() {hb.flush();}).toThrow('No pending request to flush !');
|
| - });
|
| -
|
| -
|
| - it('should throw exception if not all expectations satisfied', () {
|
| - hb.expect('GET', '/url1').respond();
|
| - hb.expect('GET', '/url2').respond();
|
| -
|
| - hb('GET', '/url1', null, noop);
|
| - expect(() {hb.flush();}).toThrow('Unsatisfied requests: GET /url2');
|
| - });
|
| - });
|
| -
|
| -
|
| - it('should abort requests when timeout promise resolves', () {
|
| - hb.expect('GET', '/url1').respond(200);
|
| -
|
| - var canceler, then = jasmine.createSpy('then').andCallFake((fn) {
|
| - canceler = fn;
|
| - });
|
| -
|
| - hb('GET', '/url1', null, callback, null, new _Chain(then: then));
|
| - expect(canceler is Function).toBe(true);
|
| -
|
| - canceler(); // simulate promise resolution
|
| -
|
| - expect(callback).toHaveBeenCalledWith(-1, null, '');
|
| - hb.verifyNoOutstandingExpectation();
|
| - hb.verifyNoOutstandingRequest();
|
| - });
|
| -
|
| -
|
| - it('should throw an exception if no response defined', () {
|
| - hb.when('GET', '/test');
|
| - expect(() {
|
| - hb('GET', '/test', null, callback);
|
| - }).toThrow('No response defined !');
|
| - });
|
| -
|
| -
|
| - it('should throw an exception if no response for exception and no definition', () {
|
| - hb.expect('GET', '/url');
|
| - expect(() {
|
| - hb('GET', '/url', null, callback);
|
| - }).toThrow('No response defined !');
|
| - });
|
| -
|
| -
|
| - it('should respond undefined when JSONP method', () {
|
| - hb.when('JSONP', '/url1').respond(200);
|
| - hb.expect('JSONP', '/url2').respond(200);
|
| -
|
| - expect(hb('JSONP', '/url1')).toBeNull();
|
| - expect(hb('JSONP', '/url2')).toBeNull();
|
| - });
|
| -
|
| -
|
| - describe('verifyExpectations', () {
|
| -
|
| - it('should throw exception if not all expectations were satisfied', () {
|
| - hb.expect('POST', '/u1', 'ddd').respond(201, '', {});
|
| - hb.expect('GET', '/u2').respond(200, '', {});
|
| - hb.expect('POST', '/u3').respond(201, '', {});
|
| -
|
| - hb('POST', '/u1', 'ddd', noop, {});
|
| -
|
| - expect(() {hb.verifyNoOutstandingExpectation();}).
|
| - toThrow('Unsatisfied requests: GET /u2, POST /u3');
|
| - });
|
| -
|
| -
|
| - it('should do nothing when no expectation', () {
|
| - hb.when('DELETE', '/some').respond(200, '');
|
| -
|
| - expect(() {hb.verifyNoOutstandingExpectation();}).not.toThrow();
|
| - });
|
| -
|
| -
|
| - it('should do nothing when all expectations satisfied', () {
|
| - hb.expect('GET', '/u2').respond(200, '', {});
|
| - hb.expect('POST', '/u3').respond(201, '', {});
|
| - hb.when('DELETE', '/some').respond(200, '');
|
| -
|
| - hb('GET', '/u2');
|
| - hb('POST', '/u3');
|
| -
|
| - expect(() {hb.verifyNoOutstandingExpectation();}).not.toThrow();
|
| - });
|
| - });
|
| -
|
| - describe('verifyRequests', () {
|
| -
|
| - it('should throw exception if not all requests were flushed', () {
|
| - hb.when('GET').respond(200);
|
| - hb('GET', '/some', null, noop, {});
|
| -
|
| - expect(() {
|
| - hb.verifyNoOutstandingRequest();
|
| - }).toThrow('Unflushed requests: 1');
|
| - });
|
| - });
|
| -
|
| -
|
| - describe('resetExpectations', () {
|
| -
|
| - it('should remove all expectations', () {
|
| - hb.expect('GET', '/u2').respond(200, '', {});
|
| - hb.expect('POST', '/u3').respond(201, '', {});
|
| - hb.resetExpectations();
|
| -
|
| - expect(() {hb.verifyNoOutstandingExpectation();}).not.toThrow();
|
| - });
|
| -
|
| -
|
| - it('should remove all pending responses', () {
|
| - var cancelledClb = jasmine.createSpy('cancelled');
|
| -
|
| - hb.expect('GET', '/url').respond(200, '');
|
| - hb('GET', '/url', null, cancelledClb);
|
| - hb.resetExpectations();
|
| -
|
| - hb.expect('GET', '/url').respond(300, '');
|
| - hb('GET', '/url', null, callback, {});
|
| - hb.flush();
|
| -
|
| - expect(callback).toHaveBeenCalledOnce();
|
| - expect(cancelledClb).not.toHaveBeenCalled();
|
| - });
|
| -
|
| -
|
| - it('should not remove definitions', () {
|
| - var cancelledClb = jasmine.createSpy('cancelled');
|
| -
|
| - hb.when('GET', '/url').respond(200, 'success');
|
| - hb('GET', '/url', null, cancelledClb);
|
| - hb.resetExpectations();
|
| -
|
| - hb('GET', '/url', null, callback, {});
|
| - hb.flush();
|
| -
|
| - expect(callback).toHaveBeenCalledOnce();
|
| - expect(cancelledClb).not.toHaveBeenCalled();
|
| - });
|
| - });
|
| -
|
| -
|
| - describe('expect/when shortcuts', () {
|
| - [[(x) => hb.expectGET(x), 'GET'],
|
| - [(x) => hb.expectPOST(x), 'POST'],
|
| - [(x) => hb.expectPUT(x), 'PUT'],
|
| - [(x) => hb.expectPATCH(x), 'PATCH'],
|
| - [(x) => hb.expectDELETE(x), 'DELETE'],
|
| - [(x) => hb.expectJSONP(x), 'JSONP'],
|
| - [(x) => hb.whenGET(x), 'GET'],
|
| - [(x) => hb.whenPOST(x), 'POST'],
|
| - [(x) => hb.whenPUT(x), 'PUT'],
|
| - [(x) => hb.whenPATCH(x), 'PATCH'],
|
| - [(x) => hb.whenDELETE(x), 'DELETE'],
|
| - [(x) => hb.whenJSONP(x), 'JSONP']
|
| - ].forEach((step) {
|
| - var shortcut = step[0], method = step[1];
|
| - it('should provide $shortcut shortcut method', () {
|
| - shortcut('/foo').respond('bar');
|
| - hb(method, '/foo', undefined, callback);
|
| - hb.flush();
|
| - expect(callback).toHaveBeenCalledOnceWith(200, 'bar', '');
|
| - });
|
| - });
|
| - });
|
| -
|
| -
|
| - describe('MockHttpExpectation', () {
|
| -
|
| - it('should accept url as regexp', () {
|
| - var exp = new MockHttpExpectation('GET', new RegExp('^\/x'));
|
| -
|
| - expect(exp.match('GET', '/x')).toBe(true);
|
| - expect(exp.match('GET', '/xxx/x')).toBe(true);
|
| - expect(exp.match('GET', 'x')).toBe(false);
|
| - expect(exp.match('GET', 'a/x')).toBe(false);
|
| - });
|
| -
|
| -
|
| - it('should accept data as regexp', () {
|
| - var exp = new MockHttpExpectation('POST', '/url', new RegExp('\{.*?\}'));
|
| -
|
| - expect(exp.match('POST', '/url', '{"a": "aa"}')).toBe(true);
|
| - expect(exp.match('POST', '/url', '{"one": "two"}')).toBe(true);
|
| - expect(exp.match('POST', '/url', '{"one"')).toBe(false);
|
| - });
|
| -
|
| -
|
| - it('should accept headers as function', () {
|
| - var exp = new MockHttpExpectation('GET', '/url', undefined, (h) {
|
| - return h['Content-Type'] == 'application/json';
|
| - });
|
| -
|
| - expect(exp.matchHeaders({})).toBe(false);
|
| - expect(exp.matchHeaders({'Content-Type': 'application/json', 'X-Another': 'true'})).toBe(true);
|
| - });
|
| - });
|
| -});
|
|
|