js-bigchaindb-driver/test/test2.js

89 lines
2.9 KiB
JavaScript
Raw Normal View History

import test from 'ava'
import cc from 'five-bells-condition'
2017-06-16 11:22:23 +02:00
import { Ed25519Keypair, Transaction, Connection } from '../src'
2017-06-08 14:09:23 +02:00
2017-06-16 11:22:23 +02:00
const API_PATH = 'http://localhost:9984/api/v1/'
test('Keypair is created', t => {
const keyPair = new Ed25519Keypair()
t.truthy(keyPair.publicKey)
t.truthy(keyPair.privateKey)
})
2017-06-08 14:09:23 +02:00
2017-06-16 11:22:23 +02:00
test('Valid CREATE transaction is evaluated by BigchainDB', t => {
const alice = new Ed25519Keypair()
const asset = { name: 'Shmui', type: 'cat' }
const metadata = { dayOfTheWeek: 'Caturday' }
2017-06-08 14:09:23 +02:00
2017-06-16 11:22:23 +02:00
const tx = Transaction.makeCreateTransaction(
asset,
metadata,
[Transaction.makeOutput(Transaction.makeEd25519Condition(alice.publicKey))],
alice.publicKey
)
const txSigned = Transaction.signTransaction(tx, alice.privateKey)
const conn = new Connection(API_PATH)
return conn.postTransaction(txSigned)
.then(resTx => t.truthy(resTx))
})
2017-06-16 11:22:23 +02:00
/*
* CryptoConditions support tests
*/
2017-06-20 11:35:25 +02:00
test('Ed25519 condition encoding', t => {
2017-06-20 10:45:12 +02:00
const publicKey = '4zvwRjXUKGfvwnParsHAS3HuSVzV5cA4McphgmoCtajS'
const target = {
details: {
2017-06-20 11:35:25 +02:00
type: 'ed25519-sha-256',
2017-06-20 10:45:12 +02:00
public_key: publicKey,
2017-06-20 11:35:25 +02:00
signature: null,
2017-06-20 10:45:12 +02:00
},
uri: 'ni:///sha-256;uLdVX7FEjLWVDkAkfMAkEqPPwFqZj7qfiGE152t_x5c?fpt=ed25519-sha-256&cost=131072'
}
2017-06-20 11:35:25 +02:00
t.deepEqual(target, Transaction.makeEd25519Condition(publicKey))
})
test('Threshold condition encoding', t => {
const publicKey = '4zvwRjXUKGfvwnParsHAS3HuSVzV5cA4McphgmoCtajS'
const condition = Transaction.makeThresholdCondition(
1, [Transaction.makeEd25519Condition(publicKey, false)])
const target = {
details: {
type: 'threshold-sha-256',
threshold: 1,
subfulfillments: [{
type: 'ed25519-sha-256',
public_key: publicKey,
signature: null,
}]
},
uri: 'ni:///sha-256;VBIfZSoBprUQy-LVNAzaZ2q-eyWbrcPKtBg1PuNXIpQ?fpt=threshold-sha-256&cost=132096&subtypes=ed25519-sha-256'
}
t.deepEqual(target, condition)
2017-06-20 10:45:12 +02:00
})
test('Fulfillment correctly formed', t => {
const alice = new Ed25519Keypair()
const txCreate = Transaction.makeCreateTransaction(
{},
{},
[Transaction.makeOutput(Transaction.makeEd25519Condition(alice.publicKey))],
alice.publicKey
)
const txTransfer = Transaction.makeTransferTransaction(
txCreate,
{},
[Transaction.makeOutput(Transaction.makeEd25519Condition(alice.publicKey))],
[0]
)
const msg = Transaction.serializeTransactionIntoCanonicalString(txTransfer)
const txSigned = Transaction.signTransaction(txTransfer, alice.privateKey)
t.truthy(cc.validateFulfillment(txSigned.inputs[0].fulfillment,
txCreate.outputs[0].condition.uri,
new Buffer(msg)))
})