import { expect } from 'chai'; import { Validation } from '../src'; describe('Address Validation', () => { // BTC const btcAddress = '1NuKwkDtCymgA1FNLUBaUWLD8s4kdKWvgn'; const btcTestAddress = 'mkUNMewkQsHKRcUvv5HLKbqmepCqNH8goc'; // BCH const bchAddress = 'qr8uujscckc56ancdkmqnyyl2rx6pnp24gmdfrf8qd'; const bchTestLegacyAddress = 'mms6yCDGo3fDdapguTSMtCyF9XGfWJpD6H'; // DOGE const dogeAddress = 'DQnSpKaUdXYZz8Q4WUBCdaGBSthiAJbWBr'; const dogeTestAddress = 'nY525SPsHXVopmUMm1JyReDEop45MSWc3D'; // LTC const ltcAddress = 'LYgDcZ3oW3aZBhZUyiC84fb99hyUPVxLwB'; const ltcTestAddress = 'QhpBFbYvLG2bgCZ3D1ztGEUVqmcgY5vjVF'; // ETH const ethAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const prefixEthAddress = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; // BSC const bscAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const prefixBscAddress = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; // MATIC const maticAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const prefixMaticAddress = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; // FTM const ftmAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const prefixFtmAddress = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; // KCS const kcsAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const prefixKcsAddress = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; // AVAX const avaxAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const prefixAvaxAddress = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; // XRP const xrpAddress = 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh'; // Uri const btcUri = 'bitcoin:1NuKwkDtCymgA1FNLUBaUWLD8s4kdKWvgn'; const bchUri = 'bitcoincash:pp8skudq3x5hzw8ew7vzsw8tn4k8wxsqsv0lt0mf3g'; const dogeUri = 'dogecoin:DQnSpKaUdXYZz8Q4WUBCdaGBSthiAJbWBr'; const ltcUri = 'litecoin:LYgDcZ3oW3aZBhZUyiC84fb99hyUPVxLwB'; const ethUri = 'ethereum:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const ethUriParams = 'ethereum:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123&gasPrice=123&gas=123&gasLimit=123'; const ethUriSingleParam = 'ethereum:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123'; const btcTestUri = 'bitcoin:mkUNMewkQsHKRcUvv5HLKbqmepCqNH8goc'; const bchTestUri = 'bchtest:qq083kgf3wjg7ya8nun36e8nf24g9xgvachahfnyle'; const dogeTestUri = 'dogecoin:mpz836YMHb7Ubjx4G2YnutwQRd1yz5ssNv'; const ltcTestUri = 'litecoin:QhpBFbYvLG2bgCZ3D1ztGEUVqmcgY5vjVF'; const xrpUri = 'ripple:rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF'; const xrpUriParams = 'ripple:rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF?amount=123456&dt=123456'; const xrpUriSingleParam = 'ripple:rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF?amount=123456'; const bscUri = 'binancesc:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const bscUriParams = 'binancesc:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123&gasPrice=123&gas=123&gasLimit=123'; const bscUriSingleParam = 'binancesc:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123'; const maticUri = 'polygon:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const maticUriParams = 'polygon:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123&gasPrice=123&gas=123&gasLimit=123'; const maticUriSingleParam = 'polygon:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123'; const ftmUri = 'fantom:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const ftmUriParams = 'fantom:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123&gasPrice=123&gas=123&gasLimit=123'; const ftmUriSingleParam = 'fantom:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123'; const avaxUri = 'avalanche:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const avaxUriParams = 'avalanche:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123&gasPrice=123&gas=123&gasLimit=123'; const avaxUriSingleParam = 'avalanche:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123'; const kcsUri = 'kucoin:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const kcsUriParams = 'kucoin:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123&gasPrice=123&gas=123&gasLimit=123'; const kcsUriSingleParam = 'kucoin:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123'; // Invalid Address const invalidBtcAddress = '1NuKwkDtCymgA1FNLUBaUWLD8s4kKWvgn'; const invalidBchAddress = 'r8uujscckc56ancdkmqnyyl2rx6pnp24gmdfrf8qd'; const invalidDogeAddress = 'DQnSpKaUdXYZz8Q4WUBCdaGBSthiAJbWB'; const invalidLtcAddress = 'LYgDcZ3oW3aZBhZUyiC84fb99hyUPVxLw'; const invalidEthAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08'; const invalidBscAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08'; const invalidMaticAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08'; const invalidFtmAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08'; const invalidAvaxAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08'; const invalidXrpAddress = 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTH'; const invalidKcsAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08'; // Invalid Uri const invalidEthPrefix = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const invalidBscPrefix = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const invalidMaticPrefix = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const invalidFtmPrefix = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const invalidKcsPrefix = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const invalidAvaxPrefix = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; const invalidXrpPrefix = 'rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF'; const invalidEthUriParams = 'ethereum:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=invalid&gasLimit=123&gas=123'; const invalidBscUriParams = 'binancesc:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=invalid&gasLimit=123&gas=123'; const invalidMaticUriParams = 'polygon:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=invalid&gasLimit=123&gas=123'; const invalidFtmUriParams = 'fantom:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=invalid&gasLimit=123&gas=123'; const invalidAvaxUriParams = 'avalanche:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=invalid&gasLimit=123&gas=123'; const invalidXrpUriParams = 'ripple:rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF?amount=invalid&dt=123'; const invalidKcsUriParams = 'kucoin:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=invalid&gasLimit=123&gas=123'; it('should be able to validate an BTC address', async () => { const isValidAddress = await Validation.validateAddress('BTC', 'mainnet', btcAddress); const isValidTestAddress = await Validation.validateAddress('BTC', 'testnet', btcTestAddress); expect(isValidAddress).to.equal(true); expect(isValidTestAddress).to.equal(true); }); it('should be able to validate an BCH address', async () => { const isValidAddress = await Validation.validateAddress('BCH', 'mainnet', bchAddress); const isValidTestLegacyAddress = await Validation.validateAddress('BCH', 'testnet', bchTestLegacyAddress); expect(isValidAddress).to.equal(true); expect(isValidTestLegacyAddress).to.equal(true); }); it('should be able to validate an DOGE address', async () => { const isValidAddress = await Validation.validateAddress('DOGE', 'mainnet', dogeAddress); const isValidTestAddress = await Validation.validateAddress('DOGE', 'testnet', dogeTestAddress); expect(isValidAddress).to.equal(true); expect(isValidTestAddress).to.equal(true); }); it('should be able to validate an LTC address', async () => { const isValidAddress = await Validation.validateAddress('LTC', 'mainnet', ltcAddress); const isValidTestAddress = await Validation.validateAddress('LTC', 'testnet', ltcTestAddress); expect(isValidAddress).to.equal(true); expect(isValidTestAddress).to.equal(true); }); it('should be able to validate an ETH address', async () => { const isValidAddress = await Validation.validateAddress('ETH', 'mainnet', ethAddress); const isValidPrefixAddress = await Validation.validateAddress('ETH', 'mainnet', prefixEthAddress); expect(isValidAddress).to.equal(true); expect(isValidPrefixAddress).to.equal(true); }); it('should be able to validate an BSC address', async () => { const isValidAddress = await Validation.validateAddress('BSC', 'mainnet', bscAddress); const isValidPrefixAddress = await Validation.validateAddress('BSC', 'mainnet', prefixBscAddress); expect(isValidAddress).to.equal(true); expect(isValidPrefixAddress).to.equal(true); }); it('should be able to validate an MATIC address', async () => { const isValidAddress = await Validation.validateAddress('MATIC', 'mainnet', maticAddress); const isValidPrefixAddress = await Validation.validateAddress('MATIC', 'mainnet', prefixMaticAddress); expect(isValidAddress).to.equal(true); expect(isValidPrefixAddress).to.equal(true); }); it('should be able to validate an FTM address', async () => { const isValidAddress = await Validation.validateAddress('FTM', 'mainnet', ftmAddress); const isValidPrefixAddress = await Validation.validateAddress('FTM', 'mainnet', prefixFtmAddress); expect(isValidAddress).to.equal(true); expect(isValidPrefixAddress).to.equal(true); }); it('should be able to validate an KCS address', async () => { const isValidAddress = await Validation.validateAddress('KCS', 'mainnet', kcsAddress); const isValidPrefixAddress = await Validation.validateAddress('KCS', 'mainnet', prefixKcsAddress); expect(isValidAddress).to.equal(true); expect(isValidPrefixAddress).to.equal(true); }); it('should be able to validate an AVAX address', async () => { const isValidAddress = await Validation.validateAddress('AVAX', 'mainnet', avaxAddress); const isValidPrefixAddress = await Validation.validateAddress('AVAX', 'mainnet', prefixAvaxAddress); expect(isValidAddress).to.equal(true); expect(isValidPrefixAddress).to.equal(true); }); it('should be able to validate an XRP address', async () => { const isValidAddress = await Validation.validateAddress('XRP', 'mainnet', xrpAddress); expect(isValidAddress).to.equal(true); }); it('should be able to validate an BTC Uri', async () => { const isValidUri = await Validation.validateUri('BTC', btcUri); const isValidTestUri = await Validation.validateUri('BTC', btcTestUri); expect(isValidUri).to.equal(true); expect(isValidTestUri).to.equal(true); }); it('should be able to validate an BCH Uri', async () => { const isValidUri = await Validation.validateUri('BCH', bchUri); const isValidTestUri = await Validation.validateUri('BCH', bchTestUri); expect(isValidUri).to.equal(true); expect(isValidTestUri).to.equal(true); }); it('should be able to validate an DOGE Uri', async () => { const isValidUri = await Validation.validateUri('DOGE', dogeUri); const isValidTestUri = await Validation.validateUri('DOGE', dogeTestUri); expect(isValidUri).to.equal(true); expect(isValidTestUri).to.equal(true); }); it('should be able to validate an LTC Uri', async () => { const isValidUri = await Validation.validateUri('LTC', ltcUri); const isValidTestUri = await Validation.validateUri('LTC', ltcTestUri); expect(isValidUri).to.equal(true); expect(isValidTestUri).to.equal(true); }); it('should be able to validate an ETH Uri', async () => { const isValidUri = await Validation.validateUri('ETH', ethUri); const isValidUriParams = await Validation.validateUri('ETH', ethUriParams); const isValidUriSingleParam = await Validation.validateUri('ETH', ethUriSingleParam); expect(isValidUri).to.equal(true); expect(isValidUriParams).to.equal(true); expect(isValidUriSingleParam).to.equal(true); }); it('should be able to validate an BSC Uri', async () => { const isValidUri = await Validation.validateUri('BSC', bscUri); const isValidUriParams = await Validation.validateUri('BSC', bscUriParams); const isValidUriSingleParam = await Validation.validateUri('BSC', bscUriSingleParam); expect(isValidUri).to.equal(true); expect(isValidUriParams).to.equal(true); expect(isValidUriSingleParam).to.equal(true); }); it('should be able to validate an MATIC Uri', async () => { const isValidUri = await Validation.validateUri('MATIC', maticUri); const isValidUriParams = await Validation.validateUri('MATIC', maticUriParams); const isValidUriSingleParam = await Validation.validateUri('MATIC', maticUriSingleParam); expect(isValidUri).to.equal(true); expect(isValidUriParams).to.equal(true); expect(isValidUriSingleParam).to.equal(true); }); it('should be able to validate an FTM Uri', async () => { const isValidUri = await Validation.validateUri('FTM', ftmUri); const isValidUriParams = await Validation.validateUri('FTM', ftmUriParams); const isValidUriSingleParam = await Validation.validateUri('FTM', ftmUriSingleParam); expect(isValidUri).to.equal(true); expect(isValidUriParams).to.equal(true); expect(isValidUriSingleParam).to.equal(true); }); it('should be able to validate an KCS Uri', async () => { const isValidUri = await Validation.validateUri('KCS', kcsUri); const isValidUriParams = await Validation.validateUri('KCS', kcsUriParams); const isValidUriSingleParam = await Validation.validateUri('KCS', kcsUriSingleParam); expect(isValidUri).to.equal(true); expect(isValidUriParams).to.equal(true); expect(isValidUriSingleParam).to.equal(true); }); it('should be able to validate an AVAX Uri', async () => { const isValidUri = await Validation.validateUri('AVAX', avaxUri); const isValidUriParams = await Validation.validateUri('AVAX', avaxUriParams); const isValidUriSingleParam = await Validation.validateUri('AVAX', avaxUriSingleParam); expect(isValidUri).to.equal(true); expect(isValidUriParams).to.equal(true); expect(isValidUriSingleParam).to.equal(true); }); it('should be able to validate an XRP Uri', async () => { const isValidUri = await Validation.validateUri('XRP', xrpUri); const isValidUriParams = await Validation.validateUri('XRP', xrpUriParams); const isValidUriSingleParam = await Validation.validateUri('XRP', xrpUriSingleParam); expect(isValidUri).to.equal(true); expect(isValidUriParams).to.equal(true); expect(isValidUriSingleParam).to.equal(true); }); it('should be able to invalidate an incorrect BTC address', async () => { const inValidAddress = await Validation.validateAddress('BTC', 'mainnet', invalidBtcAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate an incorrect BCH address', async () => { const inValidAddress = await Validation.validateAddress('BCH', 'mainnet', invalidBchAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate an incorrect DOGE address', async () => { const inValidAddress = await Validation.validateAddress('DOGE', 'mainnet', invalidDogeAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate an incorrect LTC address', async () => { const inValidAddress = await Validation.validateAddress('LTC', 'mainnet', invalidLtcAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate an incorrect ETH address', async () => { const inValidAddress = await Validation.validateAddress('ETH', 'mainnet', invalidEthAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate an incorrect BSC address', async () => { const inValidAddress = await Validation.validateAddress('BSC', 'mainnet', invalidBscAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate an incorrect MATIC address', async () => { const inValidAddress = await Validation.validateAddress('MATIC', 'mainnet', invalidMaticAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate an incorrect FTM address', async () => { const inValidAddress = await Validation.validateAddress('FTM', 'mainnet', invalidFtmAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate an incorrect KCS address', async () => { const inValidAddress = await Validation.validateAddress('KCS', 'mainnet', invalidKcsAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate an incorrect AVAX address', async () => { const inValidAddress = await Validation.validateAddress('AVAX', 'mainnet', invalidAvaxAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate an incorrect XRP address', async () => { const inValidAddress = await Validation.validateAddress('XRP', 'mainnet', invalidXrpAddress); expect(inValidAddress).to.equal(false); }); it('should be able to invalidate incorrect ETH Uri params', async () => { const inValidEthUri = await Validation.validateUri('ETH', invalidEthUriParams); expect(inValidEthUri).to.equal(false); }); it('should be able to invalidate incorrect BSC Uri params', async () => { const inValidBscUri = await Validation.validateUri('BSC', invalidBscUriParams); expect(inValidBscUri).to.equal(false); }); it('should be able to invalidate incorrect MATIC Uri params', async () => { const inValidMaticUri = await Validation.validateUri('MATIC', invalidMaticUriParams); expect(inValidMaticUri).to.equal(false); }); it('should be able to invalidate incorrect FTM Uri params', async () => { const inValidFtmUri = await Validation.validateUri('FTM', invalidFtmUriParams); expect(inValidFtmUri).to.equal(false); }); it('should be able to invalidate incorrect KCS Uri params', async () => { const inValidKcsUri = await Validation.validateUri('KCS', invalidKcsUriParams); expect(inValidKcsUri).to.equal(false); }); it('should be able to invalidate incorrect AVAX Uri params', async () => { const inValidAvaxUri = await Validation.validateUri('AVAX', invalidAvaxUriParams); expect(inValidAvaxUri).to.equal(false); }); it('should be able to invalidate ETH URI without ethereum prefix', async () => { const inValidEthPrefix = await Validation.validateUri('ETH', invalidEthPrefix); expect(inValidEthPrefix).to.equal(false); }); it('should be able to invalidate BSC URI without ethereum prefix', async () => { const inValidBscPrefix = await Validation.validateUri('BSC', invalidBscPrefix); expect(inValidBscPrefix).to.equal(false); }); it('should be able to invalidate MATIC URI without ethereum prefix', async () => { const inValidMaticPrefix = await Validation.validateUri('MATIC', invalidMaticPrefix); expect(inValidMaticPrefix).to.equal(false); }); it('should be able to invalidate FTM URI without ethereum prefix', async () => { const inValidFtmPrefix = await Validation.validateUri('FTM', invalidFtmPrefix); expect(inValidFtmPrefix).to.equal(false); }); it('should be able to invalidate KCS URI without ethereum prefix', async () => { const inValidKcsPrefix = await Validation.validateUri('KCS', invalidKcsPrefix); expect(inValidKcsPrefix).to.equal(false); }); it('should be able to invalidate AVAX URI without ethereum prefix', async () => { const inValidAvaxPrefix = await Validation.validateUri('AVAX', invalidAvaxPrefix); expect(inValidAvaxPrefix).to.equal(false); }); it('should be able to invalidate incorrect XRP Uri params', async () => { const inValidXrpUri = await Validation.validateUri('XRP', invalidXrpUriParams); expect(inValidXrpUri).to.equal(false); }); it('should be able to invalidate XRP URI without ripple prefix', async () => { const inValidXrpPrefix = await Validation.validateUri('XRP', invalidXrpPrefix); expect(inValidXrpPrefix).to.equal(false); }); });