cardano-wallet-js
Version:
javascript/typescript client for the official cardano-wallet api
115 lines (89 loc) • 6.13 kB
text/typescript
import { expect } from 'chai';
import 'mocha';
import { ApiNetworkClockStatusEnum, ApiNetworkParametersActiveSlotCoefficientUnitEnum, ApiNetworkParametersEpochLengthUnitEnum, ApiNetworkParametersSlotLengthUnitEnum, WalletsTipHeightUnitEnum, WalletswalletIdpaymentfeesAmountUnitEnum } from '../models';
import { ApiNetworkInformationNodeEraEnum } from '../models/api-network-information';
import { WalletServer } from '../wallet-server';
import * as dotenv from "dotenv";
dotenv.config();
describe('Cardano wallet network', function() {
let walletServer: WalletServer;
let syncProgress = ['syncing', 'ready'];
let nodeEras = [ApiNetworkInformationNodeEraEnum.Allegra, ApiNetworkInformationNodeEraEnum.Byron, ApiNetworkInformationNodeEraEnum.Mary, ApiNetworkInformationNodeEraEnum.Shelley, ApiNetworkInformationNodeEraEnum.Alonzo];
let clockStatus = [ApiNetworkClockStatusEnum.Available, ApiNetworkClockStatusEnum.Unavailable, ApiNetworkClockStatusEnum.Pending];
let serverSettings = {
"pool_metadata_source": "direct"
};
before('Initializing test cluster', async function(){
walletServer = WalletServer.init(`http://${process.env.TEST_WALLET_HOST}:${process.env.TEST_WALLET_PORT}/v2`);
});
it("should get network information", async function() {
let information = await walletServer.getNetworkInformation();
expect(information).have.property('network_tip').with.property('time').be.a('string');
expect(information).have.property('network_tip').with.property('epoch_number').be.a('number');
expect(information).have.property('network_tip').with.property('absolute_slot_number').be.a('number');
expect(information).have.property('network_tip').with.property('slot_number').be.a('number');
expect(information).have.property('node_tip').with.property('time').be.a('string');
expect(information).have.property('node_tip').with.property('epoch_number').be.a('number');
expect(information).have.property('node_tip').with.property('absolute_slot_number').be.a('number');
expect(information).have.property('node_tip').with.property('slot_number').be.a('number');
expect(information).have.property('node_tip').with.property('height').with.property('quantity').be.a('number');
expect(information).have.property('node_tip').with.property('height').with.property('unit').equal('block');
expect(information).have.property('next_epoch').with.property('epoch_start_time').be.a('string');
expect(information).have.property('next_epoch').with.property('epoch_number').be.a('number');
expect(syncProgress).include(information.sync_progress.status);
if (information.sync_progress.status === syncProgress[0]) {
expect(information.sync_progress).have.property('progress').with.property('quantity').be.a('number');
expect(information.sync_progress).have.property('progress').with.property('unit').equal('percent');
}
expect(nodeEras).include(information.node_era);
});
it('should get network clock', async function() {
let clock = await walletServer.getNetworkClock();
expect(clockStatus).include(clock.status);
expect(clock).have.property('offset').with.property('quantity').be.a('number');
expect(clock).have.property('offset').with.property('unit').equal('microsecond');
});
it('should get network parameters', async function() {
let slotLengthUnits = [ApiNetworkParametersSlotLengthUnitEnum.Second];
let coefficientUnits = [ApiNetworkParametersActiveSlotCoefficientUnitEnum.Percent];
let epochLengthUnits = [ApiNetworkParametersEpochLengthUnitEnum.Slot];
let heightUnits = [WalletsTipHeightUnitEnum.Block];
let amountUnits = [WalletswalletIdpaymentfeesAmountUnitEnum.Lovelace];
let parameters = await walletServer.getNetworkParameters();
expect(parameters).have.property('slot_length').with.property('quantity').be.a('number');
expect(slotLengthUnits).include(parameters.slot_length.unit);
expect(parameters).have.property('decentralization_level').with.property('quantity').be.a('number');
expect(coefficientUnits).include(parameters.decentralization_level.unit);
expect(parameters).have.property('genesis_block_hash').lengthOf(64);
expect(parameters).have.property('blockchain_start_time').be.a('string');
expect(parameters).have.property('desired_pool_number').be.a('number');
expect(parameters).have.property('epoch_length').with.property('quantity').be.a('number');
expect(epochLengthUnits).include(parameters.epoch_length.unit);
let shelley = parameters.eras.shelley;
let mary = parameters.eras.mary;
let byron = parameters.eras.byron;
let allegra = parameters.eras.allegra;
expect(mary).have.property('epoch_start_time').be.a('string');
expect(mary).have.property('epoch_number').be.a('number');
expect(shelley).have.property('epoch_start_time').be.a('string');
expect(shelley).have.property('epoch_number').be.a('number');
expect(byron).have.property('epoch_start_time').be.a('string');
expect(byron).have.property('epoch_number').be.a('number');
expect(allegra).have.property('epoch_start_time').be.a('string');
expect(allegra).have.property('epoch_number').be.a('number');
expect(parameters).have.property('active_slot_coefficient').with.property('quantity').be.a('number');
expect(coefficientUnits).include(parameters.active_slot_coefficient.unit);
expect(parameters).have.property('security_parameter').with.property('quantity').be.a('number');
expect(heightUnits).include(parameters.security_parameter.unit);
expect(parameters).have.property('minimum_utxo_value').with.property('quantity').be.a('number');
expect(amountUnits).include(parameters.minimum_utxo_value.unit);
});
it("should update metadata source", async function(){
let poolMetadataSource = "direct";
await walletServer.updateMetadataSource(poolMetadataSource);
});
it("should get metadata source", async function(){
let metadataSource = await walletServer.getMetadataSource();
expect(serverSettings.pool_metadata_source).equal(metadataSource);
});
});