From 69a2a6ee9d6da78c85bffa42f89ca6ea766a3f62 Mon Sep 17 00:00:00 2001 From: dtfiedler Date: Mon, 27 Nov 2023 15:29:31 -0800 Subject: [PATCH] chore(tests): add a test that validates bad smartweave inputs are disregarded --- tests/integration/routes.test.ts | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/tests/integration/routes.test.ts b/tests/integration/routes.test.ts index b1c3880..9f74dc9 100644 --- a/tests/integration/routes.test.ts +++ b/tests/integration/routes.test.ts @@ -25,6 +25,7 @@ import { import * as path from 'path'; import * as fs from 'fs'; import { ArNSInteraction } from '../../src/types'; +import { DEFAULT_EVALUATION_OPTIONS } from '../../src/constants'; const HOST = process.env.HOST ?? '127.0.0.1'; const PORT = process.env.PORT ?? 3000; @@ -127,7 +128,7 @@ describe('Integration tests', () => { expect(data).to.not.be.undefined; const { contractTxId, state, evaluationOptions } = data; expect(contractTxId).to.equal(id); - expect(evaluationOptions).not.to.be.undefined; + expect(evaluationOptions).to.equal(DEFAULT_EVALUATION_OPTIONS); expect(state).to.include.keys([ 'balances', 'owner', @@ -177,6 +178,34 @@ describe('Integration tests', () => { expect(contractTxId).to.equal(id); expect(interactions).to.deep.equal(contractInteractions); }); + + it('should filter out poorly formatted interactions', async () => { + // deploy the manual constructed interaction + const badInteractionTx = await arweave.createTransaction( + { + data: '', + }, + walletJWK, + ); + badInteractionTx.addTag('App-Name', 'SmartWeaveAction'); + badInteractionTx.addTag('Contract', id); + badInteractionTx.addTag( + 'input', + JSON.stringify({ function: 'evolve', value: 'bad-interaction' }), + ); + + await arweave.transactions.sign(badInteractionTx, walletJWK); + await arweave.transactions.post(badInteractionTx); + + const { status, data } = await axios.get( + `/v1/contract/${id}/interactions`, + ); + expect(status).to.equal(200); + expect(data).to.not.be.undefined; + const { contractTxId, interactions } = data; + expect(contractTxId).to.equal(id); + expect(Object.keys(interactions)).not.to.contain(badInteractionTx.id); + }); }); describe('/:contractTxId/interactions/:address', () => {