UNPKG

blockstack

Version:

The Blockstack Javascript library for authentication, identity, and storage.

76 lines (67 loc) 11.9 kB
"use strict"; var _auth = require("../../../src/auth"); var _authApp = require("../../../src/auth/authApp"); // This test is meant to be run from the integration test framework // see https://github.com/blockstack/blockstack-core/tree/master/integration_tests var assert = require('assert'); var jsontokens = require('jsontokens'); var clientPrivateKey = '8b13483d65e55eb2184ff7c9978379eff2fae7ad40da09ae4e3e5cf84b36a550'; var appPrivateKey = '99c01d085f7914e4725ffa3160df583c37cc27e1e7fd48f2d6e17d4a9a4ba55e'; var apiPassword = 'blockstack_integration_test_api_password'; var authRequest = (0, _authApp.makeAuthRequest)(clientPrivateKey, 'https://www.foo.com/manifest.json', 'https://www.foo.com/login', ['store_read', 'store_write', 'store_admin'], 'www.foo.com'); console.log('Log in with a blockchain ID'); (0, _auth.getCoreSession)('localhost', 16268, apiPassword, appPrivateKey, 'judecn.id', authRequest).then(function (session) { console.log('success!'); console.log(session); // inspect session var token = jsontokens.decodeToken(session); var payload = token.payload; console.log(JSON.stringify(payload)); assert(payload.app_domain === 'www.foo.com'); assert(payload.methods[0] === 'store_read'); assert(payload.methods[1] === 'store_write'); assert(payload.methods[2] === 'store_admin'); assert(payload.methods.length === 3); assert(payload.app_public_keys.length === 1); assert(payload.app_public_keys[0].public_key === jsontokens.SECP256K1Client.derivePublicKey(appPrivateKey)); assert(payload.blockchain_id === 'judecn.id'); return true; }, function (error) { console.error('failure!'); console.error(error.stack); return false; }).then(function (res) { if (!res) { throw new Error('Failed to log in with blockchain ID'); } console.log('Log in without a blockchain ID'); // try with no blockchain ID return (0, _auth.getCoreSession)('localhost', 16268, apiPassword, appPrivateKey, null, authRequest); }, function (e) { console.log('failure!'); console.log(e.stack); }).then(function (session) { console.log('success!'); console.log(session); // inspect session var token = jsontokens.decodeToken(session); var payload = token.payload; console.log(JSON.stringify(payload)); assert(payload.app_domain === 'www.foo.com'); assert(payload.methods[0] === 'store_read'); assert(payload.methods[1] === 'store_write'); assert(payload.methods[2] === 'store_admin'); assert(payload.methods.length === 3); assert(payload.app_public_keys.length === 1); assert(payload.app_public_keys[0].public_key === jsontokens.SECP256K1Client.derivePublicKey(appPrivateKey)); assert(payload.blockchain_id === null); return true; }, function (e) { console.log('failure!'); console.log(e); console.log(e.stack); return false; }).then(function () { process.exit(0); }, function (e) { console.log(e.stack); process.exit(1); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJhc3NlcnQiLCJyZXF1aXJlIiwianNvbnRva2VucyIsImNsaWVudFByaXZhdGVLZXkiLCJhcHBQcml2YXRlS2V5IiwiYXBpUGFzc3dvcmQiLCJhdXRoUmVxdWVzdCIsImNvbnNvbGUiLCJsb2ciLCJ0aGVuIiwic2Vzc2lvbiIsInRva2VuIiwiZGVjb2RlVG9rZW4iLCJwYXlsb2FkIiwiSlNPTiIsInN0cmluZ2lmeSIsImFwcF9kb21haW4iLCJtZXRob2RzIiwibGVuZ3RoIiwiYXBwX3B1YmxpY19rZXlzIiwicHVibGljX2tleSIsIlNFQ1AyNTZLMUNsaWVudCIsImRlcml2ZVB1YmxpY0tleSIsImJsb2NrY2hhaW5faWQiLCJlcnJvciIsInN0YWNrIiwicmVzIiwiRXJyb3IiLCJlIiwicHJvY2VzcyIsImV4aXQiXSwibWFwcGluZ3MiOiI7O0FBR0E7O0FBSUE7O0FBUEE7QUFDQTtBQVFBLElBQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsSUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFFQSxJQUFNRSxnQkFBZ0IsR0FBRyxrRUFBekI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsa0VBQXRCO0FBQ0EsSUFBTUMsV0FBVyxHQUFHLDBDQUFwQjtBQUVBLElBQU1DLFdBQVcsR0FBRyw4QkFBZ0JILGdCQUFoQixFQUNnQixtQ0FEaEIsRUFDcUQsMkJBRHJELEVBRWdCLENBQUMsWUFBRCxFQUFlLGFBQWYsRUFBOEIsYUFBOUIsQ0FGaEIsRUFFOEQsYUFGOUQsQ0FBcEI7QUFJQUksT0FBTyxDQUFDQyxHQUFSLENBQVksNkJBQVo7QUFDQSwwQkFBZSxXQUFmLEVBQTRCLEtBQTVCLEVBQW1DSCxXQUFuQyxFQUFnREQsYUFBaEQsRUFBK0QsV0FBL0QsRUFBNEVFLFdBQTVFLEVBQ0dHLElBREgsQ0FDUSxVQUFDQyxPQUFELEVBQWE7QUFDakJILEVBQUFBLE9BQU8sQ0FBQ0Ms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dGVncmF0aW9uIHRlc3QgZnJhbWV3b3JrXG4vLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Jsb2Nrc3RhY2svYmxvY2tzdGFjay1jb3JlL3RyZWUvbWFzdGVyL2ludGVncmF0aW9uX3Rlc3RzXG5cbmltcG9ydCB7XG4gIGdldENvcmVTZXNzaW9uXG59IGZyb20gJy4uLy4uLy4uL3NyYy9hdXRoJ1xuXG5pbXBvcnQgeyBtYWtlQXV0aFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9zcmMvYXV0aC9hdXRoQXBwJ1xuXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QganNvbnRva2VucyA9IHJlcXVpcmUoJ2pzb250b2tlbnMnKVxuXG5jb25zdCBjbGllbnRQcml2YXRlS2V5ID0gJzhiMTM0ODNkNjVlNTVlYjIxODRmZjdjOTk3ODM3OWVmZjJmYWU3YWQ0MGRhMDlhZTRlM2U1Y2Y4NGIzNmE1NTAnXG5jb25zdCBhcHBQcml2YXRlS2V5ID0gJzk5YzAxZDA4NWY3OTE0ZTQ3MjVmZmEzMTYwZGY1ODNjMzdjYzI3ZTFlN2ZkNDhmMmQ2ZTE3ZDRhOWE0YmE1NWUnXG5jb25zdCBhcGlQYXNzd29yZCA9ICdibG9ja3N0YWNrX2ludGVncmF0aW9uX3Rlc3RfYXBpX3Bhc3N3b3JkJ1xuXG5jb25zdCBhdXRoUmVxdWVzdCA9IG1ha2VBdXRoUmVxdWVzdChjbGllbnRQcml2YXRlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vd3d3LmZvby5jb20vbWFuaWZlc3QuanNvbicsICdodHRwczovL3d3dy5mb28uY29tL2xvZ2luJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnc3RvcmVfcmVhZCcsICdzdG9yZV93cml0ZScsICdzdG9yZV9hZG1pbiddLCAnd3d3LmZvby5jb20nKVxuXG5jb25zb2xlLmxvZygnTG9nIGluIHdpdGggYSBibG9ja2NoYWluIElEJylcbmdldENvcmVTZXNzaW9uKCdsb2NhbGhvc3QnLCAxNjI2OCwgYXBpUGFzc3dvcmQsIGFwcFByaXZhdGVLZXksICdqdWRlY24uaWQnLCBhdXRoUmVxdWVzdClcbiAgLnRoZW4oKHNlc3Npb24pID0+IHtcbiAgICBjb25zb2xlLmxvZygnc3VjY2VzcyEnKVxuICAgIGNvbnNvbGUubG9nKHNlc3Npb24pXG5cbiAgICAvLyBpbnNwZWN0IHNlc3Npb25cbiAgICBjb25zdCB0b2tlbiA9IGpzb250b2tlbnMuZGVjb2RlVG9rZW4oc2Vzc2lvbilcbiAgICBjb25zdCBwYXlsb2FkID0gdG9rZW4ucGF5bG9hZFxuXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpXG5cbiAgICBhc3NlcnQocGF5bG9hZC5hcHBfZG9tYWluID09PSAnd3d3LmZvby5jb20nKVxuXG4gICAgYXNzZXJ0KHBheWxvYWQubWV0aG9kc1swXSA9PT0gJ3N0b3JlX3JlYWQnKVxuICAgIGFzc2VydChwYXlsb2FkLm1ldGhvZHNbMV0gPT09ICdzdG9yZV93cml0ZScpXG4gICAgYXNzZXJ0KHBheWxvYWQubWV0aG9kc1syXSA9PT0gJ3N0b3JlX2FkbWluJylcbiAgICBhc3NlcnQocGF5bG9hZC5tZXRob2RzLmxlbmd0aCA9PT0gMylcblxuICAgIGFzc2VydChwYXlsb2FkLmFwcF9wdWJsaWNfa2V5cy5sZW5ndGggPT09IDEpXG4gICAgYXNzZXJ0KHBheWxvYWQuYXBwX3B1YmxpY19rZXlzWzBdLnB1YmxpY19rZXlcbiAgICA9PT0ganNvbnRva2Vucy5TRUNQMjU2SzFDbGllbnQuZGVyaXZlUHVibGljS2V5KGFwcFByaXZhdGVLZXkpKVxuXG4gICAgYXNzZXJ0KHBheWxvYWQuYmxvY2tjaGFpbl9pZCA9PT0gJ2p1ZGVjbi5pZCcpXG4gICAgcmV0dXJuIHRydWVcbiAgfSwgKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcignZmFpbHVyZSEnKVxuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3Iuc3RhY2spXG4gICAgcmV0dXJuIGZhbHNlXG4gIH0pXG4gIC50aGVuKChyZXMpID0+IHtcbiAgICBpZiAoIXJlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gbG9nIGluIHdpdGggYmxvY2tjaGFpbiBJRCcpXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0xvZyBpbiB3aXRob3V0IGEgYmxvY2tjaGFpbiBJRCcpXG4gICAgLy8gdHJ5IHdpdGggbm8gYmxvY2tjaGFpbiBJRFxuICAgIHJldHVybiBnZXRDb3JlU2Vzc2lvbignbG9jYWxob3N0JywgMTYyNjgsIGFwaVBhc3N3b3JkLCBhcHBQcml2YXRlS2V5LCBudWxsLCBhdXRoUmVxdWVzdClcbiAgfSwgKGUpID0+IHtcbiAgICBjb25zb2xlLmxvZygnZmFpbHVyZSEnKVxuICAgIGNvbnNvbGUubG9nKGUuc3RhY2spXG4gIH0pXG4gIC50aGVuKChzZXNzaW9uKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ3N1Y2Nlc3MhJylcbiAgICBjb25zb2xlLmxvZyhzZXNzaW9uKVxuXG4gICAgLy8gaW5zcGVjdCBzZXNzaW9uXG4gICAgY29uc3QgdG9rZW4gPSBqc29udG9rZW5zLmRlY29kZVRva2VuKHNlc3Npb24pXG4gICAgY29uc3QgcGF5bG9hZCA9IHRva2VuLnBheWxvYWRcblxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKVxuXG4gICAgYXNzZXJ0KHBheWxvYWQuYXBwX2RvbWFpbiA9PT0gJ3d3dy5mb28uY29tJylcblxuICAgIGFzc2VydChwYXlsb2FkLm1ldGhvZHNbMF0gPT09ICdzdG9yZV9yZWFkJylcbiAgICBhc3NlcnQocGF5bG9hZC5tZXRob2RzWzFdID09PSAnc3RvcmVfd3JpdGUnKVxuICAgIGFzc2VydChwYXlsb2FkLm1ldGhvZHNbMl0gPT09ICdzdG9yZV9hZG1pbicpXG4gICAgYXNzZXJ0KHBheWxvYWQubWV0aG9kcy5sZW5ndGggPT09IDMpXG5cbiAgICBhc3NlcnQocGF5bG9hZC5hcHBfcHVibGljX2tleXMubGVuZ3RoID09PSAxKVxuICAgIGFzc2VydChwYXlsb2FkLmFwcF9wdWJsaWNfa2V5c1swXS5wdWJsaWNfa2V5IFxuICAgID09PSBqc29udG9rZW5zLlNFQ1AyNTZLMUNsaWVudC5kZXJpdmVQdWJsaWNLZXkoYXBwUHJpdmF0ZUtleSkpXG5cbiAgICBhc3NlcnQocGF5bG9hZC5ibG9ja2NoYWluX2lkID09PSBudWxsKVxuICAgIHJldHVybiB0cnVlXG4gIH0sIChlKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2ZhaWx1cmUhJylcbiAgICBjb25zb2xlLmxvZyhlKVxuICAgIGNvbnNvbGUubG9nKGUuc3RhY2spXG4gICAgcmV0dXJuIGZhbHNlXG4gIH0pXG4gIC50aGVuKCgpID0+IHtcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfSwgKGUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhlLnN0YWNrKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9KVxuIl19