From f88d1a3eee2a4541d11f5862f7a446fe407c23d8 Mon Sep 17 00:00:00 2001 From: Babigdk Date: Mon, 27 Apr 2026 04:45:27 -1100 Subject: [PATCH] test(sdk): add integration tests for local Soroban - Added deployer integration tests - Configured separate test command - Excluded integration tests from default runs - Added environment-based configuration --- packages/sdk/.env.integration | 3 ++ packages/sdk/package.json | 2 + .../src/__tests__/integration/deploy.test.ts | 37 +++++++++++++++++++ .../__tests__/integration/interaction.test.ts | 10 +++++ .../sdk/src/__tests__/integration/setup.ts | 13 +++++++ packages/sdk/vitest.config.ts | 6 ++- 6 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 packages/sdk/.env.integration create mode 100644 packages/sdk/src/__tests__/integration/deploy.test.ts create mode 100644 packages/sdk/src/__tests__/integration/interaction.test.ts create mode 100644 packages/sdk/src/__tests__/integration/setup.ts diff --git a/packages/sdk/.env.integration b/packages/sdk/.env.integration new file mode 100644 index 0000000..38aa007 --- /dev/null +++ b/packages/sdk/.env.integration @@ -0,0 +1,3 @@ +SOROBAN_RPC_URL=http://localhost:8000 +SOROBAN_NETWORK_PASSPHRASE=Standalone Network ; February 2017 +TEST_SECRET_KEY=SBXXXXXXXXXXXXXXXXXXXXXXXX \ No newline at end of file diff --git a/packages/sdk/package.json b/packages/sdk/package.json index b80290f..92405d1 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -6,6 +6,8 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { + "test": "vitest", + "test:integration": "vitest run --dir src/deployer/__tests__/integration" "build": "tsc", "dev": "tsc --watch", "test": "vitest --run", diff --git a/packages/sdk/src/__tests__/integration/deploy.test.ts b/packages/sdk/src/__tests__/integration/deploy.test.ts new file mode 100644 index 0000000..fd14ca0 --- /dev/null +++ b/packages/sdk/src/__tests__/integration/deploy.test.ts @@ -0,0 +1,37 @@ +import { describe, it, expect, beforeAll } from 'vitest'; +import { ContractDeployer } from '../../ContractDeployer'; +import { TEST_CONFIG } from './setup'; + +describe('Deployer Integration (Soroban)', () => { + let deployer: ContractDeployer; + + beforeAll(() => { + deployer = new ContractDeployer({ + rpcUrl: TEST_CONFIG.rpcUrl, + networkPassphrase: TEST_CONFIG.networkPassphrase, + }); + }); + + it('should upload WASM successfully', async () => { + const wasmBuffer = Buffer.from([]); // replace with real wasm + + const result = await deployer.uploadWasm( + wasmBuffer, + TEST_CONFIG.secretKey + ); + + expect(result.wasmHash).toBeDefined(); + }); + + it('should deploy contract instance', async () => { + const wasmHash = 'SOME_HASH'; // from previous step + + const result = await deployer.deployContract({ + wasmHash, + signer: TEST_CONFIG.secretKey, + initParams: {}, + }); + + expect(result.contractId).toBeDefined(); + }); +}); diff --git a/packages/sdk/src/__tests__/integration/interaction.test.ts b/packages/sdk/src/__tests__/integration/interaction.test.ts new file mode 100644 index 0000000..6717c86 --- /dev/null +++ b/packages/sdk/src/__tests__/integration/interaction.test.ts @@ -0,0 +1,10 @@ +import { describe, it, expect } from 'vitest'; + +describe('Contract Interaction (Soroban)', () => { + it('should call contract method', async () => { + // Example placeholder + const response = true; + + expect(response).toBe(true); + }); +}); \ No newline at end of file diff --git a/packages/sdk/src/__tests__/integration/setup.ts b/packages/sdk/src/__tests__/integration/setup.ts new file mode 100644 index 0000000..b00a83b --- /dev/null +++ b/packages/sdk/src/__tests__/integration/setup.ts @@ -0,0 +1,13 @@ +import { config } from 'dotenv'; + +config({ path: '.env.integration' }); + +export const TEST_CONFIG = { + rpcUrl: process.env.SOROBAN_RPC_URL!, + networkPassphrase: process.env.SOROBAN_NETWORK_PASSPHRASE!, + secretKey: process.env.TEST_SECRET_KEY!, +}; + +if (!TEST_CONFIG.rpcUrl) { + throw new Error('Missing integration test config'); +} diff --git a/packages/sdk/vitest.config.ts b/packages/sdk/vitest.config.ts index 014f97e..c9a7158 100644 --- a/packages/sdk/vitest.config.ts +++ b/packages/sdk/vitest.config.ts @@ -4,5 +4,9 @@ export default defineConfig({ test: { environment: 'node', globals: true, + + exclude: [ + '**/__tests__/integration/**' + ], }, -}); +}); \ No newline at end of file