mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-25 10:51:57 +01:00
Add .oxfmtignore to skip generated bindings and wasm-pack output. Add npm format script, update DEVELOPMENT.md for Vite+ toolchain, and format all non-generated files with oxfmt. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
415 lines
11 KiB
TypeScript
415 lines
11 KiB
TypeScript
import { describe, expect, test } from "vite-plus/test";
|
|
import { convertToCurl } from "../src";
|
|
|
|
describe("exporter-curl", () => {
|
|
test("Exports GET with params", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
urlParameters: [
|
|
{ name: "a", value: "aaa" },
|
|
{ name: "b", value: "bbb", enabled: true },
|
|
{ name: "c", value: "ccc", enabled: false },
|
|
],
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app?a=aaa&b=bbb'`].join(" \\n "));
|
|
});
|
|
|
|
test("Exports GET with params and hash", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app/path#section",
|
|
urlParameters: [
|
|
{ name: "a", value: "aaa" },
|
|
{ name: "b", value: "bbb", enabled: true },
|
|
{ name: "c", value: "ccc", enabled: false },
|
|
],
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app/path?a=aaa&b=bbb#section'`].join(" \\n "));
|
|
});
|
|
|
|
test("Exports POST with url form data", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
method: "POST",
|
|
bodyType: "application/x-www-form-urlencoded",
|
|
body: {
|
|
form: [
|
|
{ name: "a", value: "aaa" },
|
|
{ name: "b", value: "bbb", enabled: true },
|
|
{ name: "c", value: "ccc", enabled: false },
|
|
],
|
|
},
|
|
}),
|
|
).toEqual(
|
|
[`curl -X POST 'https://yaak.app'`, `--data 'a=aaa'`, `--data 'b=bbb'`].join(" \\\n "),
|
|
);
|
|
});
|
|
|
|
test("Exports POST with GraphQL data", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
method: "POST",
|
|
bodyType: "graphql",
|
|
body: {
|
|
query: "{foo,bar}",
|
|
variables: '{"a": "aaa", "b": "bbb"}',
|
|
},
|
|
}),
|
|
).toEqual(
|
|
[
|
|
`curl -X POST 'https://yaak.app'`,
|
|
`--data '{"query":"{foo,bar}","variables":{"a":"aaa","b":"bbb"}}'`,
|
|
].join(" \\\n "),
|
|
);
|
|
});
|
|
|
|
test("Exports POST with GraphQL data no variables", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
method: "POST",
|
|
bodyType: "graphql",
|
|
body: {
|
|
query: "{foo,bar}",
|
|
},
|
|
}),
|
|
).toEqual(
|
|
[`curl -X POST 'https://yaak.app'`, `--data '{"query":"{foo,bar}"}'`].join(" \\\n "),
|
|
);
|
|
});
|
|
|
|
test("Exports PUT with multipart form", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
method: "PUT",
|
|
bodyType: "multipart/form-data",
|
|
body: {
|
|
form: [
|
|
{ name: "a", value: "aaa" },
|
|
{ name: "b", value: "bbb", enabled: true },
|
|
{ name: "c", value: "ccc", enabled: false },
|
|
{ name: "f", file: "/foo/bar.png", contentType: "image/png" },
|
|
],
|
|
},
|
|
}),
|
|
).toEqual(
|
|
[
|
|
`curl -X PUT 'https://yaak.app'`,
|
|
`--form 'a=aaa'`,
|
|
`--form 'b=bbb'`,
|
|
"--form f=@/foo/bar.png;type=image/png",
|
|
].join(" \\\n "),
|
|
);
|
|
});
|
|
|
|
test("Exports JSON body", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
method: "POST",
|
|
bodyType: "application/json",
|
|
body: {
|
|
text: `{"foo":"bar's"}`,
|
|
},
|
|
headers: [{ name: "Content-Type", value: "application/json" }],
|
|
}),
|
|
).toEqual(
|
|
[
|
|
`curl -X POST 'https://yaak.app'`,
|
|
`--header 'Content-Type: application/json'`,
|
|
`--data '{"foo":"bar\\'s"}'`,
|
|
].join(" \\\n "),
|
|
);
|
|
});
|
|
|
|
test("Exports multi-line JSON body", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
method: "POST",
|
|
bodyType: "application/json",
|
|
body: {
|
|
text: `{"foo":"bar",\n"baz":"qux"}`,
|
|
},
|
|
headers: [{ name: "Content-Type", value: "application/json" }],
|
|
}),
|
|
).toEqual(
|
|
[
|
|
`curl -X POST 'https://yaak.app'`,
|
|
`--header 'Content-Type: application/json'`,
|
|
`--data '{"foo":"bar",\n"baz":"qux"}'`,
|
|
].join(" \\\n "),
|
|
);
|
|
});
|
|
|
|
test("Exports headers", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
headers: [
|
|
{ name: "a", value: "aaa" },
|
|
{ name: "b", value: "bbb", enabled: true },
|
|
{ name: "c", value: "ccc", enabled: false },
|
|
],
|
|
}),
|
|
).toEqual([`curl ''`, `--header 'a: aaa'`, `--header 'b: bbb'`].join(" \\\n "));
|
|
});
|
|
|
|
test("Basic auth", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "basic",
|
|
authentication: {
|
|
username: "user",
|
|
password: "pass",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app'`, `--user 'user:pass'`].join(" \\\n "));
|
|
});
|
|
|
|
test("Basic auth disabled", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "basic",
|
|
authentication: {
|
|
disabled: true,
|
|
username: "user",
|
|
password: "pass",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app'`].join(" \\\n "));
|
|
});
|
|
|
|
test("Broken basic auth", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "basic",
|
|
authentication: {},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app'`, `--user ':'`].join(" \\\n "));
|
|
});
|
|
|
|
test("Digest auth", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "digest",
|
|
authentication: {
|
|
username: "user",
|
|
password: "pass",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app'`, `--digest --user 'user:pass'`].join(" \\\n "));
|
|
});
|
|
|
|
test("Bearer auth", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "bearer",
|
|
authentication: {
|
|
token: "tok",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app'`, `--header 'Authorization: Bearer tok'`].join(" \\\n "));
|
|
});
|
|
|
|
test("Bearer auth with custom prefix", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "bearer",
|
|
authentication: {
|
|
token: "abc123",
|
|
prefix: "Token",
|
|
},
|
|
}),
|
|
).toEqual(
|
|
[`curl 'https://yaak.app'`, `--header 'Authorization: Token abc123'`].join(" \\\n "),
|
|
);
|
|
});
|
|
|
|
test("Bearer auth with empty prefix", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "bearer",
|
|
authentication: {
|
|
token: "xyz789",
|
|
prefix: "",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app'`, `--header 'Authorization: xyz789'`].join(" \\\n "));
|
|
});
|
|
|
|
test("Broken bearer auth", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "bearer",
|
|
authentication: {
|
|
username: "user",
|
|
password: "pass",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app'`, `--header 'Authorization: Bearer'`].join(" \\\n "));
|
|
});
|
|
|
|
test("AWS v4 auth", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "auth-aws-sig-v4",
|
|
authentication: {
|
|
accessKeyId: "ak",
|
|
secretAccessKey: "sk",
|
|
sessionToken: "",
|
|
region: "us-east-1",
|
|
service: "s3",
|
|
},
|
|
}),
|
|
).toEqual(
|
|
[`curl 'https://yaak.app'`, "--aws-sigv4 aws:amz:us-east-1:s3", `--user 'ak:sk'`].join(
|
|
" \\\n ",
|
|
),
|
|
);
|
|
});
|
|
|
|
test("AWS v4 auth with session", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "auth-aws-sig-v4",
|
|
authentication: {
|
|
accessKeyId: "ak",
|
|
secretAccessKey: "sk",
|
|
sessionToken: "st",
|
|
region: "us-east-1",
|
|
service: "s3",
|
|
},
|
|
}),
|
|
).toEqual(
|
|
[
|
|
`curl 'https://yaak.app'`,
|
|
"--aws-sigv4 aws:amz:us-east-1:s3",
|
|
`--user 'ak:sk'`,
|
|
`--header 'X-Amz-Security-Token: st'`,
|
|
].join(" \\\n "),
|
|
);
|
|
});
|
|
|
|
test("API key auth header", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "apikey",
|
|
authentication: {
|
|
location: "header",
|
|
key: "X-Header",
|
|
value: "my-token",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app'`, `--header 'X-Header: my-token'`].join(" \\\n "));
|
|
});
|
|
|
|
test("API key auth header query", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app?hi=there",
|
|
urlParameters: [{ name: "param", value: "hi" }],
|
|
authenticationType: "apikey",
|
|
authentication: {
|
|
location: "query",
|
|
key: "foo",
|
|
value: "bar",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app?hi=there¶m=hi&foo=bar'`].join(" \\\n "));
|
|
});
|
|
|
|
test("API key auth header query with params", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
urlParameters: [{ name: "param", value: "hi" }],
|
|
authenticationType: "apikey",
|
|
authentication: {
|
|
location: "query",
|
|
key: "foo",
|
|
value: "bar",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app?param=hi&foo=bar'`].join(" \\\n "));
|
|
});
|
|
|
|
test("API key auth header default", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "apikey",
|
|
authentication: {
|
|
location: "header",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app'`, `--header 'X-Api-Key: '`].join(" \\\n "));
|
|
});
|
|
|
|
test("API key auth query", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
authenticationType: "apikey",
|
|
authentication: {
|
|
location: "query",
|
|
key: "foo",
|
|
value: "bar-baz",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app?foo=bar-baz'`].join(" \\\n "));
|
|
});
|
|
|
|
test("API key auth query with existing", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app?foo=bar&baz=qux",
|
|
authenticationType: "apikey",
|
|
authentication: {
|
|
location: "query",
|
|
key: "hi",
|
|
value: "there",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app?foo=bar&baz=qux&hi=there'`].join(" \\\n "));
|
|
});
|
|
|
|
test("API key auth query default", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app?foo=bar&baz=qux",
|
|
authenticationType: "apikey",
|
|
authentication: {
|
|
location: "query",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app?foo=bar&baz=qux&token='`].join(" \\\n "));
|
|
});
|
|
|
|
test("Stale body data", async () => {
|
|
expect(
|
|
await convertToCurl({
|
|
url: "https://yaak.app",
|
|
bodyType: "none",
|
|
body: {
|
|
text: "ignore me",
|
|
},
|
|
}),
|
|
).toEqual([`curl 'https://yaak.app'`].join(" \\\n "));
|
|
});
|
|
});
|