PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/webcrypto-shim/test

Просмотр файла: indexeddb.js

describe( "IndexedDB interoperability", function () {
    //
    // WebCrypto stuff initialization
    //

    var alg = { name: 'AES-CBC', length: 256 };
    var key;
    var db;

    var genKeyComplete = crypto.subtle.generateKey( alg, true, [ 'encrypt', 'decrypt' ] )
            .then( function ( res ) {
                key = res;
            });


    //
    // IndexedDB stuff initialization
    //

    var idbOpen = indexedDB.open('webcrypto-shim', 1);

    idbOpen.onupgradeneeded = function () {
        db = idbOpen.result;
        db.createObjectStore('keys');
    }

    var idbOpenComplete = new Promise( function ( resolve, reject ) {
        idbOpen.onerror = reject;
        idbOpen.onsuccess = function () {
            db = idbOpen.result;
            resolve();
        };
    });

    //
    // Tests
    //

    it( "window.crypto", function () {
        expect(typeof indexedDB).not.toBe('undefined');
    });

    it( "store and retrieve key", function ( done ) {
        Promise.all( [ genKeyComplete, idbOpenComplete ] )
            .then( function () {
                var tx = db.transaction( [ 'keys' ], 'readwrite' );
                var st = tx.objectStore('keys');

                var r = st.put( key, 'test' );
                return new Promise( function ( resolve, reject ) {
                    r.onerror = reject;
                    r.onsuccess = function () {
                        resolve(r);
                    };
                });
            })
            .then( function ( r ) {
                expect(r).not.toBe('undefined');
                expect(r.readyState).toEqual('done');
            })
            .then( function () {
                var tx = db.transaction( 'keys', 'readonly' );
                var st = tx.objectStore( 'keys' );

                var r = st.get('test');
                return new Promise( function ( resolve, reject ) {
                    r.onerror = reject;
                    r.onsuccess = function () {
                        resolve(r);
                    };
                });
            })
            .then( function ( r ) {
                expect(r).not.toBe('undefined');
                expect(r.readyState).toEqual('done');
                expect(r.result).toEqual(jasmine.any(CryptoKey));
            })
            .catch(fail)
            .then(done);
    });
});

Выполнить команду


Для локальной разработки. Не используйте в интернете!