UNPKG

caver-js

Version:

caver-js is a JavaScript API library that allows developers to interact with a Klaytn node

92 lines (70 loc) 3.33 kB
/* Copyright 2020 The caver-js Authors This file is part of the caver-js library. The caver-js library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The caver-js library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the caver-js. If not, see <http://www.gnu.org/licenses/>. */ const fs = require('fs') const { expect } = require('./extendedChai') const testRPCURL = require('./testrpc') const Caver = require('../index') const caver = new Caver(testRPCURL) let sender let projectId let projectSecret before(() => { const privateKey = process.env.privateKey && String(process.env.privateKey).indexOf('0x') === -1 ? `0x${process.env.privateKey}` : process.env.privateKey sender = caver.wallet.add(caver.wallet.keyring.createFromPrivateKey(privateKey)) projectId = process.env.infuraProjectId projectSecret = process.env.infuraProjectSecret }) describe('Connect IPFS with Klaytn', () => { it('CAVERJS-UNIT-IPFS-001: should add file to IPFS and return hash (test with infura ipfs node)', async () => { // Set IPFS Node const options = caver.ipfs.createOptions({ projectId, projectSecret }) // await caver.ipfs.setIPFSNode('ipfs.infura.io', 5001, true, options) caver.ipfs.setIPFSNode('ipfs.infura.io', 5001, true, options) // Create test txt file for IPFS const testFileName = './ipfsTestFile.txt' fs.openSync(testFileName, 'w+') fs.writeFileSync(testFileName, 'test data for IPFS') // Add file to IPFS const added = await caver.ipfs.add(testFileName) expect(typeof added).to.equal('string') // Add file to IPFS with file contents const contents = fs.readFileSync(testFileName) const addedWithContents = await caver.ipfs.add(contents) expect(typeof addedWithContents).to.equal('string') // Get contents from IPFS const fileFromIPFS = await caver.ipfs.get(added) // Create ValueTransferMemo transaction // to submit IPFS hash to Klaytn network const vtm = caver.transaction.valueTransferMemo.create({ from: sender.address, to: sender.address, value: 1, input: caver.ipfs.toHex(added), gas: 30000, }) // Sign to transaction await caver.wallet.sign(sender.address, vtm) // Send signed transaction const ret = await caver.rpc.klay.sendRawTransaction(vtm) expect(ret.input).to.equal(caver.ipfs.toHex(added)) // Get a file from IPFS using the hash value recorded on the Klaytn network const catResult = await caver.ipfs.get(caver.ipfs.fromHex(ret.input)) expect(catResult.compare(fileFromIPFS)).to.equal(0) fs.unlinkSync(testFileName) }).timeout(1000000) })