Skip to main content
Glama
webhook.test.ts1.69 kB
import { TestServer } from './helpers/test-server.js'; describe('Garmin Webhook', () => { let server: TestServer; beforeEach(() => { server = new TestServer(); }); afterEach(async () => { await server.close(); }); it('accepts valid webhook data', async () => { const payload = { userId: 'test-user', calendarDate: '2025-01-01', steps: 10000, restingHeartRate: 60, activeKilocalories: 500, sleepDurationInSeconds: 28800, bodyBatteryMin: 20, bodyBatteryMax: 95 }; const response = await server.request .post('/garmin/webhook') .send(payload) .expect(200); expect(response.text).toBe('ok'); // Verify data was stored const storedData = await server.request .post('/mcp/tools/call') .send({ name: 'garmin.getDailySummary', arguments: { user_id: 'test-user', date: '2025-01-01' } }) .expect(200); const data = storedData.body.content[0].json; expect(data).toMatchObject({ user_id: 'test-user', day: '2025-01-01', steps: 10000, resting_hr: 60, calories: 500, sleep_seconds: 28800, body_battery_min: 20, body_battery_max: 95 }); }); it('handles rate limiting', async () => { const payload = { userId: 'test-user' }; // Make 101 requests for (let i = 0; i < 100; i++) { await server.request .post('/garmin/webhook') .send(payload) .expect(200); } // 101st request should be rate limited await server.request .post('/garmin/webhook') .send(payload) .expect(429); }); });

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/zjromani/garmin-mcp'

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