@yoroi/resolver
Version:
Yoroi domain resolver
201 lines (197 loc) • 6.85 kB
JavaScript
;
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