UNPKG

bitgo

Version:
93 lines 10.9 kB
"use strict"; /** * Utility functions for testing */ Object.defineProperty(exports, "__esModule", { value: true }); const TestUtil = module.exports; const should = require("should"); const _ = require("lodash"); const Q = require('q'); /** * Checks if a promise chain throws an error, and optionally that the error includes * the given errorMsg. Our current version of shouldjs (3.3.2) doesn't have the promise * assertion .rejectedWith, so we make due with this. * @param promise {String} (optional) error message to check for * @param errorMsg */ TestUtil.throws = function (promise, errorMsg) { return promise .then(function (res) { throw new Error(); // should never reach this point }) .catch(function (e) { if (errorMsg) { e.message.should.containEql(errorMsg); } should.exist(e); }); }; // `condition` is a function that returns a boolean // `body` is a function that returns a promise // returns a promise for the completion of the loop TestUtil.promiseWhile = function (condition, body) { const done = Q.defer(); function loop() { // When the result of calling `condition` is no longer true, we are // done. if (!condition()) { return done.resolve(); } // Use `when`, in case `body` does not return a promise. // When it completes loop again otherwise, if it fails, reject the // done promise Q.when(body(), loop, done.reject); } // Start running the loop in the next tick so that this function is // completely async. It would be unexpected if `body` was called // synchronously the first time. Q.nextTick(loop); // The promise return done.promise; }; // helper function used to cleanup more than one token // This is useful in the event that some of your tests fail, and there ends up being more than 10 access tokens // at which point the server won't allow you to make any more longlived tokens TestUtil.deleteTestTokens = function (bitgoObj, filterFunc) { let tokenList; let index = 0; const condition = function () { return index < tokenList.length; }; // don't delete last token, which is the login token for this test const body = function () { const token = tokenList[index]; return bitgoObj .removeAccessToken({ id: token.id }) .then(function (tok) { if (tok) { tok.id.should.equal(tokenList[index].id); } }) .catch(function (e) { console.log(e); // show the error to help debugging }) .finally(function () { index++; }); }; return bitgoObj.listAccessTokens().then(function (tokens) { // clear up access tokens which return true from the filter function tokenList = _.filter(tokens, filterFunc); return TestUtil.promiseWhile(condition, body); }); }; // helper function to unlock a token for a specified time TestUtil.unlockToken = function (agent, accessToken, seconds) { return agent .post('/api/v1/user/unlock') .set('Authorization', 'Bearer ' + accessToken) .send({ otp: '0000000', duration: seconds }) .then(function (res) { res.statusCode.should.equal(200); }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L2ludGVncmF0aW9uL3Rlc3R1dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUFFSCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ2hDLGlDQUFrQztBQUNsQyw0QkFBNEI7QUFDNUIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXZCOzs7Ozs7R0FNRztBQUNILFFBQVEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxPQUFPLEVBQUUsUUFBUTtJQUMzQyxPQUFPLE9BQU87U0FDWCxJQUFJLENBQUMsVUFBVSxHQUFHO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLGdDQUFnQztJQUNyRCxDQUFDLENBQUM7U0FDRCxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ2hCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFRixtREFBbUQ7QUFDbkQsOENBQThDO0FBQzlDLG1EQUFtRDtBQUNuRCxRQUFRLENBQUMsWUFBWSxHQUFHLFVBQVUsU0FBUyxFQUFFLElBQUk7SUFDL0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXZCLFNBQVMsSUFBSTtRQUNYLG1FQUFtRTtRQUNuRSxRQUFRO1FBQ1IsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUNELHdEQUF3RDtRQUN4RCxrRUFBa0U7UUFDbEUsZUFBZTtRQUNmLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsbUVBQW1FO0lBQ25FLGdFQUFnRTtJQUNoRSxnQ0FBZ0M7SUFDaEMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqQixjQUFjO0lBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLHNEQUFzRDtBQUN0RCwrR0FBK0c7QUFDL0csOEVBQThFO0FBQzlFLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLFFBQVEsRUFBRSxVQUFVO0lBQ3hELElBQUksU0FBUyxDQUFDO0lBQ2QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBRWQsTUFBTSxTQUFTLEdBQUc7UUFDaEIsT0FBTyxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQyxrRUFBa0U7SUFDckUsTUFBTSxJQUFJLEdBQUc7UUFDWCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsT0FBTyxRQUFRO2FBQ1osaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDakIsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQ0FBbUM7UUFDckQsQ0FBQyxDQUFDO2FBQ0QsT0FBTyxDQUFDO1lBQ1AsS0FBSyxFQUFFLENBQUM7UUFDVixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBTTtRQUN0RCxvRUFBb0U7UUFDcEUsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpDLE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRix5REFBeUQ7QUFDekQsUUFBUSxDQUFDLFdBQVcsR0FBRyxVQUFVLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTztJQUMxRCxPQUFPLEtBQUs7U0FDVCxJQUFJLENBQUMscUJBQXFCLENBQUM7U0FDM0IsR0FBRyxDQUFDLGVBQWUsRUFBRSxTQUFTLEdBQUcsV0FBVyxDQUFDO1NBQzdDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO1NBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUc7UUFDakIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgdGVzdGluZ1xuICovXG5cbmNvbnN0IFRlc3RVdGlsID0gbW9kdWxlLmV4cG9ydHM7XG5pbXBvcnQgc2hvdWxkID0gcmVxdWlyZSgnc2hvdWxkJyk7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5jb25zdCBRID0gcmVxdWlyZSgncScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIHByb21pc2UgY2hhaW4gdGhyb3dzIGFuIGVycm9yLCBhbmQgb3B0aW9uYWxseSB0aGF0IHRoZSBlcnJvciBpbmNsdWRlc1xuICogdGhlIGdpdmVuIGVycm9yTXNnLiBPdXIgY3VycmVudCB2ZXJzaW9uIG9mIHNob3VsZGpzICgzLjMuMikgZG9lc24ndCBoYXZlIHRoZSBwcm9taXNlXG4gKiBhc3NlcnRpb24gLnJlamVjdGVkV2l0aCwgc28gd2UgbWFrZSBkdWUgd2l0aCB0aGlzLlxuICogQHBhcmFtIHByb21pc2Uge1N0cmluZ30gKG9wdGlvbmFsKSBlcnJvciBtZXNzYWdlIHRvIGNoZWNrIGZvclxuICogQHBhcmFtIGVycm9yTXNnXG4gKi9cblRlc3RVdGlsLnRocm93cyA9IGZ1bmN0aW9uIChwcm9taXNlLCBlcnJvck1zZykge1xuICByZXR1cm4gcHJvbWlzZVxuICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpOyAvLyBzaG91bGQgbmV2ZXIgcmVhY2ggdGhpcyBwb2ludFxuICAgIH0pXG4gICAgLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZXJyb3JNc2cpIHtcbiAgICAgICAgZS5tZXNzYWdlLnNob3VsZC5jb250YWluRXFsKGVycm9yTXNnKTtcbiAgICAgIH1cbiAgICAgIHNob3VsZC5leGlzdChlKTtcbiAgICB9KTtcbn07XG5cbi8vIGBjb25kaXRpb25gIGlzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgYm9vbGVhblxuLy8gYGJvZHlgIGlzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvbWlzZVxuLy8gcmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBsb29wXG5UZXN0VXRpbC5wcm9taXNlV2hpbGUgPSBmdW5jdGlvbiAoY29uZGl0aW9uLCBib2R5KSB7XG4gIGNvbnN0IGRvbmUgPSBRLmRlZmVyKCk7XG5cbiAgZnVuY3Rpb24gbG9vcCgpIHtcbiAgICAvLyBXaGVuIHRoZSByZXN1bHQgb2YgY2FsbGluZyBgY29uZGl0aW9uYCBpcyBubyBsb25nZXIgdHJ1ZSwgd2UgYXJlXG4gICAgLy8gZG9uZS5cbiAgICBpZiAoIWNvbmRpdGlvbigpKSB7XG4gICAgICByZXR1cm4gZG9uZS5yZXNvbHZlKCk7XG4gICAgfVxuICAgIC8vIFVzZSBgd2hlbmAsIGluIGNhc2UgYGJvZHlgIGRvZXMgbm90IHJldHVybiBhIHByb21pc2UuXG4gICAgLy8gV2hlbiBpdCBjb21wbGV0ZXMgbG9vcCBhZ2FpbiBvdGhlcndpc2UsIGlmIGl0IGZhaWxzLCByZWplY3QgdGhlXG4gICAgLy8gZG9uZSBwcm9taXNlXG4gICAgUS53aGVuKGJvZHkoKSwgbG9vcCwgZG9uZS5yZWplY3QpO1xuICB9XG5cbiAgLy8gU3RhcnQgcnVubmluZyB0aGUgbG9vcCBpbiB0aGUgbmV4dCB0aWNrIHNvIHRoYXQgdGhpcyBmdW5jdGlvbiBpc1xuICAvLyBjb21wbGV0ZWx5IGFzeW5jLiBJdCB3b3VsZCBiZSB1bmV4cGVjdGVkIGlmIGBib2R5YCB3YXMgY2FsbGVkXG4gIC8vIHN5bmNocm9ub3VzbHkgdGhlIGZpcnN0IHRpbWUuXG4gIFEubmV4dFRpY2sobG9vcCk7XG5cbiAgLy8gVGhlIHByb21pc2VcbiAgcmV0dXJuIGRvbmUucHJvbWlzZTtcbn07XG5cbi8vIGhlbHBlciBmdW5jdGlvbiB1c2VkIHRvIGNsZWFudXAgbW9yZSB0aGFuIG9uZSB0b2tlblxuLy8gVGhpcyBpcyB1c2VmdWwgaW4gdGhlIGV2ZW50IHRoYXQgc29tZSBvZiB5b3VyIHRlc3RzIGZhaWwsIGFuZCB0aGVyZSBlbmRzIHVwIGJlaW5nIG1vcmUgdGhhbiAxMCBhY2Nlc3MgdG9rZW5zXG4vLyBhdCB3aGljaCBwb2ludCB0aGUgc2VydmVyIHdvbid0IGFsbG93IHlvdSB0byBtYWtlIGFueSBtb3JlIGxvbmdsaXZlZCB0b2tlbnNcblRlc3RVdGlsLmRlbGV0ZVRlc3RUb2tlbnMgPSBmdW5jdGlvbiAoYml0Z29PYmosIGZpbHRlckZ1bmMpIHtcbiAgbGV0IHRva2VuTGlzdDtcbiAgbGV0IGluZGV4ID0gMDtcblxuICBjb25zdCBjb25kaXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGluZGV4IDwgdG9rZW5MaXN0Lmxlbmd0aDtcbiAgfTsgLy8gZG9uJ3QgZGVsZXRlIGxhc3QgdG9rZW4sIHdoaWNoIGlzIHRoZSBsb2dpbiB0b2tlbiBmb3IgdGhpcyB0ZXN0XG4gIGNvbnN0IGJvZHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0b2tlbkxpc3RbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGJpdGdvT2JqXG4gICAgICAucmVtb3ZlQWNjZXNzVG9rZW4oeyBpZDogdG9rZW4uaWQgfSlcbiAgICAgIC50aGVuKGZ1bmN0aW9uICh0b2spIHtcbiAgICAgICAgaWYgKHRvaykge1xuICAgICAgICAgIHRvay5pZC5zaG91bGQuZXF1YWwodG9rZW5MaXN0W2luZGV4XS5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coZSk7IC8vIHNob3cgdGhlIGVycm9yIHRvIGhlbHAgZGVidWdnaW5nXG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICBpbmRleCsrO1xuICAgICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIGJpdGdvT2JqLmxpc3RBY2Nlc3NUb2tlbnMoKS50aGVuKGZ1bmN0aW9uICh0b2tlbnMpIHtcbiAgICAvLyBjbGVhciB1cCBhY2Nlc3MgdG9rZW5zIHdoaWNoIHJldHVybiB0cnVlIGZyb20gdGhlIGZpbHRlciBmdW5jdGlvblxuICAgIHRva2VuTGlzdCA9IF8uZmlsdGVyKHRva2VucywgZmlsdGVyRnVuYyk7XG5cbiAgICByZXR1cm4gVGVzdFV0aWwucHJvbWlzZVdoaWxlKGNvbmRpdGlvbiwgYm9keSk7XG4gIH0pO1xufTtcblxuLy8gaGVscGVyIGZ1bmN0aW9uIHRvIHVubG9jayBhIHRva2VuIGZvciBhIHNwZWNpZmllZCB0aW1lXG5UZXN0VXRpbC51bmxvY2tUb2tlbiA9IGZ1bmN0aW9uIChhZ2VudCwgYWNjZXNzVG9rZW4sIHNlY29uZHMpIHtcbiAgcmV0dXJuIGFnZW50XG4gICAgLnBvc3QoJy9hcGkvdjEvdXNlci91bmxvY2snKVxuICAgIC5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbilcbiAgICAuc2VuZCh7IG90cDogJzAwMDAwMDAnLCBkdXJhdGlvbjogc2Vjb25kcyB9KVxuICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHJlcy5zdGF0dXNDb2RlLnNob3VsZC5lcXVhbCgyMDApO1xuICAgIH0pO1xufTtcbiJdfQ==