diff --git a/lang/js/BrowserTestExtension/tests/signTest.js b/lang/js/BrowserTestExtension/tests/signTest.js
new file mode 100644
index 00000000..e3323721
--- /dev/null
+++ b/lang/js/BrowserTestExtension/tests/signTest.js
@@ -0,0 +1,58 @@
+/* gpgme.js - Javascript integration for gpgme
+ * Copyright (C) 2018 Bundesamt für Sicherheit in der Informationstechnik
+ *
+ * This file is part of GPGME.
+ *
+ * GPGME is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * GPGME is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, see .
+ * SPDX-License-Identifier: LGPL-2.1+
+ */
+describe('Signing', function () {
+ it('Sign a message', function (done) {
+ let prm = Gpgmejs.init();
+ prm.then(function (context) {
+ let data = bigString(100);
+ context.sign(
+ 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 SIGNATURE');
+ expect(answer.data).to.include('END PGP SIGNATURE');
+ expect(answer.data).to.include(data);
+ context.connection.disconnect();
+ done();
+ });
+ });
+ });
+ it('Detached sign a message', function (done) {
+ let prm = Gpgmejs.init();
+ prm.then(function (context) {
+ let data = bigString(100);
+ context.sign(
+ data,
+ inputvalues.encrypt.good.fingerprint,
+ 'detached'
+ ).then(function (answer) {
+ expect(answer).to.not.be.empty;
+ expect(answer.data).to.be.a('string');
+ expect(answer.data).to.include(data);
+ expect(answer.signature).to.be.a('string');
+ expect(answer.signature).to.be.a('string');
+ context.connection.disconnect();
+ done();
+ });
+ });
+ });
+
+});
diff --git a/lang/js/BrowserTestExtension/tests/startup.js b/lang/js/BrowserTestExtension/tests/startup.js
index 5de70a6b..ebecf4fb 100644
--- a/lang/js/BrowserTestExtension/tests/startup.js
+++ b/lang/js/BrowserTestExtension/tests/startup.js
@@ -30,9 +30,6 @@
expect(context.encrypt).to.be.a('function');
expect(context.decrypt).to.be.a('function');
done();
- }, function(errorr){
- expect(error).to.be.undefined;
- done();
});
});
});
diff --git a/lang/js/src/Connection.js b/lang/js/src/Connection.js
index 9c2a6428..07df5def 100644
--- a/lang/js/src/Connection.js
+++ b/lang/js/src/Connection.js
@@ -25,7 +25,7 @@
*/
import { permittedOperations } from './permittedOperations'
import { gpgme_error } from "./Errors"
-import { GPGME_Message } from "./Message";
+import { GPGME_Message, createMessage } from "./Message";
/**
* A Connection handles the nativeMessaging interaction.
@@ -34,18 +34,42 @@ export class Connection{
constructor(){
this.connect();
- let me = this;
}
/**
- * (Simple) Connection check.
- * @returns {Boolean} true if the onDisconnect event has not been fired.
- * Please note that the event listener of the port takes some time
- * (5 ms seems enough) to react after the port is created. Then this will
- * return undefined
+ * Retrieves the information about the backend.
+ * @param {Boolean} details (optional) If set to false, the promise will
+ * just return a connection status
+ * @returns {Promise