aboutsummaryrefslogtreecommitdiffstats
path: root/test/service/xhrSpec.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/service/xhrSpec.js')
-rw-r--r--test/service/xhrSpec.js271
1 files changed, 0 insertions, 271 deletions
diff --git a/test/service/xhrSpec.js b/test/service/xhrSpec.js
deleted file mode 100644
index 83c5f93f..00000000
--- a/test/service/xhrSpec.js
+++ /dev/null
@@ -1,271 +0,0 @@
-'use strict';
-
-describe('$xhr', function() {
-
- var log;
-
- beforeEach(inject(function($provide) {
- log = '';
- $provide.value('$xhr.error', jasmine.createSpy('xhr.error'));
- $provide.factory('$xhrError', ['$xhr.error', identity]);
- }));
-
-
- function callback(code, response) {
- log = log + '{code=' + code + '; response=' + toJson(response) + '}';
- }
-
-
- it('should forward the request to $browser and decode JSON', inject(function($browser, $xhr) {
- $browser.xhr.expectGET('/reqGET').respond('first');
- $browser.xhr.expectGET('/reqGETjson').respond('["second"]');
- $browser.xhr.expectPOST('/reqPOST', {post:'data'}).respond('third');
-
- $xhr('GET', '/reqGET', null, callback);
- $xhr('GET', '/reqGETjson', null, callback);
- $xhr('POST', '/reqPOST', {post:'data'}, callback);
-
- $browser.xhr.flush();
-
- expect(log).toEqual(
- '{code=200; response="third"}' +
- '{code=200; response=["second"]}' +
- '{code=200; response="first"}');
- }));
-
- it('should allow all 2xx requests', inject(function($browser, $xhr) {
- $browser.xhr.expectGET('/req1').respond(200, '1');
- $xhr('GET', '/req1', null, callback);
- $browser.xhr.flush();
-
- $browser.xhr.expectGET('/req2').respond(299, '2');
- $xhr('GET', '/req2', null, callback);
- $browser.xhr.flush();
-
- expect(log).toEqual(
- '{code=200; response="1"}' +
- '{code=299; response="2"}');
- }));
-
-
- it('should handle exceptions in callback', inject(function($browser, $xhr, $log) {
- $browser.xhr.expectGET('/reqGET').respond('first');
- $xhr('GET', '/reqGET', null, function() { throw "MyException"; });
- $browser.xhr.flush();
-
- expect($log.error.logs.shift()).toContain('MyException');
- }));
-
-
- it('should automatically deserialize json objects', inject(function($browser, $xhr) {
- var response;
-
- $browser.xhr.expectGET('/foo').respond('{"foo":"bar","baz":23}');
- $xhr('GET', '/foo', function(code, resp) {
- response = resp;
- });
- $browser.xhr.flush();
-
- expect(response).toEqual({foo:'bar', baz:23});
- }));
-
-
- it('should automatically deserialize json arrays', inject(function($browser, $xhr) {
- var response;
-
- $browser.xhr.expectGET('/foo').respond('[1, "abc", {"foo":"bar"}]');
- $xhr('GET', '/foo', function(code, resp) {
- response = resp;
- });
- $browser.xhr.flush();
-
- expect(response).toEqual([1, 'abc', {foo:'bar'}]);
- }));
-
-
- it('should automatically deserialize json with security prefix', inject(function($browser, $xhr) {
- var response;
-
- $browser.xhr.expectGET('/foo').respond(')]}\',\n[1, "abc", {"foo":"bar"}]');
- $xhr('GET', '/foo', function(code, resp) {
- response = resp;
- });
- $browser.xhr.flush();
-
- expect(response).toEqual([1, 'abc', {foo:'bar'}]);
- }));
-
- it('should call $xhr.error on error if no error callback provided', inject(function($browser, $xhr, $xhrError) {
- var successSpy = jasmine.createSpy('success');
-
- $browser.xhr.expectGET('/url').respond(500, 'error');
- $xhr('GET', '/url', null, successSpy);
- $browser.xhr.flush();
-
- expect(successSpy).not.toHaveBeenCalled();
- expect($xhrError).toHaveBeenCalledWith(
- {method: 'GET', url: '/url', data: null, success: successSpy},
- {status: 500, body: 'error'}
- );
- }));
-
- it('should call the error callback on error if provided', inject(function($browser, $xhr) {
- var errorSpy = jasmine.createSpy('error'),
- successSpy = jasmine.createSpy('success');
-
- $browser.xhr.expectGET('/url').respond(500, 'error');
- $xhr('GET', '/url', null, successSpy, errorSpy);
- $browser.xhr.flush();
-
- expect(errorSpy).toHaveBeenCalledWith(500, 'error');
- expect(successSpy).not.toHaveBeenCalled();
-
- errorSpy.reset();
- $xhr('GET', '/url', successSpy, errorSpy);
- $browser.xhr.flush();
-
- expect(errorSpy).toHaveBeenCalledWith(500, 'error');
- expect(successSpy).not.toHaveBeenCalled();
- }));
-
- describe('http headers', function() {
-
- describe('default headers', function() {
-
- it('should set default headers for GET request', inject(function($browser, $xhr) {
- var callback = jasmine.createSpy('callback');
-
- $browser.xhr.expectGET('URL', '', {'Accept': 'application/json, text/plain, */*',
- 'X-Requested-With': 'XMLHttpRequest'}).
- respond(234, 'OK');
-
- $xhr('GET', 'URL', callback);
- $browser.xhr.flush();
- expect(callback).toHaveBeenCalled();
- }));
-
-
- it('should set default headers for POST request', inject(function($browser, $xhr) {
- var callback = jasmine.createSpy('callback');
-
- $browser.xhr.expectPOST('URL', 'xx', {'Accept': 'application/json, text/plain, */*',
- 'X-Requested-With': 'XMLHttpRequest',
- 'Content-Type': 'application/x-www-form-urlencoded'}).
- respond(200, 'OK');
-
- $xhr('POST', 'URL', 'xx', callback);
- $browser.xhr.flush();
- expect(callback).toHaveBeenCalled();
- }));
-
-
- it('should set default headers for custom HTTP method', inject(function($browser, $xhr) {
- var callback = jasmine.createSpy('callback');
-
- $browser.xhr.expect('FOO', 'URL', '', {'Accept': 'application/json, text/plain, */*',
- 'X-Requested-With': 'XMLHttpRequest'}).
- respond(200, 'OK');
-
- $xhr('FOO', 'URL', callback);
- $browser.xhr.flush();
- expect(callback).toHaveBeenCalled();
- }));
-
-
- describe('custom headers', function() {
-
- it('should allow appending a new header to the common defaults', inject(function($browser, $xhr) {
- var callback = jasmine.createSpy('callback');
-
- $browser.xhr.expectGET('URL', '', {'Accept': 'application/json, text/plain, */*',
- 'X-Requested-With': 'XMLHttpRequest',
- 'Custom-Header': 'value'}).
- respond(200, 'OK');
-
- $xhr.defaults.headers.common['Custom-Header'] = 'value';
- $xhr('GET', 'URL', callback);
- $browser.xhr.flush();
- expect(callback).toHaveBeenCalled();
- callback.reset();
-
- $browser.xhr.expectPOST('URL', 'xx', {'Accept': 'application/json, text/plain, */*',
- 'X-Requested-With': 'XMLHttpRequest',
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Custom-Header': 'value'}).
- respond(200, 'OK');
-
- $xhr('POST', 'URL', 'xx', callback);
- $browser.xhr.flush();
- expect(callback).toHaveBeenCalled();
- }));
-
-
- it('should allow appending a new header to a method specific defaults', inject(function($browser, $xhr) {
- var callback = jasmine.createSpy('callback');
-
- $browser.xhr.expectGET('URL', '', {'Accept': 'application/json, text/plain, */*',
- 'X-Requested-With': 'XMLHttpRequest',
- 'Content-Type': 'application/json'}).
- respond(200, 'OK');
-
- $xhr.defaults.headers.get['Content-Type'] = 'application/json';
- $xhr('GET', 'URL', callback);
- $browser.xhr.flush();
- expect(callback).toHaveBeenCalled();
- callback.reset();
-
- $browser.xhr.expectPOST('URL', 'x', {'Accept': 'application/json, text/plain, */*',
- 'X-Requested-With': 'XMLHttpRequest',
- 'Content-Type': 'application/x-www-form-urlencoded'}).
- respond(200, 'OK');
-
- $xhr('POST', 'URL', 'x', callback);
- $browser.xhr.flush();
- expect(callback).toHaveBeenCalled();
- }));
-
-
- it('should support overwriting and deleting default headers', inject(function($browser, $xhr) {
- var callback = jasmine.createSpy('callback');
-
- $browser.xhr.expectGET('URL', '', {'Accept': 'application/json, text/plain, */*'}).
- respond(200, 'OK');
-
- //delete a default header
- delete $xhr.defaults.headers.common['X-Requested-With'];
- $xhr('GET', 'URL', callback);
- $browser.xhr.flush();
- expect(callback).toHaveBeenCalled();
- callback.reset();
-
- $browser.xhr.expectPOST('URL', 'xx', {'Accept': 'application/json, text/plain, */*',
- 'Content-Type': 'application/json'}).
- respond(200, 'OK');
-
- //overwrite a default header
- $xhr.defaults.headers.post['Content-Type'] = 'application/json';
- $xhr('POST', 'URL', 'xx', callback);
- $browser.xhr.flush();
- expect(callback).toHaveBeenCalled();
- }));
- });
- });
- });
-
- describe('xsrf', function() {
- it('should copy the XSRF cookie into a XSRF Header', inject(function($browser, $xhr) {
- var code, response;
- $browser.xhr
- .expectPOST('URL', 'DATA', {'X-XSRF-TOKEN': 'secret'})
- .respond(234, 'OK');
- $browser.cookies('XSRF-TOKEN', 'secret');
- $xhr('POST', 'URL', 'DATA', function(c, r){
- code = c;
- response = r;
- });
- $browser.xhr.flush();
- expect(code).toEqual(234);
- expect(response).toEqual('OK');
- }));
- });
-});