feat(chat): 完善运行状态与权限交互
This commit is contained in:
@@ -51,6 +51,58 @@ describe("NextAuth access token refresh", () => {
|
||||
restoreEnv("KEYCLOAK_CLIENT_SECRET", previousEnv.clientSecret);
|
||||
}
|
||||
});
|
||||
|
||||
it.each([
|
||||
["network failure", () => Promise.reject(new Error("connection refused"))],
|
||||
[
|
||||
"non-JSON response",
|
||||
() =>
|
||||
Promise.resolve({
|
||||
ok: false,
|
||||
json: async () => {
|
||||
throw new SyntaxError("Unexpected token");
|
||||
},
|
||||
}),
|
||||
],
|
||||
[
|
||||
"invalid token payload",
|
||||
() =>
|
||||
Promise.resolve({
|
||||
ok: true,
|
||||
json: async () => ({ access_token: " ", expires_in: 0 }),
|
||||
}),
|
||||
],
|
||||
])("returns a session error for %s", async (_label, fetchResult) => {
|
||||
const previousEnv = {
|
||||
issuer: process.env.KEYCLOAK_ISSUER,
|
||||
clientId: process.env.KEYCLOAK_CLIENT_ID,
|
||||
clientSecret: process.env.KEYCLOAK_CLIENT_SECRET,
|
||||
};
|
||||
process.env.KEYCLOAK_ISSUER = "https://keycloak.example/realms/tjwater";
|
||||
process.env.KEYCLOAK_CLIENT_ID = "frontend";
|
||||
process.env.KEYCLOAK_CLIENT_SECRET = "secret";
|
||||
const originalFetch = globalThis.fetch;
|
||||
globalThis.fetch = jest.fn(fetchResult) as unknown as typeof fetch;
|
||||
|
||||
try {
|
||||
const jwt = authOptions.callbacks?.jwt as (input: unknown) => Promise<{
|
||||
error?: string;
|
||||
}>;
|
||||
await expect(
|
||||
jwt({
|
||||
token: { refreshToken: "refresh-token" },
|
||||
trigger: "update",
|
||||
session: { forceRefresh: true },
|
||||
}),
|
||||
).resolves.toMatchObject({ error: "RefreshAccessTokenError" });
|
||||
} finally {
|
||||
if (originalFetch) globalThis.fetch = originalFetch;
|
||||
else delete (globalThis as { fetch?: typeof fetch }).fetch;
|
||||
restoreEnv("KEYCLOAK_ISSUER", previousEnv.issuer);
|
||||
restoreEnv("KEYCLOAK_CLIENT_ID", previousEnv.clientId);
|
||||
restoreEnv("KEYCLOAK_CLIENT_SECRET", previousEnv.clientSecret);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const restoreEnv = (key: string, value: string | undefined) => {
|
||||
|
||||
Reference in New Issue
Block a user