--- a/services/sync/modules/sharing.js
+++ b/services/sync/modules/sharing.js
@@ -36,16 +36,17 @@
EXPORTED_SYMBOLS = ["Sharing"];
const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
Cu.import("resource://weave/async.js");
+Cu.import("resource://weave/identity.js");
Function.prototype.async = Async.sugar;
function Api(dav) {
this._dav = dav;
}
Api.prototype = {
@@ -53,26 +54,31 @@ Api.prototype = {
this._shareGenerator.async(this,
onComplete,
path,
users);
},
_shareGenerator: function Api__shareGenerator(path, users) {
let self = yield;
+ let id = ID.get(this._dav.identity);
this._dav.defaultPrefix = "";
let cmd = {"version" : 1,
"directory" : path,
"share_to_users" : users};
let jsonSvc = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON);
let json = jsonSvc.encode(cmd);
- this._dav.POST("share/", "cmd=" + escape(json), self.cb);
+ this._dav.POST("share/",
+ ("cmd=" + escape(json) +
+ "&uid=" + escape(id.username) +
+ "&password=" + escape(id.password)),
+ self.cb);
let xhr = yield;
let retval;
if (xhr.status == 200) {
if (xhr.responseText == "OK") {
retval = {wasSuccessful: true};
} else {
--- a/services/sync/tests/unit/test_sharing.js
+++ b/services/sync/tests/unit/test_sharing.js
@@ -1,16 +1,23 @@
Cu.import("resource://weave/sharing.js");
Cu.import("resource://weave/util.js");
+Cu.import("resource://weave/identity.js");
function runTestGenerator() {
let self = yield;
+ ID.set("blarg", new Identity("realm", "myusername", "mypass"));
let fakeDav = {
+ identity: "blarg",
POST: function fakeDav_POST(url, data, callback) {
+ do_check_true(data.indexOf("uid=myusername") != -1);
+ do_check_true(data.indexOf("password=mypass") != -1);
+ do_check_true(data.indexOf("/fake/dir") != -1);
+ do_check_true(data.indexOf("johndoe") != -1);
let result = {status: 200, responseText: "OK"};
Utils.makeTimerForCall(function() { callback(result); });
}
};
let api = new Sharing.Api(fakeDav);
api.shareWithUsers("/fake/dir", ["johndoe"], self.cb);
let result = yield;