diff --git a/src/transaction/makeFulfillment.js b/src/transaction/makeFulfillment.js index d4f7e93..7faea10 100644 --- a/src/transaction/makeFulfillment.js +++ b/src/transaction/makeFulfillment.js @@ -1,4 +1,4 @@ -export default function createFulfillment(issuers = []) { +export default function makeFulfillment(issuers = []) { if (issuers.length === 1) { const fulfillment = { type: 'ed25519-sha-256', diff --git a/src/transaction/makeTransaction.js b/src/transaction/makeTransaction.js index 367d908..5af659c 100644 --- a/src/transaction/makeTransaction.js +++ b/src/transaction/makeTransaction.js @@ -22,7 +22,7 @@ export default function makeTransaction(operation, asset, metadata = null, outpu tx.operation = operation tx.asset = asset tx.metadata = metadata - tx.inputs = inputs + tx.inputs = realInputs tx.outputs = outputs // Hashing must be done after, as the hash is of the Transaction (up to now) @@ -30,6 +30,6 @@ export default function makeTransaction(operation, asset, metadata = null, outpu input.fulfillment = null }) tx.id = hashTransaction(tx) - tx.inputs = realInputs + tx.inputs = inputs return tx } diff --git a/test/integration/test_integration.js b/test/integration/test_integration.js index b5e53fe..992efd7 100644 --- a/test/integration/test_integration.js +++ b/test/integration/test_integration.js @@ -42,6 +42,24 @@ test('Valid CREATE transaction', t => { }) +test('Valid CREATE transaction with Threshold input', t => { + const conn = new Connection(API_PATH) + + const tx = Transaction.makeCreateTransaction( + asset(), + metaData, + [aliceOutput], + alice.publicKey, + bob.publicKey + ) + const txSigned = Transaction.signTransaction(tx, alice.privateKey, bob.privateKey) + + return conn.postTransaction(txSigned) + .then(({ id }) => conn.pollStatusAndFetchTransaction(id)) + .then(resTx => t.truthy(resTx)) +}) + + test('Valid TRANSFER transaction with single Ed25519 input', t => { const conn = new Connection(API_PATH) const createTx = Transaction.makeCreateTransaction( @@ -109,6 +127,39 @@ test('Valid TRANSFER transaction with multiple Ed25519 inputs', t => { }) }) +test('Valid TRANSFER transaction with Threshold input', t => { + const conn = new Connection(API_PATH) + const createTx = Transaction.makeCreateTransaction( + asset(), + metaData, + [aliceOutput], + alice.publicKey, + bob.publicKey + ) + const createTxSigned = Transaction.signTransaction( + createTx, + alice.privateKey, + bob.privateKey + ) + + return conn.postTransaction(createTxSigned) + .then(({ id }) => conn.pollStatusAndFetchTransaction(id)) + .then(() => { + const transferTx = Transaction.makeTransferTransaction( + createTxSigned, + metaData, + [aliceOutput], + 0 + ) + const transferTxSigned = Transaction.signTransaction( + transferTx, + alice.privateKey + ) + return conn.postTransaction(transferTxSigned) + .then(({ id }) => conn.pollStatusAndFetchTransaction(id)) + .then(resTx => t.truthy(resTx)) + }) +}) test('Search for spent and unspent outputs of a given public key', t => { const conn = new Connection(API_PATH) @@ -214,7 +265,6 @@ test('Search for spent outputs for a given public key', t => { ) const createTxSigned = Transaction.signTransaction( createTx, - carol.privateKey, carol.privateKey ) diff --git a/test/transaction/test_cryptoconditions.js b/test/transaction/test_cryptoconditions.js index 0b24c08..0c741af 100644 --- a/test/transaction/test_cryptoconditions.js +++ b/test/transaction/test_cryptoconditions.js @@ -62,9 +62,7 @@ test('Fulfillment correctly formed', t => { [0] ) const txSigned = Transaction.signTransaction(txTransfer, alice.privateKey) - txTransfer.inputs.forEach((input) => { - input.fulfillment = null // OJOOO - }) + const msg = Transaction.serializeTransactionIntoCanonicalString(txTransfer) t.truthy(cc.validateFulfillment(txSigned.inputs[0].fulfillment, txCreate.outputs[0].condition.uri, diff --git a/test/transaction/test_transaction.js b/test/transaction/test_transaction.js index d5a28ed..79f02ef 100644 --- a/test/transaction/test_transaction.js +++ b/test/transaction/test_transaction.js @@ -4,6 +4,7 @@ import sinon from 'sinon' import { Transaction } from '../../src' import * as makeTransaction from '../../src/transaction/makeTransaction' // eslint-disable-line import makeInputTemplate from '../../src/transaction/makeInputTemplate' +import makeFulfillment from '../../src/transaction/makeFulfillment' import { alice, @@ -85,7 +86,8 @@ test('Create TRANSFER transaction based on CREATE transaction', t => { [aliceOutput], [makeInputTemplate( [alice.publicKey], - { output_index: 0, transaction_id: createTx.id } + { output_index: 0, transaction_id: createTx.id }, + makeFulfillment([alice.publicKey]) )] ] @@ -113,7 +115,8 @@ test('Create TRANSFER transaction based on TRANSFER transaction', t => { [aliceOutput], [makeInputTemplate( [alice.publicKey], - { output_index: 0, transaction_id: transferTx.id } + { output_index: 0, transaction_id: transferTx.id }, + makeFulfillment([alice.publicKey]) )] ]