Skip to content

Commit

Permalink
Merge pull request #104 from CityOfZion/CU-86a52dryt-2
Browse files Browse the repository at this point in the history
CU-86a53wqqc-BS Lib - Implement testNetwork method
  • Loading branch information
thiagocbalducci authored Oct 1, 2024
2 parents 9a19463 + 1c93ef9 commit e90021d
Show file tree
Hide file tree
Showing 16 changed files with 89 additions and 52 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"changes": [
{
"packageName": "@cityofzion/blockchain-service",
"comment": "Implement testNetwork method",
"type": "minor"
}
],
"packageName": "@cityofzion/blockchain-service"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"changes": [
{
"packageName": "@cityofzion/bs-ethereum",
"comment": "Implement testNetwork method",
"type": "minor"
}
],
"packageName": "@cityofzion/bs-ethereum"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"changes": [
{
"packageName": "@cityofzion/bs-neo-legacy",
"comment": "Implement testNetwork method",
"type": "minor"
}
],
"packageName": "@cityofzion/bs-neo-legacy"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"changes": [
{
"packageName": "@cityofzion/bs-neo3",
"comment": "Implement testNetwork method",
"type": "minor"
}
],
"packageName": "@cityofzion/bs-neo3"
}
4 changes: 2 additions & 2 deletions packages/blockchain-service/src/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ export interface BlockchainService<BSCustomName extends string = string, BSAvail
blockchainDataService: BlockchainDataService
tokens: Token[]
network: Network<BSAvailableNetworks>
clone: () => BlockchainService<BSCustomName, BSAvailableNetworks>
testNetwork: (network: Network<BSAvailableNetworks>) => Promise<void>
setNetwork: (partialNetwork: Network<BSAvailableNetworks>) => void
generateAccountFromMnemonic(mnemonic: string | string, index: number): Account
generateAccountFromMnemonic(mnemonic: string, index: number): Account
generateAccountFromKey(key: string): Account
decrypt(keyOrJson: string, password: string): Promise<Account>
encrypt(key: string, password: string): Promise<string>
Expand Down
13 changes: 7 additions & 6 deletions packages/bs-ethereum/src/BSEthereum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import { MoralisBDSEthereum } from './services/blockchain-data/MoralisBDSEthereu
import { MoralisEDSEthereum } from './services/exchange-data/MoralisEDSEthereum'
import { GhostMarketNDSEthereum } from './services/nft-data/GhostMarketNDSEthereum'
import { BlockscoutESEthereum } from './services/explorer/BlockscoutESEthereum'
import { RpcBDSEthereum } from './services/blockchain-data/RpcBDSEthereum'

export class BSEthereum<BSCustomName extends string = string>
implements
Expand Down Expand Up @@ -124,8 +125,10 @@ export class BSEthereum<BSCustomName extends string = string>
this.feeToken = nativeAsset
}

