Bug 790397: set deleted = false for each record stored via PUT or POST.

This commit is contained in:
Nick Alexander 2012-09-11 17:22:21 -07:00
parent 740b0bbf35
commit 550ab95c83
2 changed files with 45 additions and 0 deletions

View File

@ -249,6 +249,7 @@ ServerBSO.prototype = {
}
this.modified = request.timestamp;
this.deleted = false;
response.setHeader("X-Last-Modified", "" + this.modified, false);
response.setStatusLine(request.httpVersion, code, status);
@ -550,6 +551,7 @@ StorageServerCollection.prototype = {
if (bso) {
bso.payload = record.payload;
bso.modified = timestamp;
bso.deleted = false;
success.push(record.id);
if (record.sortindex) {

View File

@ -592,3 +592,46 @@ add_test(function test_x_num_records() {
});
});
});
add_test(function test_put_delete_put() {
_("Bug 790397: Ensure BSO deleted flag is reset on PUT.");
let server = new StorageServer();
server.registerUser("123", "password");
server.createContents("123", {
test: {bso: {foo: "bar"}}
});
server.startSynchronous(PORT);
_("Ensure we can PUT an existing record.");
let request1 = localRequest("/2.0/123/storage/test/bso", "123", "password");
request1.setHeader("Content-Type", "application/json");
let payload1 = JSON.stringify({"payload": "foobar"});
let error1 = doPutRequest(request1, payload1);
do_check_eq(null, error1);
do_check_eq(request1.response.status, 204);
_("Ensure we can DELETE it.");
let request2 = localRequest("/2.0/123/storage/test/bso", "123", "password");
let error2 = doDeleteRequest(request2);
do_check_eq(error2, null);
do_check_eq(request2.response.status, 204);
do_check_false("content-type" in request2.response.headers);
_("Ensure we can PUT a previously deleted record.");
let request3 = localRequest("/2.0/123/storage/test/bso", "123", "password");
request3.setHeader("Content-Type", "application/json");
let payload3 = JSON.stringify({"payload": "foobar"});
let error3 = doPutRequest(request3, payload3);
do_check_eq(null, error3);
do_check_eq(request3.response.status, 201);
_("Ensure we can GET the re-uploaded record.");
let request4 = localRequest("/2.0/123/storage/test/bso", "123", "password");
let error4 = doGetRequest(request4);
do_check_eq(error4, null);
do_check_eq(request4.response.status, 200);
do_check_eq(request4.response.headers["content-type"], "application/json");
server.stop(run_next_test);
});