[git] GPGME - branch, javascript-binding, updated. gpgme-1.11.1-30-gc92326c
by Maximilian Krambach
cvs at cvs.gnupg.org
Wed May 9 19:44:18 CEST 2018
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnuPG Made Easy".
The branch, javascript-binding has been updated
via c92326cc257cf7c8b6c0ddc43ec81573c409bc64 (commit)
via 5f5bf024a83625b8f8bac4779b1c2236637c23e0 (commit)
via e54b110aec3165a32ff9551d0c5227b88aa3dd4f (commit)
via e2a8a87bf9cfae5d4e8a5953c2a5303b44feb398 (commit)
via 46da79e3de99a7b65748994921d6aab73b9974e7 (commit)
via 26820ba62920acfe2775bce8fc2bc8b3f17b1c10 (commit)
via 6b267c56fd6e54fb1c254455c04495534260b547 (commit)
from cca40627b0afa2efc85ef7f5f1a1060a221ff2a2 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit c92326cc257cf7c8b6c0ddc43ec81573c409bc64
Author: Maximilian Krambach <maximilian.krambach at intevation.de>
Date: Wed May 9 19:40:57 2018 +0200
js: more testing of nativeMessaging connection
--
* There were some inconsistencies between utf-8, transfer and browsers'
utf16, which broke characters that were split between individual
messages. src/Connection now contains a workaround that reassembles
javascripts' format from passed base64 strings. This needs someone
more experienced looking.
* Added several new tests which were failing during initial debugging
of this issue
* reorganized BrowsertestExtension to avoid cluttering.
diff --git a/lang/js/BrowserTestExtension/browsertest.html b/lang/js/BrowserTestExtension/browsertest.html
index d12e03c..c379ef5 100644
--- a/lang/js/BrowserTestExtension/browsertest.html
+++ b/lang/js/BrowserTestExtension/browsertest.html
@@ -12,14 +12,11 @@
<script src="libs/chai.js"></script>
<script src="setup_testing.js"></script>
<script src="libs/gpgmejs.bundle.js"></script>
-
<script src="tests/inputvalues.js"></script>
- <script src="libs/gpgmejs_unittests.bundle.js"></script>
<!-- insert tests here-->
<script src="tests/startup.js"></script>
<script src="tests/encryptTest.js"></script>
<script src="tests/encryptDecryptTest.js"></script>
-
<!-- run tests -->
<script src="runbrowsertest.js"></script>
</body>
diff --git a/lang/js/BrowserTestExtension/index.html b/lang/js/BrowserTestExtension/index.html
new file mode 100644
index 0000000..05d413b
--- /dev/null
+++ b/lang/js/BrowserTestExtension/index.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <link href="libs/mocha.css" rel="stylesheet" />
+ </head>
+<body>
+ <h3>gpgmejs - Tests</h3>
+ <p>
+ The unittests rely on a separately packaged version of gpgmejs,
+ with the different classes and functions exposed. These tests and their
+ input values can be found in gpgme/lang/js/test. They do not test the
+ overall functionality, but the individual behaviour of the components.
+ <ul>
+ <li>
+ <a href="unittests.html">
+ Unittests of the individual functions and classes.
+ </a>
+ </li>
+ </ul>
+ </p>
+ <p>
+ The functionality tests, to be found in
+ gpgme/lang/js/BrowserTestExtension, check the overall functionality of
+ the standard packaged version of gpgmejs.
+ <ul>
+ <li>
+ <a href="browsertest.html">
+ Functionality tests using the bundled library.
+ </a>
+ </li>
+ <li>
+ <a href="longTests.html">
+ Functionality tests with larger/longer running data sets.
+ </a>
+ </li>
+ </ul>
+ </p>
+ </body>
+</html>
diff --git a/lang/js/BrowserTestExtension/browsertest.html b/lang/js/BrowserTestExtension/longTests.html
similarity index 78%
copy from lang/js/BrowserTestExtension/browsertest.html
copy to lang/js/BrowserTestExtension/longTests.html
index d12e03c..8ff969b 100644
--- a/lang/js/BrowserTestExtension/browsertest.html
+++ b/lang/js/BrowserTestExtension/longTests.html
@@ -12,14 +12,10 @@
<script src="libs/chai.js"></script>
<script src="setup_testing.js"></script>
<script src="libs/gpgmejs.bundle.js"></script>
-
<script src="tests/inputvalues.js"></script>
- <script src="libs/gpgmejs_unittests.bundle.js"></script>
<!-- insert tests here-->
<script src="tests/startup.js"></script>
- <script src="tests/encryptTest.js"></script>
- <script src="tests/encryptDecryptTest.js"></script>
-
+ <script src="tests/longRunningTests.js"></script>
<!-- run tests -->
<script src="runbrowsertest.js"></script>
</body>
diff --git a/lang/js/BrowserTestExtension/popup.js b/lang/js/BrowserTestExtension/popup.js
index 4764df5..12beb1e 100644
--- a/lang/js/BrowserTestExtension/popup.js
+++ b/lang/js/BrowserTestExtension/popup.js
@@ -39,6 +39,6 @@
document.addEventListener('DOMContentLoaded', function() {
chrome.tabs.create({
- url: './browsertest.html'
+ url: './index.html'
});
});
diff --git a/lang/js/BrowserTestExtension/runbrowsertest.js b/lang/js/BrowserTestExtension/runbrowsertest.js
index 308c716..39bc3fb 100644
--- a/lang/js/BrowserTestExtension/runbrowsertest.js
+++ b/lang/js/BrowserTestExtension/runbrowsertest.js
@@ -19,4 +19,3 @@
*/
mocha.run();
-Gpgmejs_test.unittests();
diff --git a/lang/js/BrowserTestExtension/runbrowsertest.js b/lang/js/BrowserTestExtension/rununittests.js
similarity index 99%
copy from lang/js/BrowserTestExtension/runbrowsertest.js
copy to lang/js/BrowserTestExtension/rununittests.js
index 308c716..f85ed8b 100644
--- a/lang/js/BrowserTestExtension/runbrowsertest.js
+++ b/lang/js/BrowserTestExtension/rununittests.js
@@ -17,6 +17,5 @@
* License along with this program; if not, see <http://www.gnu.org/licenses/>.
* SPDX-License-Identifier: LGPL-2.1+
*/
-
-mocha.run();
Gpgmejs_test.unittests();
+mocha.run();
diff --git a/lang/js/BrowserTestExtension/tests/encryptDecryptTest.js b/lang/js/BrowserTestExtension/tests/encryptDecryptTest.js
index e28dd66..a66e153 100644
--- a/lang/js/BrowserTestExtension/tests/encryptDecryptTest.js
+++ b/lang/js/BrowserTestExtension/tests/encryptDecryptTest.js
@@ -19,7 +19,7 @@
*/
describe('Encryption and Decryption', function () {
- it('Successful encrypt and decrypt', function (done) {
+ it('Successful encrypt and decrypt simple string', function (done) {
let prm = Gpgmejs.init();
prm.then(function (context) {
context.encrypt(
@@ -39,54 +39,6 @@ describe('Encryption and Decryption', function () {
});
});
});
-
- /**
- * 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();
@@ -112,88 +64,22 @@ describe('Encryption and Decryption', function () {
});
});
});
- }).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(5000);
- });
- });
- });
- }).timeout(3000);
-*/
-/**
- 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.2); // << set source data here
+ for (let j = 0; j < inputvalues.encrypt.good.data_nonascii_32.length; j++){
+ it('Roundtrip with >1MB non-ascii input meeting default chunksize (' + (j + 1) + '/' + inputvalues.encrypt.good.data_nonascii_32.length + ')',
+ function (done) {
+ let input = inputvalues.encrypt.good.data_nonascii_32[j];
+ expect(input).to.have.length(32);
+ let prm = Gpgmejs.init();
prm.then(function (context) {
+ let data = '';
+ for (let i=0; i < 34 * 1024; i++){
+ data += input;
+ }
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(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){
+ function (answer) {
expect(answer).to.not.be.empty;
expect(answer.data).to.be.a("string");
expect(answer.data).to.include(
@@ -201,38 +87,39 @@ describe('Encryption and Decryption', function () {
expect(answer.data).to.include(
'END PGP MESSAGE');
context.decrypt(answer.data).then(
- function(result){
+ 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(5000);
+ };
+
+ it('Encrypt-decrypt simple non-ascii', function (done) {
+ //FAILS TODO: Check newline at the end
+ 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('¡Äußerste µ€ før ñoquis at hóme! Добрый день');
+ context.connection.disconnect();
+ done();
});
});
+ });
- });
- }).timeout(8000);
+ });
+ }).timeout(6000);
-});
\ No newline at end of file
+});
diff --git a/lang/js/BrowserTestExtension/tests/encryptTest.js b/lang/js/BrowserTestExtension/tests/encryptTest.js
index 2e95151..5ef68a3 100644
--- a/lang/js/BrowserTestExtension/tests/encryptTest.js
+++ b/lang/js/BrowserTestExtension/tests/encryptTest.js
@@ -49,7 +49,7 @@ describe('Encryption', function () {
done();
});
});
- }).timeout(5000);
+ }).timeout(10000);
/**
it('Successful encrypt 20 MB', function (done) {
diff --git a/lang/js/BrowserTestExtension/tests/inputvalues.js b/lang/js/BrowserTestExtension/tests/inputvalues.js
index bc8c97b..e23b778 100644
--- a/lang/js/BrowserTestExtension/tests/inputvalues.js
+++ b/lang/js/BrowserTestExtension/tests/inputvalues.js
@@ -23,7 +23,23 @@ var inputvalues = {
good:{
data : 'Hello World.',
fingerprint : 'D41735B91236FDB882048C5A2301635EEFF0CB05',
- data_nonascii: '¡Äußerste µ€ før ñoquis at hóme! Добрый день\n'
+ data_nonascii: '¡Äußerste µ€ før ñoquis at hóme! Добрый день',
+ data_nonascii_32: [
+ 'K€K€K€K€K€K€K€K€K€K€K€K€K€K€K€K€',
+ 'µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€', //fails result has 3 chars more
+ '€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€', //fails 3 chars
+ '²³²³²³²³²³²³²³²³²³²³²³²³²³²³²³²³',
+ 'µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€A€µ€µ€µ€µ€', //fails 2 chars
+ 'µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µ€µAµ€µ€µ€µ€', //is okay if 2 chunksizes.
+ 'üüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüü',
+ 'µAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA€',
+ 'µAAAAµAAAAAAAAAAAAAAAAAAAAAAAAA€',
+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAµ€',
+ 'µAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA°',
+ '€AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA€',
+ 'µ||||||||||||||||||||||||||||||€',
+ 'æſæſ³¼„¬“³³¬“¬½”æſæſ³¼„¬“³³¬“¬½”'
+ ]
},
bad: {
fingerprint: 'CDC3A2B2860625CCBFC5AAAAAC6D1B604967FC4A'
@@ -56,7 +72,7 @@ function bigUint8(megabytes){
function bigBoringString(megabytes){
let maxlength = 1024 * 1024 * megabytes;
let string = '';
- let chars = ' ä0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ let chars = ' 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for (let i= 0; i < maxlength; i++){
string = string + chars[Math.floor(Math.random() * chars.length)];
}
@@ -101,4 +117,101 @@ var encryptedData =
'isGL7jOlDCBKwep67ted0cTRPLWkk3NSuLIlvD5xs6L4z3rPu92gXYgbZoMMdP0N\n' +
'kSAQYOHplfA7YJWkrlRm\n' +
'=zap6\n' +
- '-----END PGP MESSAGE-----\n';
\ No newline at end of file
+ '-----END PGP MESSAGE-----\n';
+var encryptedBroken = '-----BEGIN PGP MESSAGE-----\n' +
+'\n' +
+'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\n' +
+'E14StpggdK8=\n' +
+'=enm3\n' +
+'-----END PGP MESSAGE-----\n';
\ No newline at end of file
diff --git a/lang/js/BrowserTestExtension/tests/longRunningTests.js b/lang/js/BrowserTestExtension/tests/longRunningTests.js
new file mode 100644
index 0000000..0f32ca9
--- /dev/null
+++ b/lang/js/BrowserTestExtension/tests/longRunningTests.js
@@ -0,0 +1,53 @@
+describe('Long running Encryption/Decryption', function () {
+ for (let i=0; i< 100; i++) {
+ it('Successful encrypt/decrypt completely random data ' + (i+1) + '/100', function (done) {
+ let prm = Gpgmejs.init();
+ let data = bigString(2);
+ 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);
+ context.connection.disconnect();
+ done();
+ });
+ });
+ });
+ }).timeout(5000);
+ };
+
+ it('Successful encrypt 1 MB Uint8Array', function (done) {
+ let prm = Gpgmejs.init();
+ let data = bigUint8(1);
+ 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);
+
+});
diff --git a/lang/js/BrowserTestExtension/unittests.html b/lang/js/BrowserTestExtension/unittests.html
new file mode 100644
index 0000000..6f7da3f
--- /dev/null
+++ b/lang/js/BrowserTestExtension/unittests.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <link href="libs/mocha.css" rel="stylesheet" />
+
+ </head>
+<body>
+ <h3>Unit tests</h3>
+ <div id="mocha"></div>
+ <script src="libs/mocha.js"></script>
+ <script src="libs/chai.js"></script>
+ <script src="setup_testing.js"></script>
+ <script src="libs/gpgmejs_unittests.bundle.js"></script>
+ <script src="rununittests.js"></script>
+ </body>
+</html>
diff --git a/lang/js/src/Connection.js b/lang/js/src/Connection.js
index 2c8792d..64621f6 100644
--- a/lang/js/src/Connection.js
+++ b/lang/js/src/Connection.js
@@ -181,7 +181,8 @@ class Answer{
if (!this._response.hasOwnProperty(key)){
this._response[key] = '';
}
- this._response[key] = this._response[key].concat(msg[key]);
+ // console.log(msg[key]);
+ this._response[key] += msg[key];
}
//params should not change through the message
else if (poa.params.indexOf(key) >= 0){
@@ -214,6 +215,22 @@ class Answer{
* TODO: does not care yet if completed.
*/
get message(){
+ let keys = Object.keys(this._response);
+ let poa = permittedOperations[this.operation].answer;
+ for (let i=0; i < keys.length; i++) {
+ if (poa.data.indexOf(keys[i]) >= 0){
+ if (this._response.base64 == true){
+ let respatob = atob(this._response[keys[i]]);
+
+ let result = decodeURIComponent(
+ respatob.split('').map(function(c) {
+ return '%' +
+ ('00' + c.charCodeAt(0).toString(16)).slice(-2);
+ }).join(''));
+ this._response[keys[i]] = result;
+ }
+ }
+ }
return this._response;
}
}
commit 5f5bf024a83625b8f8bac4779b1c2236637c23e0
Merge: cca4062 e54b110
Author: Maximilian Krambach <maximilian.krambach at intevation.de>
Date: Wed May 9 16:55:50 2018 +0200
Merge branch 'master' into javascript-binding
-----------------------------------------------------------------------
Summary of changes:
lang/js/BrowserTestExtension/browsertest.html | 3 -
lang/js/BrowserTestExtension/index.html | 40 +++++
.../{browsertest.html => longTests.html} | 6 +-
lang/js/BrowserTestExtension/popup.js | 2 +-
lang/js/BrowserTestExtension/runbrowsertest.js | 1 -
.../{runbrowsertest.js => rununittests.js} | 3 +-
.../tests/encryptDecryptTest.js | 191 +++++----------------
lang/js/BrowserTestExtension/tests/encryptTest.js | 2 +-
lang/js/BrowserTestExtension/tests/inputvalues.js | 119 ++++++++++++-
.../BrowserTestExtension/tests/longRunningTests.js | 53 ++++++
lang/js/BrowserTestExtension/unittests.html | 17 ++
lang/js/src/Connection.js | 19 +-
lang/python/tests/t-callbacks.py | 2 +-
lang/qt/Makefile.am | 8 +-
lang/qt/src/qgpgmenewcryptoconfig.cpp | 6 +-
src/engine-gpgsm.c | 11 +-
src/gpgme-json.c | 22 ++-
17 files changed, 322 insertions(+), 183 deletions(-)
create mode 100644 lang/js/BrowserTestExtension/index.html
copy lang/js/BrowserTestExtension/{browsertest.html => longTests.html} (78%)
copy lang/js/BrowserTestExtension/{runbrowsertest.js => rununittests.js} (99%)
create mode 100644 lang/js/BrowserTestExtension/tests/longRunningTests.js
create mode 100644 lang/js/BrowserTestExtension/unittests.html
hooks/post-receive
--
GnuPG Made Easy
http://git.gnupg.org
More information about the Gnupg-commits
mailing list