Implement debug.stringify service (#125)

This commit is contained in:
Pavel 2022-02-17 14:01:12 +03:00 committed by GitHub
parent 25f63f0b0d
commit 5cb4c8974f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 0 deletions

View File

@ -5,6 +5,18 @@ import { KeyPair } from '../../internal/KeyPair';
import { Sig, defaultSigGuard, allowServiceFn } from '../../internal/builtins/Sig'; import { Sig, defaultSigGuard, allowServiceFn } from '../../internal/builtins/Sig';
import { toUint8Array } from 'js-base64'; import { toUint8Array } from 'js-base64';
const a10b20 = `{
"a": 10,
"b": 20
}`;
const oneTwoThreeFour = `[
1,
2,
3,
4
]`;
describe('Tests for default handler', () => { describe('Tests for default handler', () => {
// prettier-ignore // prettier-ignore
each` each`
@ -48,6 +60,10 @@ describe('Tests for default handler', () => {
${'peer'} | ${'timeout'} | ${[200, ['test']]} | ${0} | ${['test']}} ${'peer'} | ${'timeout'} | ${[200, ['test']]} | ${0} | ${['test']}}
${'peer'} | ${'timeout'} | ${[]} | ${1} | ${'timeout accepts exactly two arguments: timeout duration in ms and a message string'}} ${'peer'} | ${'timeout'} | ${[]} | ${1} | ${'timeout accepts exactly two arguments: timeout duration in ms and a message string'}}
${'peer'} | ${'timeout'} | ${[200, 'test', 1]} | ${1} | ${'timeout accepts exactly two arguments: timeout duration in ms and a message string'}} ${'peer'} | ${'timeout'} | ${[200, 'test', 1]} | ${1} | ${'timeout accepts exactly two arguments: timeout duration in ms and a message string'}}
${'debug'} | ${'stringify'} | ${[]} | ${0} | ${'"<empty argument list>"'}}
${'debug'} | ${'stringify'} | ${[{a: 10, b: 20}]} | ${0} | ${a10b20}}
${'debug'} | ${'stringify'} | ${[1, 2, 3, 4]} | ${0} | ${oneTwoThreeFour}}
`.test( `.test(
// //

View File

@ -18,6 +18,7 @@ import { CallServiceResult } from '@fluencelabs/avm-runner-interface';
import { encode, decode } from 'bs58'; import { encode, decode } from 'bs58';
import { sha256 } from 'multiformats/hashes/sha2'; import { sha256 } from 'multiformats/hashes/sha2';
import { ResultCodes } from '../commonTypes'; import { ResultCodes } from '../commonTypes';
import { jsonify } from '../utils'
import Buffer from '../Buffer'; import Buffer from '../Buffer';
const success = (result: any): CallServiceResult => { const success = (result: any): CallServiceResult => {
@ -128,6 +129,22 @@ export const builtInServices = {
}, },
}, },
debug: {
stringify: (req) => {
let out;
if (req.args.length === 0) {
out = '<empty argument list>';
} else if (req.args.length === 1) {
out = req.args[0];
} else {
out = req.args;
}
return success(jsonify(out));
},
},
peer: { peer: {
timeout: (req) => { timeout: (req) => {
if (req.args.length !== 2) { if (req.args.length !== 2) {