clone() {
return new BSEthereum(this.blockchainName, this.network, this.#getLedgerTransport)
async testNetwork(network: Network<BSEthereumNetworkId>) {
const blockchainDataServiceClone = new RpcBDSEthereum(network)

await blockchainDataServiceClone.getBlockHeight()
}

setNetwork(network: Network<BSEthereumNetworkId>) {
Expand Down Expand Up @@ -158,17 +161,15 @@ export class BSEthereum<BSCustomName extends string = string>
if (!key.startsWith('0x')) {
key = '0x' + key
}
if (ethersBytes.hexDataLength(key) !== 32) return false

return true
return ethersBytes.hexDataLength(key) === 32
} catch (error) {
return false
}
}

validateNameServiceDomainFormat(domainName: string): boolean {
if (!domainName.endsWith('.eth')) return false
return true
return domainName.endsWith('.eth')
}

generateAccountFromMnemonic(mnemonic: string[] | string, index: number): Account {
Expand Down
6 changes: 2 additions & 4 deletions packages/bs-ethereum/src/__tests__/BSEthereum.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,8 @@ describe('BSEthereum', () => {
)
})

it('Should be able to clone the BSEthereum', () => {
const newBsEthereum = bsEthereum.clone()

expect(newBsEthereum).toEqual(bsEthereum)
it('Should be able to test the network', () => {
expect(() => bsEthereum.testNetwork(network)).not.toThrowError()
})

it.skip('Should be able to calculate transfer fee', async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ describe('BlockscoutBDSEthereum', () => {
const transaction = await blockscoutBDSNeoX.getTransaction(txId)

expect(transaction).toEqual(expectedResponse)
})
}, 10000)

it('Should return transactions by address', async () => {
it.skip('Should return transactions by address', async () => {
const address = '0x5E1BE25D4A2De0083012f1B5A8030a7023fFA5bc'

const expectedResponse: TransactionsByAddressResponse = {
Expand Down Expand Up @@ -129,7 +129,7 @@ describe('BlockscoutBDSEthereum', () => {
expect(token).toEqual(expectedToken)
})

it('Should return balance', async () => {
it.skip('Should return balance', async () => {
const address = '0xD81a8F3c3f8b006Ef1ae4a2Fd28699AD7E3e21C5'

const expectedBalance: BalanceResponse[] = [
Expand All @@ -155,5 +155,5 @@ describe('BlockscoutBDSEthereum', () => {
const blockHeight = await blockscoutBDSNeoX.getBlockHeight()

expect(blockHeight).toBeGreaterThan(0)
})
}, 10000)
})
Original file line number Diff line number Diff line change
Expand Up @@ -978,7 +978,7 @@ describe('FlamingoEDSNeo3', () => {
const ratio = await moralisEDSEthereum.getCurrencyRatio('BRL')

expect(ratio).toEqual(expect.any(Number))
})
}, 10000)

it('Should return EUR currency ratio', async () => {
const ratio = await moralisEDSEthereum.getCurrencyRatio('EUR')
Expand Down
21 changes: 11 additions & 10 deletions packages/bs-neo-legacy/src/__tests__/BSNeoLegacy.spec.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
import { generateMnemonic } from '@cityofzion/bs-asteroid-sdk'
import { BSNeoLegacy } from '../services/BSNeoLegacy'
import { BSNeoLegacyConstants } from '../constants/BSNeoLegacyConstants'
import { BSNeoLegacyConstants, BSNeoLegacyNetworkId } from '../constants/BSNeoLegacyConstants'
import { Network } from '@cityofzion/blockchain-service'

let bsNeoLegacy: BSNeoLegacy

const network: Network<BSNeoLegacyNetworkId> = {
id: 'testnet',
url: 'http://seed5.ngd.network:20332',
name: 'testnet',
}

describe('BSNeoLegacy', () => {
beforeEach(() => {
bsNeoLegacy = new BSNeoLegacy('neoLegacy', {
id: 'testnet',
url: 'http://seed5.ngd.network:20332',
name: 'testnet',
})
bsNeoLegacy = new BSNeoLegacy('neoLegacy', network)
})

it('Should be able to validate an address', () => {
Expand Down Expand Up @@ -70,10 +73,8 @@ describe('BSNeoLegacy', () => {
expect(encryptedKey).toEqual(expect.any(String))
})

it('Should be able to clone the BSNeoLegacy', () => {
const newBsNeoLegacy = bsNeoLegacy.clone()

expect(newBsNeoLegacy).toEqual(bsNeoLegacy)
it('Should be able to test the network', async () => {
expect(() => bsNeoLegacy.testNetwork(network)).not.toThrowError()
})

it.skip('Should be able to transfer a native asset', async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ describe('FlamingoEDSNeo3', () => {
}),
})
})
})
}, 10000)

it('Should return the BRL currency ratio', async () => {
const ratio = await cryptoCompareEDSNeoLegacy.getCurrencyRatio('BRL')
Expand Down
6 changes: 4 additions & 2 deletions packages/bs-neo-legacy/src/services/BSNeoLegacy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,10 @@ export class BSNeoLegacy<BSCustomName extends string = string>
this.claimToken = tokens.find(token => token.symbol === 'GAS')!
}

clone() {
return new BSNeoLegacy(this.blockchainName, this.network)
async testNetwork(network: Network<BSNeoLegacyNetworkId>) {
const blockchainDataServiceClone = new DoraBDSNeoLegacy(network, this.feeToken, this.claimToken, this.tokens)

await blockchainDataServiceClone.getBlockHeight()
}

setNetwork(network: Network<BSNeoLegacyNetworkId>) {
Expand Down
29 changes: 13 additions & 16 deletions packages/bs-neo3/src/BSNeo3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import { NeonDappKitLedgerServiceNeo3 } from './services/ledger/NeonDappKitLedge
import { GhostMarketNDSNeo3 } from './services/nft-data/GhostMarketNDSNeo3'
import { FlamingoSwapServiceNeo3 } from './services/swap/FlamingoSwapServiceNeo3'
import { BSNeo3Constants, BSNeo3NetworkId } from './constants/BSNeo3Constants'
import { RpcBDSNeo3 } from './services/blockchain-data/RpcBDSNeo3'

export class BSNeo3<BSCustomName extends string = string>
implements
Expand Down Expand Up @@ -86,10 +87,6 @@ export class BSNeo3<BSCustomName extends string = string>
this.claimToken = tokens.find(token => token.symbol === 'GAS')!
}

clone() {
return new BSNeo3(this.blockchainName, this.network, this.#getLedgerTransport)
}

async generateSigningCallback(account: Account, isLedger?: boolean) {
const neonJsAccount = new wallet.Account(account.key)

Expand All @@ -116,7 +113,7 @@ export class BSNeo3<BSCustomName extends string = string>
#buildTransferInvocation({ intents, tipIntent }: TransferParam, account: Neon.wallet.Account): ContractInvocation[] {
const concatIntents = [...intents, ...(tipIntent ? [tipIntent] : [])]

const invocations: ContractInvocation[] = concatIntents.map(intent => {
return concatIntents.map(intent => {
return {
operation: 'transfer',
scriptHash: intent.tokenHash,
Expand All @@ -133,14 +130,18 @@ export class BSNeo3<BSCustomName extends string = string>
],
}
})

return invocations
}

createSwapService(): SwapService<BSNeo3NetworkId> {
return new FlamingoSwapServiceNeo3(this.network, this)
}

async testNetwork(network: Network<BSNeo3NetworkId>) {
const blockchainDataServiceClone = new RpcBDSNeo3(network, this.feeToken, this.claimToken, this.tokens)

await blockchainDataServiceClone.getBlockHeight()
}

setNetwork(network: Network<BSNeo3NetworkId>) {
this.#setTokens(network)
this.network = network
Expand All @@ -164,8 +165,7 @@ export class BSNeo3<BSCustomName extends string = string>
}

validateNameServiceDomainFormat(domainName: string): boolean {
if (!domainName.endsWith('.neo')) return false
return true
return domainName.endsWith('.neo')
}

generateAccountFromMnemonic(mnemonic: string[] | string, index: number): Account {
Expand Down Expand Up @@ -203,8 +203,7 @@ export class BSNeo3<BSCustomName extends string = string>
}

async encrypt(key: string, password: string): Promise<string> {
const encryptedKey = await wallet.encrypt(key, password)
return encryptedKey
return await wallet.encrypt(key, password)
}

async calculateTransferFee(param: TransferParam): Promise<string> {
Expand Down Expand Up @@ -249,11 +248,9 @@ export class BSNeo3<BSCustomName extends string = string>

const facade = await api.NetworkFacade.fromConfig({ node: this.network.url })

const transactionHash = await facade.claimGas(neonJsAccount, {
return await facade.claimGas(neonJsAccount, {
signingCallback: signingCallback,
})

return transactionHash
}

async resolveNameServiceDomain(domainName: string): Promise<any> {
Expand All @@ -276,7 +273,7 @@ export class BSNeo3<BSCustomName extends string = string>
const parsed = parser.parseRpcResponse(response.stack[0] as any, {
type: 'Hash160',
})
const address = parser.accountInputToAddress(parsed.replace('0x', ''))
return address

return parser.accountInputToAddress(parsed.replace('0x', ''))
}
}
6 changes: 2 additions & 4 deletions packages/bs-neo3/src/__tests__/services/BSNeo3.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,8 @@ describe('BSNeo3', () => {
expect(encryptedKey).toEqual(expect.any(String))
})

it('Should be able to clone the BSNeo3', () => {
const newBsNeo3 = bsNeo3.clone()

expect(newBsNeo3).toEqual(bsNeo3)
it('Should be able to test the network', async () => {
expect(() => bsNeo3.testNetwork(network)).not.toThrowError()
})

it.skip('Should be able to calculate transfer fee', async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ describe('FlamingoEDSNeo3', () => {
const ratio = await flamingoEDSNeo3.getCurrencyRatio('BRL')

expect(ratio).toEqual(expect.any(Number))
})
}, 10000)

it('Should return EUR currency ratio', async () => {
const ratio = await flamingoEDSNeo3.getCurrencyRatio('EUR')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { GhostMarketNDSNeo3 } from '../../../services/nft-data/GhostMarketNDSNeo

let ghostMarketNDSNeo3: GhostMarketNDSNeo3

describe('GhostMarketNDSNeo3', () => {
describe.skip('GhostMarketNDSNeo3', () => {
beforeAll(() => {
ghostMarketNDSNeo3 = new GhostMarketNDSNeo3(BSNeo3Constants.DEFAULT_NETWORK)
})
Expand Down

0 comments on commit e90021d

Please sign in to comment.