From 63e6fc091ca5d35b413143cf3c04f18fa33b9b0b Mon Sep 17 00:00:00 2001 From: "Mark S. Lewis" Date: Tue, 25 Jul 2017 09:49:13 +0100 Subject: [PATCH] IdCard API changes (#1415) * Removed images (for now) * Removed TLS certificates as these are in-lined in connection.json * JSDoc corrections * Moved some validation out of fromArchive() into constructor * Added validation for mandatory 'name' field in connection.json * Added package export for IdCard * Changed IdCard.getCredentials() * Renamed IdCard.getBusinessNetwork() to getBusinessNetworkName() * Renamed IdCard.getConnection() to getConnectionProfile() * Added IdCard.getEnrollmentCredentials() * getDescription() and getBusinessNetworkName() always return a String Signed-off-by: Mark S. Lewis --- packages/composer-common/api.txt | 9 +- packages/composer-common/changelog.txt | 2 +- packages/composer-common/index.js | 1 + packages/composer-common/lib/idcard.js | 114 ++++++++---------- .../invalid-metadata-image/metadata.json | 4 - .../data/id-cards/minimal/connection.json | 1 + .../test/data/id-cards/minimal/metadata.json | 2 +- .../connection.json | 0 .../missing-connection-name/metadata.json | 3 + .../id-cards/missing-connection/metadata.json | 2 +- .../missing-metadata-name/connection.json | 1 + .../id-cards/missing-metadata/connection.json | 1 + .../valid-with-enrollment/connection.json | 39 ++++++ .../valid-with-enrollment/metadata.json | 8 ++ .../test/data/id-cards/valid/connection.json | 1 + ...bed90e43e2276f0ed204e26233f906803b6ef-priv | 5 - ...0bed90e43e2276f0ed204e26233f906803b6ef-pub | 4 - .../data/id-cards/valid/credentials/PeerAdmin | 1 - .../data/id-cards/valid/credentials/admin | 1 - ...da0c340ca187a9b17aa9a4457-priv => private} | 0 ...68da0c340ca187a9b17aa9a4457-pub => public} | 0 .../test/data/id-cards/valid/images/conga.png | Bin 13483 -> 0 bytes .../test/data/id-cards/valid/metadata.json | 8 +- .../test/data/id-cards/valid/tlscerts/ca.crt | 15 --- .../data/id-cards/valid/tlscerts/server.crt | 14 --- .../data/id-cards/valid/tlscerts/server.key | 5 - packages/composer-common/test/idcard.js | 69 +++++------ 27 files changed, 143 insertions(+), 167 deletions(-) delete mode 100644 packages/composer-common/test/data/id-cards/invalid-metadata-image/metadata.json rename packages/composer-common/test/data/id-cards/{invalid-metadata-image => missing-connection-name}/connection.json (100%) create mode 100644 packages/composer-common/test/data/id-cards/missing-connection-name/metadata.json create mode 100644 packages/composer-common/test/data/id-cards/valid-with-enrollment/connection.json create mode 100644 packages/composer-common/test/data/id-cards/valid-with-enrollment/metadata.json delete mode 100644 packages/composer-common/test/data/id-cards/valid/credentials/299acf40adb20268d13881833a0bed90e43e2276f0ed204e26233f906803b6ef-priv delete mode 100644 packages/composer-common/test/data/id-cards/valid/credentials/299acf40adb20268d13881833a0bed90e43e2276f0ed204e26233f906803b6ef-pub delete mode 100644 packages/composer-common/test/data/id-cards/valid/credentials/PeerAdmin delete mode 100644 packages/composer-common/test/data/id-cards/valid/credentials/admin rename packages/composer-common/test/data/id-cards/valid/credentials/{114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457-priv => private} (100%) rename packages/composer-common/test/data/id-cards/valid/credentials/{114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457-pub => public} (100%) delete mode 100644 packages/composer-common/test/data/id-cards/valid/images/conga.png delete mode 100644 packages/composer-common/test/data/id-cards/valid/tlscerts/ca.crt delete mode 100644 packages/composer-common/test/data/id-cards/valid/tlscerts/server.crt delete mode 100755 packages/composer-common/test/data/id-cards/valid/tlscerts/server.key diff --git a/packages/composer-common/api.txt b/packages/composer-common/api.txt index 3699aacb1f..334b5a2eeb 100644 --- a/packages/composer-common/api.txt +++ b/packages/composer-common/api.txt @@ -50,11 +50,10 @@ class FileWallet extends Wallet { class IdCard { + String getName() + String getDescription() - + String getBusinessNetwork() - + Object getImage() - + Object getConnection() - + Map getCredentials() - + Map getTlsCertificates() + + String getBusinessNetworkName() + + Object getConnectionProfile() + + Object getCredentials() + + Object getEnrollmentCredentials() + Promise fromArchive(Buffer) } class IllegalModelException extends BaseFileException { diff --git a/packages/composer-common/changelog.txt b/packages/composer-common/changelog.txt index 9ee60d4a7b..e68a3671af 100644 --- a/packages/composer-common/changelog.txt +++ b/packages/composer-common/changelog.txt @@ -11,7 +11,7 @@ # # Note that the latest public API is documented using JSDocs and is available in api.txt. # -Version 0.10.1 {fe6fa1850003a7c5d47bf43e3ab8d628} 2017-07-24 +Version 0.10.1 {5d850eefdff10604eb0fdef2bd7aef5a} 2017-07-24 - Added InvalidQueryException, BaseFileException - Added IdCard to composer-common package diff --git a/packages/composer-common/index.js b/packages/composer-common/index.js index 8eadfb1c9c..c562d1fe48 100644 --- a/packages/composer-common/index.js +++ b/packages/composer-common/index.js @@ -76,6 +76,7 @@ module.exports.FileWriter = require('./lib/codegen/filewriter'); module.exports.FSConnectionProfileStore = require('./lib/fsconnectionprofilestore'); module.exports.FunctionDeclaration = require('./lib/introspect/functiondeclaration'); module.exports.Globalize = require('./lib/globalize'); +module.exports.IdCard = require('./lib/idcard'); module.exports.Introspector = require('./lib/introspect/introspector'); module.exports.Limit = require('./lib/query/limit'); module.exports.Logger = require('./lib/log/logger'); diff --git a/packages/composer-common/lib/idcard.js b/packages/composer-common/lib/idcard.js index 251df11f8e..43e8fac27c 100644 --- a/packages/composer-common/lib/idcard.js +++ b/packages/composer-common/lib/idcard.js @@ -15,37 +15,44 @@ 'use strict'; const JSZip = require('jszip'); -const path = require('path'); const Logger = require('./log/logger'); const LOG = Logger.getLog('IdCard'); /** - * An ID card. + * An ID card. Encapsulates credentials and other information required to connect to a specific business network + * as a specific user. + *

+ * Instances of this class should be created using {@link IdCard.fromArchive}. * @class * @memberof module:composer-common */ class IdCard { /** - * Create the BusinessNetworkDefinition. + * Create the IdCard. *

* Note: Only to be called by framework code. Applications should * retrieve instances from {@link IdCard.fromArchive} * @param {Object} metadata - metadata associated with the card. - * @param {Object} connection - connection properties associated with the card. - * @param {Map} credentials - map of credential filename String keys to credential data Buffer objects. - * @param {Map} tlscerts - map of TLS certificate filename String keys to TLS certificate data Buffer objects. + * @param {Object} connectionProfile - connection profile associated with the card. + * @param {Object} credentials - credentials used to connect to business network. * @private */ - constructor(metadata, connection, credentials, tlscerts) { + constructor(metadata, connectionProfile, credentials) { const method = 'constructor'; LOG.entry(method); + if (!(metadata && metadata.name)) { + throw Error('Required metadata field not found: name'); + } + if (!(connectionProfile && connectionProfile.name)) { + throw Error('Required connection field not found: name'); + } + this.metadata = metadata; - this.connection = connection; + this.connectionProfile = connectionProfile; this.credentials = credentials; - this.tlscerts = tlscerts; LOG.exit(method); } @@ -62,52 +69,55 @@ class IdCard { /** * Free text description of the card. - * @return {String} description, or {@link undefined} if none exists. + * @return {String} card description. */ getDescription() { - return this.metadata.description; - } - - /** - * Business network to which the ID card applies. Generally this will be present but may be omitted for system - * cards. - * @return {String} description, or {@link undefined} if none exists. - */ - getBusinessNetwork() { - return this.metadata.businessNetwork; + return this.metadata.description || ''; } /** - * Image associated with the card. - * @return {Object} an object of the form { name: imageFileName, data: bufferOfImageData }, - * or {@link undefined} if none exists. + * Name of the business network to which the ID card applies. Generally this will be present but may be + * omitted for system cards. + * @return {String} business network name. */ - getImage() { - return this.image; + getBusinessNetworkName() { + return this.metadata.businessNetwork || ''; } /** * Connection profile for this card. + *

+ * This is a mandatory field. * @return {Object} connection profile. */ - getConnection() { - return this.connection; + getConnectionProfile() { + return this.connectionProfile; } /** - * Credentials associated with this card. - * @return {Map} Map of filename {@link String} keys to {@link Buffer} data. + * Credentials associated with this card, and which are used to connect to the associated business network. + * @return {Object} credentials in the form { public: publicKey, private: privateKey }, if they exist. */ getCredentials() { return this.credentials; } /** - * TLS certificates used to connect to the business networks. - * @return {Map} Map of filename {@link String} keys to {@link Buffer} data. + * Enrollment credentials. If there are no credentials associated with this card, these credentials are used to + * enroll with a business network and obtain certificates. + * @return {Object} enrollment credentials in the form { id: enrollmentId, secret: enrollmentSecret }, if + * they exist. */ - getTlsCertificates() { - return this.tlscerts; + getEnrollmentCredentials() { + let result = null; + const id = this.metadata.enrollmentId; + const secret = this.metadata.enrollmentSecret; + if (id || secret) { + result = Object.create(null); + result.id = id; + result.secret = secret; + } + return result; } /** @@ -123,10 +133,8 @@ class IdCard { let promise = Promise.resolve(); let metadata; - let image; let connection; - const credentials = new Map(); - const tlscerts = new Map(); + let credentials = Object.create(null); LOG.debug(method, 'Loading connection.json'); const connectionFile = zip.file('connection.json'); @@ -150,52 +158,28 @@ class IdCard { return metadataFile.async('string'); }).then((metadataContent) => { metadata = JSON.parse(metadataContent); - if (!metadata.name) { - throw Error('Required meta-data field not found: name'); - } - - if (metadata.image) { - LOG.debug(method, 'Loading image ' + metadata.image); - - const imagePromise = zip.file(metadata.image); - if (!imagePromise) { - throw Error('Image file not found: ' + metadata.image); - } - - return imagePromise.async('nodebuffer').then((imageContent) => { - const shortFilename = path.basename(metadata.image); - image = { - name: shortFilename, - data: imageContent - }; - }); - } }); - const loadDirectoryToMap = function(directoryName, map) { + const loadDirectoryToObject = function(directoryName, obj) { // Incude '/' following directory name const fileIndex = directoryName.length + 1; // Find all files that are direct children of specified directory const files = zip.file(new RegExp(`^${directoryName}/[^/]+$`)); files && files.forEach((file) => { promise = promise.then(() => { - return file.async('nodebuffer'); + return file.async('string'); }).then((content) => { const filename = file.name.slice(fileIndex); - map.set(filename, content); + obj[filename] = content; }); }); }; LOG.debug(method, 'Loading credentials'); - loadDirectoryToMap('credentials', credentials); - - LOG.debug(method, 'Loading tlscerts'); - loadDirectoryToMap('tlscerts', tlscerts); + loadDirectoryToObject('credentials', credentials); return promise.then(() => { - const idCard = new IdCard(metadata, connection, credentials, tlscerts); - idCard.image = image; + const idCard = new IdCard(metadata, connection, credentials); LOG.exit(method, idCard.toString()); return idCard; }); diff --git a/packages/composer-common/test/data/id-cards/invalid-metadata-image/metadata.json b/packages/composer-common/test/data/id-cards/invalid-metadata-image/metadata.json deleted file mode 100644 index f9ca62bc90..0000000000 --- a/packages/composer-common/test/data/id-cards/invalid-metadata-image/metadata.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name" : "com.example.cards.Minimal", - "image": "NON_EXISTENT_IMAGE_FILENAME" -} diff --git a/packages/composer-common/test/data/id-cards/minimal/connection.json b/packages/composer-common/test/data/id-cards/minimal/connection.json index 549c63eef9..c77d5ec141 100644 --- a/packages/composer-common/test/data/id-cards/minimal/connection.json +++ b/packages/composer-common/test/data/id-cards/minimal/connection.json @@ -1,4 +1,5 @@ { + "name": "hlfv1", "type": "hlfv1", "orderers": [ { diff --git a/packages/composer-common/test/data/id-cards/minimal/metadata.json b/packages/composer-common/test/data/id-cards/minimal/metadata.json index 249da19d9b..c76a323a5f 100644 --- a/packages/composer-common/test/data/id-cards/minimal/metadata.json +++ b/packages/composer-common/test/data/id-cards/minimal/metadata.json @@ -1,3 +1,3 @@ { - "name" : "com.example.cards.Minimal" + "name": "Minimal" } diff --git a/packages/composer-common/test/data/id-cards/invalid-metadata-image/connection.json b/packages/composer-common/test/data/id-cards/missing-connection-name/connection.json similarity index 100% rename from packages/composer-common/test/data/id-cards/invalid-metadata-image/connection.json rename to packages/composer-common/test/data/id-cards/missing-connection-name/connection.json diff --git a/packages/composer-common/test/data/id-cards/missing-connection-name/metadata.json b/packages/composer-common/test/data/id-cards/missing-connection-name/metadata.json new file mode 100644 index 0000000000..c76a323a5f --- /dev/null +++ b/packages/composer-common/test/data/id-cards/missing-connection-name/metadata.json @@ -0,0 +1,3 @@ +{ + "name": "Minimal" +} diff --git a/packages/composer-common/test/data/id-cards/missing-connection/metadata.json b/packages/composer-common/test/data/id-cards/missing-connection/metadata.json index 249da19d9b..c76a323a5f 100644 --- a/packages/composer-common/test/data/id-cards/missing-connection/metadata.json +++ b/packages/composer-common/test/data/id-cards/missing-connection/metadata.json @@ -1,3 +1,3 @@ { - "name" : "com.example.cards.Minimal" + "name": "Minimal" } diff --git a/packages/composer-common/test/data/id-cards/missing-metadata-name/connection.json b/packages/composer-common/test/data/id-cards/missing-metadata-name/connection.json index 549c63eef9..c77d5ec141 100644 --- a/packages/composer-common/test/data/id-cards/missing-metadata-name/connection.json +++ b/packages/composer-common/test/data/id-cards/missing-metadata-name/connection.json @@ -1,4 +1,5 @@ { + "name": "hlfv1", "type": "hlfv1", "orderers": [ { diff --git a/packages/composer-common/test/data/id-cards/missing-metadata/connection.json b/packages/composer-common/test/data/id-cards/missing-metadata/connection.json index 549c63eef9..c77d5ec141 100644 --- a/packages/composer-common/test/data/id-cards/missing-metadata/connection.json +++ b/packages/composer-common/test/data/id-cards/missing-metadata/connection.json @@ -1,4 +1,5 @@ { + "name": "hlfv1", "type": "hlfv1", "orderers": [ { diff --git a/packages/composer-common/test/data/id-cards/valid-with-enrollment/connection.json b/packages/composer-common/test/data/id-cards/valid-with-enrollment/connection.json new file mode 100644 index 0000000000..c77d5ec141 --- /dev/null +++ b/packages/composer-common/test/data/id-cards/valid-with-enrollment/connection.json @@ -0,0 +1,39 @@ +{ + "name": "hlfv1", + "type": "hlfv1", + "orderers": [ + { + "url": "grpcs://", + "cert": "orderer1.crt" + }, + { + "url": "grpcs://", + "cert": "orderer2.crt" + } + ], + "ca": { + "url": "https://", + "name": "", + "trustedRoots": "", + "verify": true + }, + "peers": [ + { + "requestURL": "grpcs://", + "eventURL": "grpcs://", + "cert": "peer1.crt" + }, + { + "requestURL": "grpcs://", + "eventURL": "grpcs://", + "cert": "peer2.crt" + } + ], + "keyValStore": "/YOUR_HOME_DIR/.composer-credentials", + "channel": "composerchannel", + "mspID": "Org1MSP", + "timeout": 300, + "globalcert": "", + "maxSendSize": 10, + "maxRecvSize": 15 +} \ No newline at end of file diff --git a/packages/composer-common/test/data/id-cards/valid-with-enrollment/metadata.json b/packages/composer-common/test/data/id-cards/valid-with-enrollment/metadata.json new file mode 100644 index 0000000000..7bd10f73bc --- /dev/null +++ b/packages/composer-common/test/data/id-cards/valid-with-enrollment/metadata.json @@ -0,0 +1,8 @@ +{ + "name": "Conga", + "description": "A valid ID card", + "businessNetwork": "org-acme-biznet", + "image": "images/conga.png", + "enrollmentId": "conga", + "enrollmentSecret": "super-secret-passphrase" +} diff --git a/packages/composer-common/test/data/id-cards/valid/connection.json b/packages/composer-common/test/data/id-cards/valid/connection.json index 549c63eef9..c77d5ec141 100644 --- a/packages/composer-common/test/data/id-cards/valid/connection.json +++ b/packages/composer-common/test/data/id-cards/valid/connection.json @@ -1,4 +1,5 @@ { + "name": "hlfv1", "type": "hlfv1", "orderers": [ { diff --git a/packages/composer-common/test/data/id-cards/valid/credentials/299acf40adb20268d13881833a0bed90e43e2276f0ed204e26233f906803b6ef-priv b/packages/composer-common/test/data/id-cards/valid/credentials/299acf40adb20268d13881833a0bed90e43e2276f0ed204e26233f906803b6ef-priv deleted file mode 100644 index 1edeb54e3b..0000000000 --- a/packages/composer-common/test/data/id-cards/valid/credentials/299acf40adb20268d13881833a0bed90e43e2276f0ed204e26233f906803b6ef-priv +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgChrXYkGKlYO/Vyit -G7iWx7oYvdDhVZS9FKOUDf9hJzuhRANCAASJpA+8/w8scgjPGJZsvocNPJMT3Y9m -YtavzY9pup/rF7NAocoFEH+oYT9rTO39+92GkJO/7nk3HwWQ0YfocTNZ ------END PRIVATE KEY----- diff --git a/packages/composer-common/test/data/id-cards/valid/credentials/299acf40adb20268d13881833a0bed90e43e2276f0ed204e26233f906803b6ef-pub b/packages/composer-common/test/data/id-cards/valid/credentials/299acf40adb20268d13881833a0bed90e43e2276f0ed204e26233f906803b6ef-pub deleted file mode 100644 index df88a7f64a..0000000000 --- a/packages/composer-common/test/data/id-cards/valid/credentials/299acf40adb20268d13881833a0bed90e43e2276f0ed204e26233f906803b6ef-pub +++ /dev/null @@ -1,4 +0,0 @@ ------BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiaQPvP8PLHIIzxiWbL6HDTyTE92P -ZmLWr82Pabqf6xezQKHKBRB/qGE/a0zt/fvdhpCTv+55Nx8FkNGH6HEzWQ== ------END PUBLIC KEY----- diff --git a/packages/composer-common/test/data/id-cards/valid/credentials/PeerAdmin b/packages/composer-common/test/data/id-cards/valid/credentials/PeerAdmin deleted file mode 100644 index 7db3ed06a5..0000000000 --- a/packages/composer-common/test/data/id-cards/valid/credentials/PeerAdmin +++ /dev/null @@ -1 +0,0 @@ -{"name":"PeerAdmin","mspid":"Org1MSP","roles":null,"affiliation":"","enrollmentSecret":"","enrollment":{"signingIdentity":"114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457","identity":{"certificate":"-----BEGIN CERTIFICATE-----\nMIICGjCCAcCgAwIBAgIRANuOnVN+yd/BGyoX7ioEklQwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNjI2MTI0OTI2WhcNMjcwNjI0MTI0OTI2\nWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGu8KxBQ1GkxSTMVoLv7NXiYKWj5t6Dh\nWRTJBHnLkWV7lRUfYaKAKFadSii5M7Z7ZpwD8NS7IsMdPR6Z4EyGgwKjTTBLMA4G\nA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIBmrZau7BIB9\nrRLkwKmqpmSecIaOOr0CF6Mi2J5H4aauMAoGCCqGSM49BAMCA0gAMEUCIQC4sKQ6\nCEgqbTYe48az95W9/hnZ+7DI5eSnWUwV9vCd/gIgS5K6omNJydoFoEpaEIwM97uS\nXVMHPa0iyC497vdNURA=\n-----END CERTIFICATE-----\n"}}} \ No newline at end of file diff --git a/packages/composer-common/test/data/id-cards/valid/credentials/admin b/packages/composer-common/test/data/id-cards/valid/credentials/admin deleted file mode 100644 index 65a81bd84b..0000000000 --- a/packages/composer-common/test/data/id-cards/valid/credentials/admin +++ /dev/null @@ -1 +0,0 @@ -{"name":"admin","mspid":"Org1MSP","roles":null,"affiliation":"","enrollmentSecret":"","enrollment":{"signingIdentity":"299acf40adb20268d13881833a0bed90e43e2276f0ed204e26233f906803b6ef","identity":{"certificate":"-----BEGIN CERTIFICATE-----\nMIIB8TCCAZegAwIBAgIUYiOMoEQLJjv67ouTyKF/AGQwc30wCgYIKoZIzj0EAwIw\nczELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh\nbiBGcmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMT\nE2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNzA3MDIzMTAwWhcNMTgwNzA3MDIz\nMTAwWjAQMQ4wDAYDVQQDEwVhZG1pbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBImkD7z/DyxyCM8Ylmy+hw08kxPdj2Zi1q/Nj2m6n+sXs0ChygUQf6hhP2tM7f37\n3YaQk7/ueTcfBZDRh+hxM1mjbDBqMA4GA1UdDwEB/wQEAwICBDAMBgNVHRMBAf8E\nAjAAMB0GA1UdDgQWBBTCXR6ye6azchCpfPqAC2eRoXKgEDArBgNVHSMEJDAigCAZ\nq2WruwSAfa0S5MCpqqZknnCGjjq9AhejItieR+GmrjAKBggqhkjOPQQDAgNIADBF\nAiEA+qTBDKAE/9Hjh0Zn/J4zUgmNwOfhjXKaUKDFWrklbd0CIBIRZRX5z1RDQJAy\nX/LfDmPKGY4uCqTMkUj8ZuuGwqol\n-----END CERTIFICATE-----\n"}}} \ No newline at end of file diff --git a/packages/composer-common/test/data/id-cards/valid/credentials/114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457-priv b/packages/composer-common/test/data/id-cards/valid/credentials/private similarity index 100% rename from packages/composer-common/test/data/id-cards/valid/credentials/114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457-priv rename to packages/composer-common/test/data/id-cards/valid/credentials/private diff --git a/packages/composer-common/test/data/id-cards/valid/credentials/114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457-pub b/packages/composer-common/test/data/id-cards/valid/credentials/public similarity index 100% rename from packages/composer-common/test/data/id-cards/valid/credentials/114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457-pub rename to packages/composer-common/test/data/id-cards/valid/credentials/public diff --git a/packages/composer-common/test/data/id-cards/valid/images/conga.png b/packages/composer-common/test/data/id-cards/valid/images/conga.png deleted file mode 100644 index 775c1ef8898ad4c3690721971b58ae2d897898ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13483 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 NEUzwCE@K|@{{f0k+T{QM diff --git a/packages/composer-common/test/data/id-cards/valid/metadata.json b/packages/composer-common/test/data/id-cards/valid/metadata.json index c1658f09b1..4d981bb73d 100644 --- a/packages/composer-common/test/data/id-cards/valid/metadata.json +++ b/packages/composer-common/test/data/id-cards/valid/metadata.json @@ -1,6 +1,6 @@ { - "name" : "com.example.cards.Dan", - "description" : "Dan's Card for Production Network", - "businessNetwork" : "org-acme-biznet", - "image" : "images/conga.png" + "name": "Conga", + "description": "A valid ID card", + "businessNetwork": "org-acme-biznet", + "image": "images/conga.png" } diff --git a/packages/composer-common/test/data/id-cards/valid/tlscerts/ca.crt b/packages/composer-common/test/data/id-cards/valid/tlscerts/ca.crt deleted file mode 100644 index f779b66377..0000000000 --- a/packages/composer-common/test/data/id-cards/valid/tlscerts/ca.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSDCCAe+gAwIBAgIQEvXT1R9Bjz16NNZ0lRCnyDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjYxMjQ5MjZaFw0yNzA2MjQxMjQ5 -MjZaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEXhfzP6un0RG7Ju3xB2L+Z1N3ti7ZWTUcjylvFIo9WH2kdbd2s2MXJAiq -0iWI64FUa4ZRwld9PXr12opwoaf5Q6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg7ZoAf+CA940a -9UENvzXO2sl4HOaAjzw1c7dI6w3hQqwwCgYIKoZIzj0EAwIDRwAwRAIgLAHv49O1 -uEF96e1m45g5wOsBUDwFnYWg9iy53tJ815kCIAXL7AvDlNHk2eEGOKVi6UZUOrcP -d0fDafkffCmv86mE ------END CERTIFICATE----- diff --git a/packages/composer-common/test/data/id-cards/valid/tlscerts/server.crt b/packages/composer-common/test/data/id-cards/valid/tlscerts/server.crt deleted file mode 100644 index 30cab191cb..0000000000 --- a/packages/composer-common/test/data/id-cards/valid/tlscerts/server.crt +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICOjCCAeGgAwIBAgIQBJoV3CWCr6nSXQsjv8BgQzAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjYxMjQ5MjZaFw0yNzA2MjQxMjQ5 -MjZaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29t -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3pLUrkpTc/+Dvk9q64SHYpbg0H14 -dDbqWiIHsdcRSKv1GLgW60Rs4WKcRgKj6jAzzt9qf3sNNyiLg6p4z4ROTaNsMGow -DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM -BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIO2aAH/ggPeNGvVBDb81ztrJeBzmgI88 -NXO3SOsN4UKsMAoGCCqGSM49BAMCA0cAMEQCIH7xbUq9DMhy21bXXb3i8dIta/vV -mxLxZfSuu9+GLkZKAiBIRXd31n9LaoI1dgklt+d9A2ogpHX5+euq3k/fnp57qQ== ------END CERTIFICATE----- diff --git a/packages/composer-common/test/data/id-cards/valid/tlscerts/server.key b/packages/composer-common/test/data/id-cards/valid/tlscerts/server.key deleted file mode 100755 index b040bb2cc4..0000000000 --- a/packages/composer-common/test/data/id-cards/valid/tlscerts/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgPc3M5x+tOTwF+nKp -t+LfeCHjPdzRGAgEF1PxtyApEnahRANCAATektSuSlNz/4O+T2rrhIdiluDQfXh0 -NupaIgex1xFIq/UYuBbrRGzhYpxGAqPqMDPO32p/ew03KIuDqnjPhE5N ------END PRIVATE KEY----- diff --git a/packages/composer-common/test/idcard.js b/packages/composer-common/test/idcard.js index ee4598be27..7c65b61cf2 100644 --- a/packages/composer-common/test/idcard.js +++ b/packages/composer-common/test/idcard.js @@ -91,32 +91,32 @@ describe('IdCard', function() { }); }); - it('should throw error on missing metadata.json', function() { - return readIdCardAsync('missing-metadata').then((readBuffer) => { + it('should throw error on missing name field in connection.json', function() { + return readIdCardAsync('missing-connection-name').then((readBuffer) => { return IdCard.fromArchive(readBuffer).then(function resolved(card) { throw Error('Card loaded without error'); }, function rejected(error) { - error.message.should.include('metadata.json'); + error.message.should.include('name'); }); }); }); - it('should throw error on missing name field in metadata', function() { - return readIdCardAsync('missing-metadata-name').then((readBuffer) => { + it('should throw error on missing metadata.json', function() { + return readIdCardAsync('missing-metadata').then((readBuffer) => { return IdCard.fromArchive(readBuffer).then(function resolved(card) { throw Error('Card loaded without error'); }, function rejected(error) { - error.message.should.include('name'); + error.message.should.include('metadata.json'); }); }); }); - it('should throw error on invalid image field in metadata', function() { - return readIdCardAsync('invalid-metadata-image').then((readBuffer) => { + it('should throw error on missing name field in metadata', function() { + return readIdCardAsync('missing-metadata-name').then((readBuffer) => { return IdCard.fromArchive(readBuffer).then(function resolved(card) { throw Error('Card loaded without error'); }, function rejected(error) { - error.message.should.include('NON_EXISTENT_IMAGE_FILENAME'); + error.message.should.include('name'); }); }); }); @@ -125,45 +125,34 @@ describe('IdCard', function() { return readIdCardAsync('valid').then((readBuffer) => { return IdCard.fromArchive(readBuffer); }).then((card) => { - card.getName().should.equal('com.example.cards.Dan'); - card.getDescription().should.equal('Dan\'s Card for Production Network'); - card.getBusinessNetwork().should.equal('org-acme-biznet'); - card.getImage().should.exist; + card.getName().should.equal('Conga'); + card.getDescription().should.equal('A valid ID card'); + card.getBusinessNetworkName().should.equal('org-acme-biznet'); + should.not.exist(card.getEnrollmentCredentials()); }); }); - it('should load connection details', function() { - return readIdCardAsync('valid').then((readBuffer) => { + it('should return empty string if no business network name defined', function() { + return readIdCardAsync('minimal').then((readBuffer) => { return IdCard.fromArchive(readBuffer); }).then((card) => { - card.getConnection().should.be.an('Object'); + card.getBusinessNetworkName().should.be.empty; }); }); - it('should load an image named in metadata.json', function() { - return readIdCardAsync('valid').then((readBuffer) => { + it('should return empty string if no description defined', function() { + return readIdCardAsync('minimal').then((readBuffer) => { return IdCard.fromArchive(readBuffer); }).then((card) => { - const image = card.getImage(); - image.name.should.be.a('String'); - image.data.should.be.an.instanceof(Buffer); + card.getDescription().should.be.empty; }); }); - it('should refer to an image by short filename', function() { + it('should load connection profile', function() { return readIdCardAsync('valid').then((readBuffer) => { return IdCard.fromArchive(readBuffer); }).then((card) => { - const image = card.getImage(); - image.name.should.equal('conga.png'); - }); - }); - - it('should have an undefined image field if no image specified in metadata.json', function() { - return readIdCardAsync('minimal').then((readBuffer) => { - return IdCard.fromArchive(readBuffer); - }).then((card) => { - should.equal(card.getImage(), undefined); + card.getConnectionProfile().should.be.an('Object'); }); }); @@ -172,20 +161,18 @@ describe('IdCard', function() { return IdCard.fromArchive(readBuffer); }).then((card) => { const credentials = card.getCredentials(); - credentials.should.be.an.instanceof(Map); - credentials.size.should.equal(6); - credentials.get('PeerAdmin').should.be.an.instanceof(Buffer); + credentials.public.should.include('-----BEGIN PUBLIC KEY-----'); + credentials.private.should.include('-----BEGIN PRIVATE KEY-----'); }); }); - it('should load tlscerts', function() { - return readIdCardAsync('valid').then((readBuffer) => { + it('should load enrollment credentials', function() { + return readIdCardAsync('valid-with-enrollment').then((readBuffer) => { return IdCard.fromArchive(readBuffer); }).then((card) => { - const tlscerts = card.getTlsCertificates(); - tlscerts.should.be.an.instanceof(Map); - tlscerts.size.should.equal(3); - tlscerts.get('ca.crt').should.be.an.instanceof(Buffer); + const credentials = card.getEnrollmentCredentials(); + credentials.id.should.equal('conga'); + credentials.secret.should.equal('super-secret-passphrase'); }); });