cordova-plugin-nativestorage
Version:
Native storage of variables in Android, iOS and Windows
419 lines (402 loc) • 12.7 kB
JavaScript
/* jshint jasmine: true */
/* global NativeStorage */
exports.defineAutoTests = function() {
describe('Write/Read/Delete Tests', function() {
it("checks if th plugin is available", function() {
expect(NativeStorage).toEqual(jasmine.anything());
});
it('Booleans', function(done) {
var dummyData = true;
NativeStorage.set("dummy_ref_bool",
dummyData,
function(result) {
NativeStorage.getBoolean("dummy_ref_bool",
function(result) {
expect(result).toEqual(dummyData);
NativeStorage.remove("dummy_ref_bool", function() {
done();
}, function(e) {
fail("Delete Boolean Failed");
});
},
function(e) {
fail("Read Boolean Failed");
});
},
function(e) {
fail("Write Boolean Failed");
});
});
it('Ints', function(done) {
var dummyData = 154243;
NativeStorage.set("dummy_ref_int",
dummyData,
function(result) {
NativeStorage.getInt("dummy_ref_int",
function(result) {
expect(result).toEqual(dummyData);
NativeStorage.remove("dummy_ref_int", function() {
done();
}, function(e) {
fail("Delete Boolean Failed");
});
},
function(e) {
fail("Read Int Failed");
});
},
function(e) {
fail("Write Int Failed");
});
});
it('Doubles', function(done) {
var dummyData = 12327.023;
NativeStorage.set("dummy_ref_double",
dummyData,
function(result) {
NativeStorage.getDouble("dummy_ref_double",
function(result) {
expect(result).toEqual(dummyData);
NativeStorage.remove("dummy_ref_double", function() {
done();
}, function(e) {
fail("Delete Boolean Failed");
});
},
function(e) {
fail("Read Double Failed");
});
},
function(e) {
fail("Write String Failed");
});
});
it('Strings', function(done) {
var dummyData = "sdadadfsjdhbfwehfnciu7834fybzx2lnqo8japf;ckamicoa.c.a/";
NativeStorage.set("dummy_ref_str",
dummyData,
function(result) {
NativeStorage.getString("dummy_ref_str",
function(result) {
expect(result).toEqual(dummyData);
NativeStorage.remove("dummy_ref_str", function() {
done();
}, function(e) {
fail("Delete Boolean Failed");
});
},
function(e) {
fail("Read String Failed");
});
},
function(e) {
fail("Write String Failed");
});
});
it('Objects', function(done) {
var dummyData = {
data1: "",
data2: 2,
data3: 3.0
};
NativeStorage.set("dummy_ref_obj",
dummyData,
function(result) {
NativeStorage.getObject("dummy_ref_obj",
function(result) {
expect(result).toEqual(dummyData);
NativeStorage.remove("dummy_ref_obj", function() {
done();
}, function(e) {
fail("Delete Boolean Failed");
});
},
function(e) {
fail("Read Object Failed");
});
},
function(e) {
fail("Write Object Failed");
});
});
});
/* NEW API test */
describe('Write/Read/Delete Tests new API', function() {
it("Plugin available", function() {
expect(NativeStorage).toEqual(jasmine.anything());
});
it('Booleans', function(done) {
var dummyData = true;
NativeStorage.setItem("dummy_ref_bool_new",
dummyData,
function(result) {
NativeStorage.getItem("dummy_ref_bool_new",
function(result) {
expect(result).toEqual(dummyData);
NativeStorage.remove("dummy_ref_bool_new", function() {
done();
}, function(e) {
fail("Delete Boolean Failed");
});
},
function(e) {
fail("Read Boolean Failed");
});
},
function(e) {
fail("Write Boolean Failed");
});
});
it('Ints', function(done) {
var dummyData = 154243;
NativeStorage.setItem("dummy_ref_int_new",
dummyData,
function(result) {
NativeStorage.getItem("dummy_ref_int_new",
function(result) {
expect(result).toEqual(dummyData);
NativeStorage.remove("dummy_ref_int_new", function() {
done();
}, function(e) {
fail("Delete Boolean Failed");
});
},
function(e) {
fail("Read Int Failed");
});
},
function(e) {
fail("Write Int Failed");
});
});
it('Doubles', function(done) {
var dummyData = 12327.023;
NativeStorage.setItem("dummy_ref_double_new",
dummyData,
function(result) {
NativeStorage.getItem("dummy_ref_double_new",
function(result) {
expect(result).toEqual(dummyData);
NativeStorage.remove("dummy_ref_double_new", function() {
done();
}, function(e) {
fail("Delete Boolean Failed");
});
},
function(e) {
fail("Read Double Failed");
});
},
function(e) {
fail("Write String Failed");
});
});
it('Strings', function(done) {
var dummyData = "sdadadfsjdhbfwehfnciu7834fybzx2lnqo8japf;ckamicoa.c.a/";
NativeStorage.setItem("dummy_ref_str_new",
dummyData,
function(result) {
NativeStorage.getItem("dummy_ref_str_new",
function(result) {
expect(result).toEqual(dummyData);
NativeStorage.remove("dummy_ref_str_new", function() {
done();
}, function(e) {
fail("Delete Boolean Failed");
});
},
function(e) {
fail("Read String Failed");
});
},
function(e) {
fail("Write String Failed");
});
});
it('Objects', function(done) {
var dummyData = {
data1: "",
data2: 2,
data3: 3.0
};
NativeStorage.setItem("dummy_ref_obj_new",
dummyData,
function(result) {
NativeStorage.getItem("dummy_ref_obj_new",
function(result) {
expect(result).toEqual(dummyData);
NativeStorage.remove("dummy_ref_obj_new", function() {
done();
}, function(e) {
fail("Delete Boolean Failed");
});
},
function(e) {
fail("Read Object Failed");
});
},
function(e) {
fail("Write Object Failed");
});
});
});
/* NEW API test */
describe('Fail Tests new API', function() {
it("Plugin available", function() {
expect(NativeStorage).toEqual(jasmine.anything());
});
it('Null reference', function(done) {
NativeStorage.setItem(null, "objbio",
function(result) {
fail("Item should not have been found, because ref is null " + result);
},
function(e) {
expect(e.code).toEqual(3);
done();
});
});
it('Item Not Found', function(done) {
NativeStorage.getItem("dummy_ref_fail",
function(result) {
fail("Item should not have been found " + result);
},
function(e) {
expect(e.code).toEqual(2);
done();
});
});
it('bad JSON', function(done) {
var a = {};
a.a = a;
NativeStorage.setItem("dummy_ref_bad_json", a, function(result) {
fail("JSON stringify should give an error " + result);
},
function(e) {
expect(e.code).toEqual(5);
done();
});
});
});
/* NEW API test with Password encryption*/
describe('Password encryption Tests new API', function() {
it("Plugin available", function() {
expect(NativeStorage).toEqual(jasmine.anything());
});
it('should store, retrieve and remove a secret item', function(done) {
//reference, obj, encryptConfig, success, error
NativeStorage.setSecretItem("ref_to_secret_value", "SomeVerySecretText", {
mode: "password",
value: "mySecretPassword"
},
function(result) {
// Oke good we've set the secret
expect(result).toEqual("SomeVerySecretText");
// let's grab it back
NativeStorage.getSecretItem("ref_to_secret_value", {
mode: "password",
value: "mySecretPassword"
}, function(result) {
// we've got it again, yes! :D
// let's remove it
NativeStorage.remove("ref_to_secret_value", function() {
// We're done!
done();
}, function(e) {
fail("Delete item Failed");
});
}, function(e) {
fail("Get item Failed");
});
},
function(e) {
fail("Set item Failed");
});
});
});
/* NEW API test with Password encryption*/
describe('Password encryption Error Tests new API', function() {
it("Plugin available", function() {
expect(NativeStorage).toEqual(jasmine.anything());
});
it('should invoke the error callback function for a secret item', function(done) {
//reference, obj, encryptConfig, success, error
NativeStorage.setSecretItem("ref_to_secret_value", "SomeVerySecretText", {
mode: "password",
value: "mySecretPassword"
},
function(result) {
// Oke good we've set the secret
expect(result).toEqual("SomeVerySecretText");
// let's grab it back
NativeStorage.getSecretItem("ref_to_secret_value", {
mode: "password",
value: "SomeOhterPassword"
}, function(result) {
// if we are in the browser
if ((window.cordova && window.cordova.platformId === 'browser') || !(window.phonegap || window.cordova)) {
done();
}
fail("We've giving the pasword so it shouldn't work");
NativeStorage.remove("ref_to_secret_value", function() {
fail("We shouldn't got here... maybe we are in a browser!");
}, function(e) {
fail("Delete item Failed");
});
},
function(e) {
done(e);
});
},
function(e) {
fail("Set item Failed");
});
});
});
/* NEW API test with clear() function*/
describe('clear function', function() {
it("Plugin available", function() {
expect(NativeStorage).toEqual(jasmine.anything());
});
it('should invoke the error callback function with error code 2', function(done) {
var a = {};
NativeStorage.setItem("dummy_ref_clear", a, function(result) {
expect(result).toEqual(a);
NativeStorage.clear(function(result) {
NativeStorage.getItem("dummy_ref_clear", function(result) {
fail("Should not give a result");
}, function(e) {
expect(e.code).toEqual(2);
done();
});
},
function(e) {
fail("Error when clearing native storage");
});
},
function(e) {
fail("Error when item is set");
});
});
});
describe('keys function', function() {
it("Plugin available", function() {
expect(NativeStorage).toEqual(jasmine.anything());
});
it('should return the keys', function(done) {
var a = {};
NativeStorage.setItem("dummy_ref_clear", a, function(result) {
expect(result).toEqual(a);
NativeStorage.keys(function(result) {
expect(result).toContain('dummy_ref_clear');
done();
},
function(e) {
fail("Error when listing keys in native storage");
});
},
function(e) {
fail("Error when item is set");
});
});
});
};