UNPKG

@fioprotocol/fiosdk

Version:

The Foundation for Interwallet Operability (FIO) is a consortium of leading blockchain wallets, exchanges and payments providers that seeks to accelerate blockchain adoption by reducing the risk, complexity, and inconvenience of sending and receiving cryp

209 lines (174 loc) 7.17 kB
/* tslint:disable:no-console */ import * as dotenv from 'dotenv' import 'mocha' import nodeFetch from 'node-fetch' import { FIOSDK, } from '../src/FIOSDK' import { RawAbiTests } from './common/raw-abi.spec' import { WrongRequestsTests } from './common/wrong-requests.spec' import { GenericActionsTests } from './common/generic-actions.spec' import { AccountPermissionsTests } from './common/account-permissions.spec' import { FioPermissionsTests } from './common/fio-permissions.spec' import { VoteBlockProducerTests } from './common/vote-blockproducer.spec' import { StakeTokensTests } from './common/stake-tokens.spec' import { NftsTests } from './common/nfts.spec' import { FioRequestApproveAndPayFundsTests } from './common/fio-request-approve-pay-funds.spec' import { FioRequestCancelTests } from './common/fio-request-cancel.spec' import { FioRequestRejectTests } from './common/fio-request-reject.spec' import { TransferTokensTests } from './common/transfer-tokens.spec' import { RecordObtDataTests } from './common/record-obt-data.spec' import { defaultFee } from './constants' import { generateTestingFioAddress, generateTestingFioDomain, mnemonic, mnemonic2, timeout } from './utils' import { CheckTransactionTests } from './common/check-transaction.spec' import { EncryptDecryptContentTests } from './common/encrypt-decrypt-content.spec' import { FioRequestsWithDifferentEncryptKeysTests } from './common/fio-requests-with-different-encrypt-keys.spec' dotenv.config({path: ['.env.test', '.env']}) const fetchJson = async (uri: string, opts = {}) => { return nodeFetch(uri, opts) } let privateKey let publicKey let privateKey2 let publicKey2 let testFioAddressName let testFioAddressName2 let testFioDomainName const faucetPub = process.env.LOCAL_FAUCET_PUBLIC_KEY as string const faucetPriv = process.env.LOCAL_FAUCET_PRIVATE_KEY as string let fioSdk: FIOSDK let fioSdk2: FIOSDK let fioSdkWithWrongBaseUrl: FIOSDK /** * Url for local dev node */ const baseUrls = ['http://localhost:8889/v1/'] // e.g., ['http://localhost:8889/v1/'] /** * Keys to transfer funds to be able make all calls with fee */ /* FAUCET_PRIV_KEY: '5KF2B21xT5pE5G3LNA6LKJc6AP2pAd2EnfpAUrJH12SFV8NtvCD', FAUCET_PUB_KEY: 'FIO6zwqqzHQcqCc2MB4jpp1F73MXpisEQe2SDghQFSGQKoAPjvQ3H', FAUCET_ACCOUNT: 'qhh25sqpktwh', */ const proxyTpId = 'bp1@dapixdev' const receiveTransferTimout = 5000 before(async () => { let privateKeyRes = await FIOSDK.createPrivateKeyMnemonic(mnemonic) privateKey = privateKeyRes.fioKey let publicKeyRes = FIOSDK.derivedPublicKey(privateKey) publicKey = publicKeyRes.publicKey fioSdk = new FIOSDK({ privateKey, publicKey, apiUrls: baseUrls, fetchJson, }) const testDomain = generateTestingFioDomain() testFioAddressName = generateTestingFioAddress(testDomain) testFioDomainName = testDomain await timeout(1000) privateKeyRes = await FIOSDK.createPrivateKeyMnemonic(mnemonic2) privateKey2 = privateKeyRes.fioKey publicKeyRes = FIOSDK.derivedPublicKey(privateKey2) publicKey2 = publicKeyRes.publicKey fioSdk2 = new FIOSDK({ privateKey: privateKey2, publicKey: publicKey2, apiUrls: baseUrls, fetchJson, }) fioSdkWithWrongBaseUrl = new FIOSDK({ privateKey: privateKey2, publicKey: publicKey2, apiUrls: baseUrls, fetchJson, }) const testDomain2 = generateTestingFioDomain() await timeout(1000) testFioAddressName2 = generateTestingFioAddress(testDomain2) const fioSdkFaucet = new FIOSDK({ privateKey: faucetPriv, publicKey: faucetPub, apiUrls: baseUrls, fetchJson, }) await fioSdkFaucet.transferTokens({ payeeFioPublicKey: publicKey, amount: defaultFee * 4, maxFee: defaultFee, }) await fioSdkFaucet.transferTokens({ payeeFioPublicKey: publicKey2, amount: defaultFee * 4, maxFee: defaultFee, }) await timeout(receiveTransferTimout) try { const isAvailableResult = await fioSdk.genericAction('isAvailable', { fioName: testDomain, }) if (!isAvailableResult.is_registered) { await fioSdk.genericAction('registerFioDomain', { fioDomain: testDomain, maxFee: defaultFee, }) } await fioSdk.genericAction('setFioDomainVisibility', { fioDomain: testDomain, isPublic: true, maxFee: defaultFee, technologyProviderId: '', }) const isAvailableResult3 = await fioSdk2.genericAction('isAvailable', { fioName: testDomain2, }) if (!isAvailableResult3.is_registered) { await fioSdk2.genericAction('registerFioDomain', { fioDomain: testDomain2, maxFee: defaultFee, }) } const isAvailableResult1 = await fioSdk.genericAction('isAvailable', { fioName: testFioAddressName, }) if (!isAvailableResult1.is_registered) { await fioSdk.genericAction('registerFioAddress', { fioAddress: testFioAddressName, maxFee: defaultFee, }) } const isAvailableResult2 = await fioSdk2.genericAction('isAvailable', { fioName: testFioAddressName2, }) if (!isAvailableResult2.is_registered) { await fioSdk2.genericAction('registerFioAddress', { fioAddress: testFioAddressName2, maxFee: defaultFee, }) } } catch (e) { console.log(e) } }) // We should add tests into describe and it blocks to await sdk instances and FIO Handles registrations describe('', () => { it('', () => { RawAbiTests({ fioSdk }); WrongRequestsTests({ fioSdk, baseUrls, fioSdkWithWrongBaseUrl }); GenericActionsTests({ fioSdk, fioSdk2, publicKey, publicKey2, testFioDomainName, testFioAddressName }); FioPermissionsTests({ fioSdk, publicKey, publicKey2 }); AccountPermissionsTests({ fioSdk, fioSdk2, publicKey, publicKey2, testFioDomainName, testFioAddressName }); VoteBlockProducerTests({ fioSdk, publicKey, proxyTpId, testFioAddressName }); StakeTokensTests({ fioSdk, publicKey, testFioAddressName }); NftsTests({ fioSdk, testFioAddressName }); FioRequestApproveAndPayFundsTests({ fioSdk, fioSdk2, publicKey, publicKey2, testFioAddressName, testFioAddressName2 }); FioRequestCancelTests({ fioSdk2, testFioAddressName, testFioAddressName2 }); FioRequestRejectTests({ fioSdk, fioSdk2, testFioAddressName, testFioAddressName2 }); FioRequestsWithDifferentEncryptKeysTests({ baseUrls, faucetPriv, faucetPub }); RecordObtDataTests({ fioSdk, fioSdk2, publicKey, publicKey2, testFioAddressName, testFioAddressName2 }); TransferTokensTests({ fioSdk, fioSdk2, publicKey2 }); EncryptDecryptContentTests({ baseUrls }); CheckTransactionTests({ fioSdk2, testFioAddressName, testFioAddressName2 }); }) })