PrivateBin/PrivateBin

View on GitHub
js/test/ServerInteraction.js

Summary

Maintainability
A
0 mins
Test Coverage
'use strict';
require('../common');

describe('ServerInteraction', function () {
    describe('prepare', function () {
        afterEach(async function () {
            // pause to let async functions conclude
            await new Promise(resolve => setTimeout(resolve, 1900));
        });
        this.timeout(30000);
        it('can prepare an encrypted paste', function () {
            jsc.assert(jsc.forall(
                'string',
                'string',
                'string',
                async function (key, password, message) {
                    // pause to let async functions conclude
                    await new Promise(resolve => setTimeout(resolve, 300));
                    let clean = jsdom();
                    window.crypto = new WebCrypto();
                    message = message.trim();

                    $.PrivateBin.ServerInteraction.prepare();
                    $.PrivateBin.ServerInteraction.setCryptParameters(password, key);
                    $.PrivateBin.ServerInteraction.setUnencryptedData('adata', [
                        // encryption parameters defined by CryptTool, format, discussion, burn after reading
                        null, 'plaintext', 0, 0
                    ]);
                    $.PrivateBin.ServerInteraction.setUnencryptedData('meta', {'expire': '5min'});
                    await $.PrivateBin.ServerInteraction.setCipherMessage({'paste': message});
                    //console.log($.PrivateBin.ServerInteraction.getData());
                    clean();
                    // TODO currently not testing anything and just used to generate v2 pastes for starting development of server side v2 implementation
                    return true;
                }
            ),
            {tests: 3});
        });
    });
});