Skip to main content
Glama
guard-engine.test.tsβ€’4.32 kB
import { GuardEngine } from '../../core/guard-engine' import { GuardEngineConfig, TxSimulateResponse, TxExecuteRequest } from '@/types' describe('GuardEngine', () => { let guardEngine: GuardEngine let config: GuardEngineConfig beforeEach(() => { config = { defaultRules: { risk: { maxSlippagePct: 1.0, maxGasGwei: 50, minLiquidityUsd: 10000 }, gas: { maxGasGwei: 100 }, route: { allowedDexes: ['uniswap', '1inch'], blockedTokens: [] }, deny: { blockedAddresses: [], blockedProtocols: [] } }, emergencyStop: false } guardEngine = new GuardEngine(config) }) describe('setRule', () => { it('should add a new guard rule', () => { guardEngine.setRule('test-risk', 'risk', { maxSlippagePct: 2.0, maxGasGwei: 30 }) const rules = guardEngine.getAllRules() expect(rules.has('test-risk')).toBe(true) expect(rules.get('test-risk')?.params.maxSlippagePct).toBe(2.0) }) }) describe('validateSimulation', () => { it('should pass validation for normal transaction', () => { const simulation: TxSimulateResponse = { ok: true, est: { feeUsd: 5.0, slippagePct: 0.3, avgPrice: 2000 }, guardsTriggered: [] } const result = guardEngine.validateSimulation(simulation, {}) expect(result.passed).toBe(true) expect(result.triggeredGuards).toHaveLength(0) }) it('should fail validation for high slippage', () => { const simulation: TxSimulateResponse = { ok: true, est: { feeUsd: 5.0, slippagePct: 2.0, // Above max of 1.0% avgPrice: 2000 }, guardsTriggered: [] } const result = guardEngine.validateSimulation(simulation, {}) expect(result.passed).toBe(false) expect(result.triggeredGuards).toContain('risk_risk') }) it('should fail validation when emergency stop is active', () => { guardEngine.setEmergencyStop(true) const simulation: TxSimulateResponse = { ok: true, est: { feeUsd: 5.0, slippagePct: 0.3, avgPrice: 2000 }, guardsTriggered: [] } const result = guardEngine.validateSimulation(simulation, {}) expect(result.passed).toBe(false) expect(result.triggeredGuards).toContain('emergency_stop') }) }) describe('validateExecution', () => { it('should pass validation for normal execution', () => { const executeRequest: TxExecuteRequest = { intentId: 'test-intent', txParams: { to: '0x1234567890123456789012345678901234567890', value: '1000000000000000000' } } const result = guardEngine.validateExecution(executeRequest) expect(result.passed).toBe(true) expect(result.triggeredGuards).toHaveLength(0) }) it('should fail validation when emergency stop is active', () => { guardEngine.setEmergencyStop(true) const executeRequest: TxExecuteRequest = { intentId: 'test-intent', txParams: { to: '0x1234567890123456789012345678901234567890', value: '1000000000000000000' } } const result = guardEngine.validateExecution(executeRequest) expect(result.passed).toBe(false) expect(result.triggeredGuards).toContain('emergency_stop') }) }) describe('toggleRule', () => { it('should enable/disable a rule', () => { guardEngine.setRule('test-rule', 'risk', { maxSlippagePct: 1.0 }) guardEngine.toggleRule('test-rule', false) const rules = guardEngine.getAllRules() expect(rules.get('test-rule')?.enabled).toBe(false) guardEngine.toggleRule('test-rule', true) expect(rules.get('test-rule')?.enabled).toBe(true) }) }) describe('removeRule', () => { it('should remove a rule', () => { guardEngine.setRule('test-rule', 'risk', { maxSlippagePct: 1.0 }) expect(guardEngine.getAllRules().has('test-rule')).toBe(true) guardEngine.removeRule('test-rule') expect(guardEngine.getAllRules().has('test-rule')).toBe(false) }) }) })

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/antidump/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server