pyth-crosschain/test/sc-test.js

59 lines
2.6 KiB
JavaScript

const PricecasterLib = require('../lib/pricecaster')
const tools = require('../tools/app-tools')
const algosdk = require('algosdk')
const { expect } = require('chai')
const chai = require('chai')
chai.use(require('chai-as-promised'))
// Test general configuration for Betanet
const validatorAddr = 'OPDM7ACAW64Q4VBWAL77Z5SHSJVZZ44V3BAN7W44U43SUXEOUENZMZYOQU'
const validatorMnemo = 'assault approve result rare float sugar power float soul kind galaxy edit unusual pretty tone tilt net range pelican avoid unhappy amused recycle abstract master'
const otherAddr = 'DMTBK62XZ6KNI7L5E6TRBTPB4B3YNVB4WYGSWR42SEV4XKV4LYHGBW4O34'
const otherMnemo = 'old agree harbor cost pink fog chunk hope vital used rural soccer model acquire clown host friend bring marriage surge dirt surge slab absent punch'
const symbol = 'BTC/USD '
const signatures = {}
signatures[validatorAddr] = algosdk.mnemonicToSecretKey(validatorMnemo)
signatures[otherAddr] = algosdk.mnemonicToSecretKey(otherMnemo)
function signCallback (sender, tx) {
const txSigned = tx.signTxn(signatures[sender].sk)
return txSigned
}
describe('Price-Keeper contract tests', function () {
let pclib
let algodClient
before(async function () {
algodClient = new algosdk.Algodv2('', 'https://api.betanet.algoexplorer.io', '')
pclib = new PricecasterLib.PricecasterLib(algodClient)
console.log('Clearing accounts of all previous apps...')
const appsTo = await tools.readCreatedApps(algodClient, validatorAddr)
for (let i = 0; i < appsTo.length; i++) {
console.log('Clearing ' + appsTo[i].id)
try {
const txId = await pclib.deleteApp(validatorAddr, signCallback, appsTo[i].id)
await pclib.waitForConfirmation(txId)
} catch (e) {
console.error('Could not delete application! Reason: ' + e)
}
}
console.log('Creating new app...')
const txId = await pclib.createApp(validatorAddr, validatorAddr, symbol, signCallback)
const txResponse = await pclib.waitForTransactionResponse(txId)
const appId = pclib.appIdFromCreateAppResponse(txResponse)
pclib.setAppId(appId)
console.log('App Id: %d', appId)
})
it('Must fail to create app with bad symbol', async function () {
await expect(pclib.createApp(validatorAddr, validatorAddr, 'XXXXX', signCallback)).to.be.rejectedWith('Bad Request')
})
it('Must accept valid message and store data', async function () {
const msgb64 = pclib.createMessage(BigInt(1), 'BTC/USD ', 48526.50, 8.99999967, signatures[validatorAddr].sk)
console.log(msgb64)
await expect(pclib.submitMessage(validatorAddr, msgb64, signCallback)).to.eventually.have.length(52)
})
})