Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
# Changelog

## 0.13.7
## 0.13.8

<!-- release:start -->

### New Features

- **MCP OAuth compliance scenario knobs** — the MCP emulator gains a seedable `oauth` config for exercising RFC 7591/8414/9728 client compliance: `issuerOverride` (advertise a lying issuer), `resourceOverride` (protected-resource metadata naming a foreign resource), `tokenEndpointAuthMethods` (advertise an exact list, or `"omit"` to drop the field so RFC 8414's client_secret_basic default applies), `dcrAuthMethodOverride` (the DCR response substitutes the requested token auth method), and `rejectClientNameContaining` (registration rejects branded client names with `invalid_client_metadata`). The token endpoint now supports HTTP Basic client authentication and enforces the registered method strictly: `client_secret_basic` clients must use Basic, `client_secret_post` clients must use the form body.
- **WorkOS organization domains** — the WorkOS emulator now persists organization domains statefully: `POST /organization_domains` creates a pending domain with a DNS verification token, `GET /organization_domains/:id` returns its current state, `POST /organization_domains/:id/verify` performs the real SDK verification transition, and `DELETE /organization_domains/:id` removes it. Deleting an organization cascades to its domains, and a test-only `POST /_emulate/organization_domains/:id/verify` hook flips a pending domain to verified out of band. Domains are globally unique across organizations with WorkOS-shaped conflict errors.
- **Stripe OpenAPI discovery in YAML** — the Stripe emulator serves `GET /openapi.yaml` alongside `GET /openapi.json`, derived from the same OpenAPI document. Form-encoded deep-object metadata (`metadata[foo]=bar`) is modeled in the spec's request encodings, and the customers API projects nested metadata in responses, matching Stripe's wire behavior. The request ledger records the parsed deep-object bodies.

<!-- release:end -->

## 0.13.7

### New Features

- **MCP OAuth compliance scenario knobs** — the MCP emulator gains a seedable `oauth` config for exercising RFC 7591/8414/9728 client compliance: `issuerOverride` (advertise a lying issuer), `resourceOverride` (protected-resource metadata naming a foreign resource), `tokenEndpointAuthMethods` (advertise an exact list, or `"omit"` to drop the field so RFC 8414's client_secret_basic default applies), `dcrAuthMethodOverride` (the DCR response substitutes the requested token auth method), and `rejectClientNameContaining` (registration rejects branded client names with `invalid_client_metadata`). The token endpoint now supports HTTP Basic client authentication and enforces the registered method strictly: `client_secret_basic` clients must use Basic, `client_secret_post` clients must use the form body.


## 0.13.6

### New Features
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/adapter-next/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/adapter-next",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/apple/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/apple",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/autumn/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/autumn",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/aws/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/aws",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/clerk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/clerk",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/cloudflare/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/cloudflare",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/core",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/github/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/github",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/gitlab/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/gitlab",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/google/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/google",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
20 changes: 14 additions & 6 deletions packages/@emulators/google/src/__tests__/google.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -964,15 +964,23 @@ describe("Google plugin integration", () => {
});
const tokens = (await tokenRes.json()) as { access_token: string; refresh_token: string };

expect((await app.request(`${base}/oauth2/v2/userinfo`, {
headers: { Authorization: `Bearer ${tokens.access_token}` },
})).status).toBe(200);
expect(
(
await app.request(`${base}/oauth2/v2/userinfo`, {
headers: { Authorization: `Bearer ${tokens.access_token}` },
})
).status,
).toBe(200);
const expired = await app.request(`${base}/_emulate/oauth/access-tokens/expire`, { method: "POST" });
expect(expired.status).toBe(200);
expect(await expired.json()).toMatchObject({ expired: expect.any(Number) });
expect((await app.request(`${base}/oauth2/v2/userinfo`, {
headers: { Authorization: `Bearer ${tokens.access_token}` },
})).status).toBe(401);
expect(
(
await app.request(`${base}/oauth2/v2/userinfo`, {
headers: { Authorization: `Bearer ${tokens.access_token}` },
})
).status,
).toBe(401);

const revoked = await app.request(`${base}/_emulate/oauth/refresh-tokens/revoke`, { method: "POST" });
expect(revoked.status).toBe(200);
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/mcp/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/mcp",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/microsoft/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/microsoft",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/mongoatlas/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/mongoatlas",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/okta/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/okta",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/posthog/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/posthog",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/resend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/resend",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/slack/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/slack",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/spotify/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/spotify",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/stripe/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/stripe",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/vercel/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/vercel",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/workos/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/workos",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/@emulators/x/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@emulators/x",
"version": "0.13.7",
"version": "0.13.8",
"license": "Apache-2.0",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/emulate/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@executor-js/emulate",
"version": "0.13.7",
"version": "0.13.8",
"description": "Local drop-in replacement services for CI and no-network sandboxes",
"license": "Apache-2.0",
"type": "module",
Expand Down
Loading