Skip to content

Commit b5b52ea

Browse files
authored
ci: mock server test workflow (#8)
* chore: use replay function in server * ci: mock server test workflow * ci: remove bun from script
1 parent 1c408ed commit b5b52ea

File tree

4 files changed

+47
-17
lines changed

4 files changed

+47
-17
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Test Mock Server
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
8+
jobs:
9+
test:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v4
15+
16+
- name: Setup Bun
17+
uses: oven-sh/setup-bun@v2
18+
with:
19+
bun-version: latest
20+
21+
- name: Install dependencies
22+
working-directory: ./resources/mock-server
23+
run: bun install
24+
25+
- name: Run tests
26+
working-directory: ./resources/mock-server
27+
run: bun run test

resources/mock-server/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
"module": "index.ts",
44
"type": "module",
55
"private": true,
6+
"scripts": {
7+
"test": "vitest run"
8+
},
69
"devDependencies": {
710
"@types/bun": "latest",
811
"vitest": "^4.0.8"

resources/mock-server/src/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,14 @@ export async function record(
6767
}
6868
}
6969

70-
export async function replay(
70+
export async function replay<T>(
7171
client: Client,
72-
makeRequests: () => Promise<void>
73-
) {
72+
makeRequests: () => Promise<T>
73+
): Promise<T> {
7474
const polly = getPolly(client, { mode: "replay" });
7575

7676
try {
77-
await makeRequests();
77+
return await makeRequests();
7878
} finally {
7979
await polly.stop();
8080
}

resources/mock-server/src/server.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { HeadersInit } from "bun";
22
import Fastify from "fastify";
3-
import { getPolly, type Client } from "./index";
3+
import { replay, type Client } from "./index";
44
import { recordAlgosdkRequests } from "./record";
55

66
export type ServerInstance = {
@@ -42,8 +42,6 @@ export async function startServer(client: Client): Promise<ServerInstance> {
4242

4343
// Catch-all proxy through PollyJS
4444
fastify.all("/*", async (request, reply) => {
45-
const polly = getPolly(client, { mode: "replay" });
46-
4745
const url = new URL(
4846
request.url,
4947
`http://localhost:${LOCALNET_PORTS[client]}`
@@ -75,19 +73,21 @@ export async function startServer(client: Client): Promise<ServerInstance> {
7573

7674
let response;
7775
try {
78-
response = await fetch(url, {
79-
method: request.method,
80-
headers: request.headers as HeadersInit,
81-
body:
82-
request.method !== "GET" && request.method !== "HEAD"
83-
? JSON.stringify(request.body)
84-
: undefined
85-
});
76+
response = await replay(
77+
client,
78+
async () =>
79+
await fetch(url, {
80+
method: request.method,
81+
headers: request.headers as HeadersInit,
82+
body:
83+
request.method !== "GET" && request.method !== "HEAD"
84+
? JSON.stringify(request.body)
85+
: undefined
86+
})
87+
);
8688
} catch (e) {
8789
reply.status(500).send(JSON.stringify(e));
8890
return;
89-
} finally {
90-
await polly.stop();
9191
}
9292

9393
const data = await response.text();

0 commit comments

Comments
 (0)