UNPKG

@yoroi/resolver

Version:
201 lines (197 loc) 6.85 kB
"use strict"; var _types = require("@yoroi/types"); var _cardanoApiMaker = require("./cardano-api-maker"); var _api = require("@yoroi/api"); var _cardanoApiMaker2 = require("./cardano-api-maker.mocks"); jest.mock('@yoroi/api'); describe('getAssetAddress', () => { it('returns the address', async () => { const policyId = 'asset-hex-TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'; const assetName = 'kskskskskskskkskskskskksksk'; const responseMock = { tag: 'right', value: { data: ['fake-address'], status: 200 } }; const request = jest.fn(() => Promise.resolve(responseMock)); const { getAssetAddress } = (0, _cardanoApiMaker.makeCnsCardanoApi)('https://localhost', request); const response = await getAssetAddress(policyId, assetName); expect(response).toBe('fake-address'); expect(request).toHaveBeenCalledWith({ url: 'https://localhost/api/asset/accounts?policy=asset-hex-TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT&asset=kskskskskskskkskskskskksksk' }, undefined); }); it('fails: api error', async () => { const policyId = 'asset-hex-TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'; const assetName = 'kskskskskskskkskskskskksksk'; const error = new Error('fake-error'); const responseMock = { tag: 'left', error }; const request = jest.fn(() => Promise.resolve(responseMock)); const { getAssetAddress } = (0, _cardanoApiMaker.makeCnsCardanoApi)('https://localhost', request); try { await getAssetAddress(policyId, assetName); fail('it should crash before'); } catch (e) { expect(e.message).toBe(error.message); } }); it('fails: invalid api response', async () => { const policyId = 'asset-hex-TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'; const assetName = 'kskskskskskskkskskskskksksk'; const responseMock = { tag: 'right', value: { data: [123455], status: 200 } }; const request = jest.fn(() => Promise.resolve(responseMock)); const { getAssetAddress } = (0, _cardanoApiMaker.makeCnsCardanoApi)('https://localhost', request); try { await getAssetAddress(policyId, assetName); fail('it should crash before'); } catch (e) { expect(e).toBeInstanceOf(_types.Resolver.Errors.NotFound); } }); }); describe('getMetadata', () => { it('returns the metadata', async () => { const policyId = 'policyId'; const assetName = 'assetName'; const id = `${policyId}.${assetName}`; const getOnChainMetadatas = jest.fn(() => Promise.resolve({ [id]: { mintNftRecordSelected: _cardanoApiMaker2.metadataMock } })); // @ts-ignore _api.CardanoApi.getOnChainMetadatas.mockReturnValue(getOnChainMetadatas); const { getMetadata } = (0, _cardanoApiMaker.makeCnsCardanoApi)('https://localhost'); const result = await getMetadata(policyId, assetName); expect(result).toEqual(_cardanoApiMaker2.metadataMock); }); it('returns undefined', async () => { const policyId = 'policyId'; const assetName = 'assetName'; const getOnChainMetadatas = jest.fn(() => Promise.resolve({ randomId: { mintNftRecordSelected: _cardanoApiMaker2.metadataMock } })); // @ts-ignore _api.CardanoApi.getOnChainMetadatas.mockReturnValue(getOnChainMetadatas); const { getMetadata } = (0, _cardanoApiMaker.makeCnsCardanoApi)('https://localhost'); const result = await getMetadata(policyId, assetName); expect(result).toBe(undefined); }); it('fails: invalid respoonse', async () => { const policyId = 'policyId'; const assetName = 'assetName'; const getOnChainMetadatas = jest.fn(() => Promise.resolve({ randomId: { mintNftRecordSelected: 'invalid' } })); // @ts-ignore _api.CardanoApi.getOnChainMetadatas.mockReturnValue(getOnChainMetadatas); const { getMetadata } = (0, _cardanoApiMaker.makeCnsCardanoApi)('https://localhost'); try { await getMetadata(policyId, assetName); fail('it should crash before'); } catch (e) { expect(e).toBeInstanceOf(_types.Resolver.Errors.NotFound); } }); }); describe('getAssetInlineDatum', () => { it('returns the address', async () => { const policyId = 'asset-hex-TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'; const assetName = 'kskskskskskskkskskskskksksk'; const addresses = ['fake-address']; const responseMock = { tag: 'right', value: { data: _cardanoApiMaker2.inlineDatumMock, status: 200 } }; const request = jest.fn(() => Promise.resolve(responseMock)); const { getAssetInlineDatum } = (0, _cardanoApiMaker.makeCnsCardanoApi)('https://localhost', request); const response = await getAssetInlineDatum(policyId, assetName, addresses); expect(response).toStrictEqual(_cardanoApiMaker2.inlineDatumMock[0]?.inline_datum.plutus_data); expect(request).toHaveBeenCalledWith({ url: 'https://localhost/api/txs/utxoForAddresses', method: 'post', data: { addresses, asset: { policy: 'asset-hex-TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT', name: 'kskskskskskskkskskskskksksk' } } }, undefined); }); it('fails: api error', async () => { const policyId = 'asset-hex-TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'; const assetName = 'kskskskskskskkskskskskksksk'; const addresses = ['fake-address']; const error = new Error('fake-error'); const responseMock = { tag: 'left', error }; const request = jest.fn(() => Promise.resolve(responseMock)); const { getAssetInlineDatum } = (0, _cardanoApiMaker.makeCnsCardanoApi)('https://localhost', request); try { await getAssetInlineDatum(policyId, assetName, addresses); fail('it should crash before'); } catch (e) { expect(e.message).toBe(error.message); } }); it('fails: invalid api response', async () => { const policyId = 'asset-hex-TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'; const assetName = 'kskskskskskskkskskskskksksk'; const addresses = ['fake-address']; const responseMock = { tag: 'right', value: { data: 'invalid', status: 200 } }; const request = jest.fn(() => Promise.resolve(responseMock)); const { getAssetInlineDatum } = (0, _cardanoApiMaker.makeCnsCardanoApi)('https://localhost', request); try { await getAssetInlineDatum(policyId, assetName, addresses); fail('it should crash before'); } catch (e) { expect(e).toBeInstanceOf(_types.Resolver.Errors.NotFound); } }); }); //# sourceMappingURL=cardano-api-maker.test.js.map