gecko/services/sync/tests/unit/test_clients_escape.js
Edward Lee b0c3b9005e Bug 515676 - Allow giving objects to PUT/POST without Filters to avoid stringify([parse(stringify(stringify(obj)))])
Get rid of Filters and automatically JSON.stringify PUT/POST data that aren't strings, so plain Records can be passed in to PUT and POST. This leverages toJSON of Records to provide an object that can be serialized. Fix up client record serialize/deserialize to still escape/unescape non-ASCII.
2009-09-10 11:05:13 -07:00

36 lines
1.1 KiB
JavaScript

Cu.import("resource://weave/engines/clientData.js");
function run_test() {
_("Test that serializing client records results in uploadable ascii");
Clients.setInfo("ascii", {
name: "wéävê"
});
_("Make sure we have the expected record");
let record = Clients._store.createRecord("ascii");
do_check_eq(record.id, "ascii");
do_check_eq(record.payload.name, "wéävê");
let serialized = JSON.stringify(record);
let checkCount = 0;
_("Checking for all ASCII:", serialized);
Array.forEach(serialized, function(ch) {
let code = ch.charCodeAt(0);
_("Checking asciiness of '", ch, "'=", code);
do_check_true(code < 128);
checkCount++;
});
_("Processed", checkCount, "characters out of", serialized.length);
do_check_eq(checkCount, serialized.length);
_("Making sure the record still looks like it did before");
do_check_eq(record.id, "ascii");
do_check_eq(record.payload.name, "wéävê");
_("Sanity check that creating the record also gives the same");
record = Clients._store.createRecord("ascii");
do_check_eq(record.id, "ascii");
do_check_eq(record.payload.name, "wéävê");
}