aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--caldav.js28
-rw-r--r--lib/caldav/request/abstract.js3
-rw-r--r--lib/caldav/request/errors.js8
-rw-r--r--lib/caldav/xhr.js13
-rw-r--r--test/caldav/request/abstract_test.js4
-rw-r--r--test/caldav/xhr_test.js101
-rw-r--r--test/helper.js1
7 files changed, 19 insertions, 139 deletions
diff --git a/caldav.js b/caldav.js
index 32cfb34..6975f65 100644
--- a/caldav.js
+++ b/caldav.js
@@ -2040,15 +2040,6 @@ function write (chunk) {
},
/**
- * Aborts request if its in progress.
- */
- abort: function abort() {
- if (this.xhr) {
- this.xhr.abort();
- }
- },
-
- /**
* @param {String} user basic auth user.
* @param {String} password basic auth pass.
* @return {String} basic auth token.
@@ -2078,8 +2069,6 @@ function write (chunk) {
xhr = new this.xhrClass();
}
- this.xhr = xhr;
-
// This hack is in place due to some platform
// bug in gecko when using mozSystem xhr
// the credentials only seem to work as expected
@@ -2136,6 +2125,8 @@ function write (chunk) {
this.waiting = true;
xhr.send(this._seralize());
+
+ return xhr;
}
};
@@ -2602,26 +2593,26 @@ function write (chunk) {
default:
message = this.code;
}
-
Error.call(this, message);
}
+
CaldavHttpError.prototype = {
__proto__: Error.prototype,
constructor: CaldavHttpError
}
-
+
// Unauthenticated error for
// Google Calendar
function UnauthenticatedError() {
var message = "Wrong username or/and password";
Error.call(this, message);
}
-
+
UnauthenticatedError.prototype = {
__proto__: Error.prototype,
constructor: UnauthenticatedError
}
-
+
module.exports = {
CaldavHttpError: CaldavHttpError,
UnauthenticatedError: UnauthenticatedError
@@ -2700,8 +2691,7 @@ function write (chunk) {
};
// in the future we may stream data somehow
- req.send(function xhrResult() {
- var xhr = req.xhr;
+ req.send(function xhrResult(err, xhr) {
if (xhr.status > 199 && xhr.status < 300) {
// success
self.sax.close();
@@ -3021,8 +3011,7 @@ function write (chunk) {
content += this.filter.toString();
}
- var out = this.template.render(content);
- return out;
+ return this.template.render(content);
}
};
@@ -3110,6 +3099,7 @@ function write (chunk) {
if (!principal) {
principal = findProperty('principal-URL', data, true);
}
+
if ('unauthenticated' in principal) {
callback(new Errors.UnauthenticatedError());
} else if (principal.href){
diff --git a/lib/caldav/request/abstract.js b/lib/caldav/request/abstract.js
index eb6297b..7116217 100644
--- a/lib/caldav/request/abstract.js
+++ b/lib/caldav/request/abstract.js
@@ -65,8 +65,7 @@
};
// in the future we may stream data somehow
- req.send(function xhrResult() {
- var xhr = req.xhr;
+ req.send(function xhrResult(err, xhr) {
if (xhr.status > 199 && xhr.status < 300) {
// success
self.sax.close();
diff --git a/lib/caldav/request/errors.js b/lib/caldav/request/errors.js
index c3c166e..700cfba 100644
--- a/lib/caldav/request/errors.js
+++ b/lib/caldav/request/errors.js
@@ -16,26 +16,26 @@
default:
message = this.code;
}
-
Error.call(this, message);
}
+
CaldavHttpError.prototype = {
__proto__: Error.prototype,
constructor: CaldavHttpError
}
-
+
// Unauthenticated error for
// Google Calendar
function UnauthenticatedError() {
var message = "Wrong username or/and password";
Error.call(this, message);
}
-
+
UnauthenticatedError.prototype = {
__proto__: Error.prototype,
constructor: UnauthenticatedError
}
-
+
module.exports = {
CaldavHttpError: CaldavHttpError,
UnauthenticatedError: UnauthenticatedError
diff --git a/lib/caldav/xhr.js b/lib/caldav/xhr.js
index abeae79..230f656 100644
--- a/lib/caldav/xhr.js
+++ b/lib/caldav/xhr.js
@@ -58,15 +58,6 @@
},
/**
- * Aborts request if its in progress.
- */
- abort: function abort() {
- if (this.xhr) {
- this.xhr.abort();
- }
- },
-
- /**
* @param {String} user basic auth user.
* @param {String} password basic auth pass.
* @return {String} basic auth token.
@@ -96,8 +87,6 @@
xhr = new this.xhrClass();
}
- this.xhr = xhr;
-
// This hack is in place due to some platform
// bug in gecko when using mozSystem xhr
// the credentials only seem to work as expected
@@ -154,6 +143,8 @@
this.waiting = true;
xhr.send(this._seralize());
+
+ return xhr;
}
};
diff --git a/test/caldav/request/abstract_test.js b/test/caldav/request/abstract_test.js
index ee70b67..21bde48 100644
--- a/test/caldav/request/abstract_test.js
+++ b/test/caldav/request/abstract_test.js
@@ -79,11 +79,10 @@ suite('caldav/request/abstract.js', function() {
done();
});
-
xhr = getXhr();
xhr.respond('NOT XML <div>', 500);
});
-
+
test('on response', function() {
assert.equal(calledWith[0].code, 500);
});
@@ -110,7 +109,6 @@ suite('caldav/request/abstract.js', function() {
item: { value: 'value' }
}
});
- assert.equal(calledWith[2].xhr, xhr);
});
});
});
diff --git a/test/caldav/xhr_test.js b/test/caldav/xhr_test.js
index fdcbe37..aa9b4f2 100644
--- a/test/caldav/xhr_test.js
+++ b/test/caldav/xhr_test.js
@@ -36,16 +36,6 @@ suite('webacls/xhr', function() {
teardown(function() {
Xhr.prototype.globalXhrOptions = old;
});
-
- test('constructed xhr', function() {
- var subject = new Xhr({
- method: 'POST',
- xhrClass: FakeXhr
- });
- subject.send(function() {});
- assert.ok(subject.xhr);
- assert.equal(subject.xhr.constructorArgs[0], opts);
- });
});
});
@@ -64,33 +54,6 @@ suite('webacls/xhr', function() {
);
});
- suite('.abort', function() {
- suite('when there is an xhr object', function() {
- var aborted;
-
- setup(function() {
- aborted = false;
- subject.xhr = {
- abort: function() {
- aborted = true;
- }
- };
- subject.abort();
- });
-
- test('should call abort on the xhr object', function() {
- assert.equal(aborted, true);
- });
- });
-
- suite('when there is no xhr object', function() {
- test('should not fail', function() {
- subject.xhr = null;
- subject.abort();
- });
- });
- });
-
suite('.send', function() {
var data = '<html></html>',
@@ -108,65 +71,10 @@ suite('webacls/xhr', function() {
subject = new Xhr(options);
}
- function opensXHR() {
- test('should create xhr', function() {
- assert.instanceOf(subject.xhr, FakeXhr);
- });
-
- test('should set headers', function() {
- assert.deepEqual(subject.xhr.headers, subject.headers);
- });
-
- test('should parse and send data', function() {
- assert.deepEqual(subject.xhr.sendArgs[0], data);
- });
-
- test('should open xhr', function() {
- assert.deepEqual(subject.xhr.openArgs, [
- subject.method,
- subject.url,
- subject.async,
- subject.user,
- subject.password
- ]);
- });
- }
-
setup(function() {
responseXhr = null;
});
- test('with mozSystem', function() {
- if (typeof(window) === 'undefined')
- return;
-
- var user = 'user';
- var password = 'pass';
- var url = '/foo';
-
- request({
- globalXhrOptions: { mozSystem: true },
- user: user,
- password: password,
- method: 'GET',
- url: url
- });
-
-
- subject.send(function() {});
- var args = subject.xhr.openArgs;
-
- assert.deepEqual(
- args,
- ['GET', url, true]
- );
-
- assert.equal(
- subject.xhr.headers['Authorization'],
- subject._credentials(user, password)
- );
- });
-
suite('when xhr is a success and responds /w data', function() {
var response = '<html></html>', cb;
@@ -178,12 +86,11 @@ suite('webacls/xhr', function() {
method: 'PUT'
});
cb = callback.bind(this, done);
- subject.send(cb);
+ xhr = subject.send(cb);
//should be waiting inbetween requests
assert.equal(subject.waiting, true);
- xhr = subject.xhr;
xhr.readyState = 4;
xhr.responseText = response;
xhr.onreadystatechange();
@@ -192,12 +99,6 @@ suite('webacls/xhr', function() {
test('should not be waiting after response', function() {
assert.equal(subject.waiting, false);
});
-
- test('should send callback parsed data and xhr', function() {
- assert.equal(responseXhr, subject.xhr);
- });
-
- opensXHR();
});
});
diff --git a/test/helper.js b/test/helper.js
index 64346bd..df0c6d9 100644
--- a/test/helper.js
+++ b/test/helper.js
@@ -173,6 +173,7 @@
testSupport.lib('sax');
testSupport.lib('sax/base');
testSupport.lib('sax/dav_response');
+ testSupport.lib('request/errors');
testSupport.lib('request/abstract');
testSupport.lib('template');
testSupport.helper('fake_xhr');