aboutsummaryrefslogtreecommitdiffstats
path: root/lang/js/BrowserTestExtension/tests
diff options
context:
space:
mode:
Diffstat (limited to 'lang/js/BrowserTestExtension/tests')
-rw-r--r--lang/js/BrowserTestExtension/tests/encryptDecryptTest.js186
-rw-r--r--lang/js/BrowserTestExtension/tests/encryptTest.js13
-rw-r--r--lang/js/BrowserTestExtension/tests/inputvalues.js62
3 files changed, 248 insertions, 13 deletions
diff --git a/lang/js/BrowserTestExtension/tests/encryptDecryptTest.js b/lang/js/BrowserTestExtension/tests/encryptDecryptTest.js
index 7abf2d94..e28dd66b 100644
--- a/lang/js/BrowserTestExtension/tests/encryptDecryptTest.js
+++ b/lang/js/BrowserTestExtension/tests/encryptDecryptTest.js
@@ -24,30 +24,144 @@ describe('Encryption and Decryption', function () {
prm.then(function (context) {
context.encrypt(
inputvalues.encrypt.good.data,
- inputvalues.encrypt.good.fingerprint).then( function(answer){
+ inputvalues.encrypt.good.fingerprint).then(function (answer) {
expect(answer).to.not.be.empty;
expect(answer.data).to.be.a("string");
expect(answer.data).to.include('BEGIN PGP MESSAGE');
expect(answer.data).to.include('END PGP MESSAGE');
- context.decrypt(answer.data).then(function(result){
+ context.decrypt(answer.data).then(function (result) {
expect(result).to.not.be.empty;
expect(result.data).to.be.a('string');
expect(result.data).to.equal(inputvalues.encrypt.good.data);
+ context.connection.disconnect();
done();
});
});
});
});
+ /**
+ * Fails with random data! Some bytes (up to 100) of the original are missing in
+ * the result
+*/
/**
- * Fails with random data! Some bytes (up to 100) of the original are missing in
- * the result
- */
+ for (let j = 0; j < 10; j++){
+ it('Successful encrypt and decrypt specific sets: ',
+ function (done) {
+ let prm = Gpgmejs.init();
+ let data = bigBoringString(5); //see ./inputvalues.js
+ expect(Object.prototype.toString.call(data)).to.equal("[object String]");
+ prm.then(function (context) {
+ context.encrypt(data,
+ inputvalues.encrypt.good.fingerprint).then(
+ function (answer) {
+ expect(answer).to.not.be.empty;
+ expect(answer.data).to.be.a("string");
+ expect(answer.data).to.include(
+ 'BEGIN PGP MESSAGE');
+ expect(answer.data).to.include(
+ 'END PGP MESSAGE');
+ context.decrypt(answer.data).then(
+ function (result) {
+ if (data.length !== result.data.length) {
+
+ for (let k = 0; k < data.length; k++) {
+ if (data[k] !== result.data[k]) {
+ console.log(k);
+ console.log(data[k - 2] + data[k - 1] + data[k] + data[k + 1]);
+ console.log(result.data[k - 2] + result.data[k - 1] + result.data[k] + result.data[k + 1]);
+ break;
+ }
+ }
+ }
+ expect(result).to.not.be.empty;
+ expect(result.data).to.be.a('string');
+ expect(result.data).to.equal(data);
+ context.connection.disconnect();
+ done();
+
+ });
+ });
+ });
+ }).timeout(5000);
+ }
+
+
+ it('Roundtrip does not destroy trailing whitespace',
+ function (done) {
+ let prm = Gpgmejs.init();
+ prm.then(function (context) {
+ let data = 'Keks. \rKeks \n Keks \r\n';
+ context.encrypt(data,
+ inputvalues.encrypt.good.fingerprint).then(
+ function (answer) {
+ expect(answer).to.not.be.empty;
+ expect(answer.data).to.be.a("string");
+ expect(answer.data).to.include(
+ 'BEGIN PGP MESSAGE');
+ expect(answer.data).to.include(
+ 'END PGP MESSAGE');
+ context.decrypt(answer.data).then(
+ function (result) {
+ expect(result).to.not.be.empty;
+ expect(result.data).to.be.a('string');
+ expect(result.data).to.equal(data);
+ context.connection.disconnect();
+ done();
+
+ });
+ });
+ });
+ }).timeout(3000);
+
+ it('Test with simple non-ascii input',
+ function (done) {
+ let prm = Gpgmejs.init();
+ prm.then(function (context) {
+ let data = '';
+ for (let i=0; i < 1024 * 1024 * 0.1; i++){
+ data += inputvalues.encrypt.good.data_nonascii;
+ }
+ context.encrypt(data,
+ inputvalues.encrypt.good.fingerprint).then(
+ function (answer) {
+ expect(answer).to.not.be.empty;
+ expect(answer.data).to.be.a("string");
+ expect(answer.data).to.include(
+ 'BEGIN PGP MESSAGE');
+ expect(answer.data).to.include(
+ 'END PGP MESSAGE');
+ console.log(answer);
+ context.decrypt(answer.data).then(
+ function (result) {
+ expect(result).to.not.be.empty;
+ expect(result.data).to.be.a('string');
+ if (data.length !== result.data.length) {
+
+ for (let k = 0; k < data.length; k++) {
+ if (data[k] !== result.data[k]) {
+ console.log(k);
+ console.log(data[k - 2] + data[k - 1] + data[k] + data[k + 1]);
+ console.log(result.data[k - 2] + result.data[k - 1] + result.data[k] + result.data[k + 1]);
+ break;
+ }
+ }
+ }
+ console.log(data.length - result.data.length);
+ expect(result.data).to.equal(data);
+ context.connection.disconnect();
+ done();
+
+ });
+ });
+ });
+ }).timeout(3000);
+*/
/**
- for (let i=0; i< 20; i++) {
- it('Successful encrypt 1 MB '+ i+ '/20', function (done) {
+ for (let i=0; i< 100; i++) {
+ it('Successful encrypt random data '+ (i+1) + '/100', function (done) {
let prm = Gpgmejs.init();
- let data = bigString(0.1);
+ let data = bigString(0.2); // << set source data here
prm.then(function (context) {
context.encrypt(data,
inputvalues.encrypt.good.fingerprint).then(
@@ -63,10 +177,62 @@ describe('Encryption and Decryption', function () {
expect(result).to.not.be.empty;
expect(result.data).to.be.a('string');
expect(result.data).to.equal(data);
+ context.connection.disconnect();
done();
});
});
});
- }).timeout(10000);
- };*/
+ }).timeout(5000);
+ };
+*/
+
+/** still fails
+ it('Successful encrypt 0.8 MB Uint8Array', function (done) {
+ let prm = Gpgmejs.init();
+ let data = bigUint8(0.8);
+ prm.then(function (context) {
+ context.encrypt(data,
+ inputvalues.encrypt.good.fingerprint).then(
+ function (answer){
+ expect(answer).to.not.be.empty;
+ expect(answer.data).to.be.a("string");
+ expect(answer.data).to.include(
+ 'BEGIN PGP MESSAGE');
+ expect(answer.data).to.include(
+ 'END PGP MESSAGE');
+ context.decrypt(answer.data).then(
+ function(result){
+ expect(result).to.not.be.empty;
+ expect(result.data).to.be.a('string');
+ expect(result.data).to.equal(data);
+ done();
+ });
+ });
+ });
+ }).timeout(5000);
+*/
+
+ it('Decrypt simple non-ascii',
+ function (done) {
+ let prm = Gpgmejs.init();
+ prm.then(function (context) {
+ data = encryptedData;
+ context.decrypt(data).then(
+ function (result) {
+ expect(result).to.not.be.empty;
+ expect(result.data).to.be.a('string');
+ expect(result.data).to.equal(inputvalues.encrypt.good.data_nonascii);
+ context.encrypt(inputvalues.encrypt.good.data_nonascii, inputvalues.encrypt.good.fingerprint).then(
+ function(result){
+ context.decrypt(result.data).then(function(answer){
+ expect(answer.data).to.equal(inputvalues.encrypt.good.data_nonascii);
+ context.connection.disconnect();
+ done();
+ });
+ });
+ });
+
+ });
+ }).timeout(8000);
+
}); \ No newline at end of file
diff --git a/lang/js/BrowserTestExtension/tests/encryptTest.js b/lang/js/BrowserTestExtension/tests/encryptTest.js
index 37b319ed..2e95151b 100644
--- a/lang/js/BrowserTestExtension/tests/encryptTest.js
+++ b/lang/js/BrowserTestExtension/tests/encryptTest.js
@@ -28,6 +28,7 @@ describe('Encryption', function () {
expect(answer.data).to.be.a("string");
expect(answer.data).to.include('BEGIN PGP MESSAGE');
expect(answer.data).to.include('END PGP MESSAGE');
+ context.connection.disconnect();
done();
});
});
@@ -44,11 +45,13 @@ describe('Encryption', function () {
expect(answer.data).to.be.a("string");
expect(answer.data).to.include('BEGIN PGP MESSAGE');
expect(answer.data).to.include('END PGP MESSAGE');
+ context.connection.disconnect();
done();
});
});
}).timeout(5000);
+/**
it('Successful encrypt 20 MB', function (done) {
let prm = Gpgmejs.init();
let data = bigString(20);
@@ -60,11 +63,12 @@ describe('Encryption', function () {
expect(answer.data).to.be.a("string");
expect(answer.data).to.include('BEGIN PGP MESSAGE');
expect(answer.data).to.include('END PGP MESSAGE');
+ context.connection.disconnect();
done();
});
});
}).timeout(20000);
-
+*/
/**
it('Successful encrypt 30 MB', function (done) {
// TODO: There seems to be a limit imposed at least by chrome at about 21 MB
@@ -78,6 +82,7 @@ describe('Encryption', function () {
expect(answer.data).to.be.a("string");
expect(answer.data).to.include('BEGIN PGP MESSAGE');
expect(answer.data).to.include('END PGP MESSAGE');
+ context.connection.disconnect();
done();
});
});
@@ -94,6 +99,7 @@ describe('Encryption', function () {
}, function(error){
expect(error).to.be.an('Error');
expect(error.code).to.equal('MSG_INCOMPLETE');
+ context.connection.disconnect();
done();
});
});
@@ -108,6 +114,7 @@ describe('Encryption', function () {
}, function (error) {
expect(error).to.be.an.instanceof(Error);
expect(error.code).to.equal('MSG_INCOMPLETE');
+ context.connection.disconnect();
done();
});
});
@@ -125,10 +132,11 @@ describe('Encryption', function () {
expect(error).to.be.an('Error');
expect(error.code).to.not.be.undefined;
expect(error.code).to.equal('GNUPG_ERROR');
+ context.connection.disconnect();
done();
});
});
- });
+ }).timeout(5000);;
it('Overly large message ( >= 48MB) is rejected', function (done) {
let prm = Gpgmejs.init();
@@ -141,6 +149,7 @@ describe('Encryption', function () {
expect(error).to.be.an.instanceof(Error);
// TODO who is throwing the error here?
// It is not a GPGME_Error!
+ context.connection.disconnect();
done();
});
});
diff --git a/lang/js/BrowserTestExtension/tests/inputvalues.js b/lang/js/BrowserTestExtension/tests/inputvalues.js
index 3cd1e92a..bc8c97bb 100644
--- a/lang/js/BrowserTestExtension/tests/inputvalues.js
+++ b/lang/js/BrowserTestExtension/tests/inputvalues.js
@@ -22,7 +22,8 @@ var inputvalues = {
encrypt: {
good:{
data : 'Hello World.',
- fingerprint : 'CDC3A2B2860625CCBFC5A5A9FC6D1B604967FC40'
+ fingerprint : 'D41735B91236FDB882048C5A2301635EEFF0CB05',
+ data_nonascii: '¡Äußerste µ€ før ñoquis@hóme! Добрый день\n'
},
bad: {
fingerprint: 'CDC3A2B2860625CCBFC5AAAAAC6D1B604967FC4A'
@@ -42,3 +43,62 @@ function bigString(megabytes){
}
return new TextDecoder('utf-8').decode(uint);
}
+
+function bigUint8(megabytes){
+ let maxlength = 1024 * 1024 * megabytes;
+ let uint = new Uint8Array(maxlength);
+ for (let i= 0; i < maxlength; i++){
+ uint[i] = Math.random() * Math.floor(256);
+ }
+ return uint;
+}
+
+function bigBoringString(megabytes){
+ let maxlength = 1024 * 1024 * megabytes;
+ let string = '';
+ let chars = ' ä0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ for (let i= 0; i < maxlength; i++){
+ string = string + chars[Math.floor(Math.random() * chars.length)];
+ }
+ return string;
+}
+
+function slightlyLessBoringString(megabytes, set){
+ let maxlength = 1024 * 1024 * megabytes;
+ let string = '';
+ let chars = '';
+ if (!set){
+
+ } else if (set ===1 ) {
+ chars = '\n\"\r \'';
+ } else if (set === 2 ) {
+ chars = '()=?`#+-{}[]';
+ } else if (set === 3){
+ chars = '^°/';
+ //'*<>\\^°/';
+ } else if (set ===4) {
+ chars = 'äüßµüþÖ~ɁÑ||@';
+ } else {
+ chars = '*<>\n\"\r§$%&/()=?`#+-{}[] \''; //fails!
+
+ }
+ for (let i= 0; i < maxlength; i++){
+ string = string + chars[Math.floor(Math.random() * chars.length)];
+ }
+ return string;
+}
+
+var encryptedData =
+ '-----BEGIN PGP MESSAGE-----\n' +
+ '\n' +
+ 'hQEMA6B8jfIUScGEAQgAlANd3uyhmhYLzVcfz4LEqA8tgUC3n719YH0iuKEzG/dv\n' +
+ 'B8fsIK2HoeQh2T3/Cc2LBMjgn4K33ksG3k2MqrbIvxWGUQlOAuggc259hquWtX9B\n' +
+ 'EcEoOAeh5DuZT/b8CM5seJKNEpPzNxbEDiGikp9DV9gfIQTTUnrDjAu5YtgCN9vA\n' +
+ '3PJxihioH8ODoQw2jlYSkqgXpBVP2Fbx7qgTuxGNu5w36E0/P93//4hDXcKou7ez\n' +
+ 'o0+NEGSkbaY+OPk1k7k9n+vBSC3F440dxsTNs5WmRvx9XZEotJkUBweE+8XaoLCn\n' +
+ '3RrtyD/lj63qi3dbyI5XFLuPU1baFskJ4UAmI4wNhdJ+ASailpnFBnNgiFBh3ZfB\n' +
+ 'G5Rmd3ocSL7l6lq1bVK9advXb7vcne502W1ldAfHgTdQgc2CueIDFUYAaXP2OvhP\n' +
+ 'isGL7jOlDCBKwep67ted0cTRPLWkk3NSuLIlvD5xs6L4z3rPu92gXYgbZoMMdP0N\n' +
+ 'kSAQYOHplfA7YJWkrlRm\n' +
+ '=zap6\n' +
+ '-----END PGP MESSAGE-----\n'; \ No newline at end of file